Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please consider pre-approving dahdi-linux/1:2.6.1+dfsg-2
(not yet uploaded, would go via unstable)

As explained in #693666, two of the older drivers in DAHDI include
hardwired firmware. Ben Hutchings recently converted them as well
to use loadable firmwares.

The second part of the fix is (#699104) is to include those firmware
files in the existing package dahdi-firmware-nonfree.
Should I file a separate unblock request for dahdi-firmware 2.6.1-2?

As there is a new upload, I figured I'll include some of the fixes
accumulated in the recent monthes:

* Patch fix_define_dev: fix building with kernel 3.8.
  (Build: building a modules package for dahdi-linux)
* Patch fix_xpp_usermode: fixes odd xpp behaviour with later kernels.
  (not panic, but this is a low-risk fix for an odd-looking bug)
* Patch fix_xpp_post_unregister: fixes a panic with manual
  'dahdi_registration off'.

All of them are low-risk and included in the recently-tagged 2.6.2-rc1.

Packages could be found for now at:

  http://anonscm.debian.org/viewvc/pkg-voip/dahdi-linux/trunk/
  http://anonscm.debian.org/viewvc/pkg-voip/dahdi-firmware/trunk/

debdiff (for dahdi-linux)
The deleted files are noted in the debdiff as just '[deleted]'.

diff -Nru dahdi-linux-2.6.1+dfsg/debian/changelog 
dahdi-linux-2.6.1+dfsg2/debian/changelog
--- dahdi-linux-2.6.1+dfsg/debian/changelog     2012-04-23 13:26:35.000000000 
+0300
+++ dahdi-linux-2.6.1+dfsg2/debian/changelog    2013-01-29 23:39:57.000000000 
+0200
@@ -1,3 +1,14 @@
+dahdi-linux (1:2.6.1+dfsg2-1) UNRELEASED; urgency=low
+
+  * Patch fix_define_dev: fix building with kernel 3.8.
+  * Remove non-free FPGA bitfiles and patch drivers to load them
+    (Closes: #693666) (Ben Hutchings).
+  * Patch fix_xpp_usermode: fixes odd xpp behaviour with later kernels.
+  * Patch fix_xpp_post_unregister: fixes a crash with manual
+    'dahdi_registration off'
+
+ -- Tzafrir Cohen <tzaf...@debian.org>  Mon, 28 Jan 2013 14:23:01 +0200
+
 dahdi-linux (1:2.6.1+dfsg-1) unstable; urgency=low
 
   * New upstream release candidate:
diff -Nru dahdi-linux-2.6.1+dfsg/debian/patches/fix_define_dev 
dahdi-linux-2.6.1+dfsg2/debian/patches/fix_define_dev
--- dahdi-linux-2.6.1+dfsg/debian/patches/fix_define_dev        1970-01-01 
02:00:00.000000000 +0200
+++ dahdi-linux-2.6.1+dfsg2/debian/patches/fix_define_dev       2013-01-28 
16:08:17.000000000 +0200
@@ -0,0 +1,35 @@
+From: Tzafrir Cohen <tzafrir.co...@xorcom.com>
+Date: Mon, 28 Jan 2013 15:22:13 +0200
+Subject: [PATCH] Redefine the removed __dev* for now
+
+The __dev* directives and functions were removed in 3.8, as they
+are no-ops. We still have use of them for older versions, thus
+we should define them (as noops) if they don't exist.
+
+Signed-off-by: Tzafrir Cohen <tzafrir.co...@xorcom.com>
+---
+ include/dahdi/kernel.h |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h
+index 13bbb20..4a98af5 100644
+--- a/include/dahdi/kernel.h
++++ b/include/dahdi/kernel.h
+@@ -120,6 +120,14 @@
+ #  endif
+ #endif
+ 
++/* __dev* were removed in 3.8. They still have effect in 2.6.18. */
++#ifndef __devinit
++#  define __devinit
++#  define __devinitdata
++#  define __devexit
++#  define __devexit_p(x) x
++#endif
++
+ /*! Default chunk size for conferences and such -- static right now, might 
make
+    variable sometime.  8 samples = 1 ms = most frequent service interval 
possible
+    for a USB device */
+-- 
+1.7.10.4
+
diff -Nru dahdi-linux-2.6.1+dfsg/debian/patches/fix_xpp_post_unregister 
dahdi-linux-2.6.1+dfsg2/debian/patches/fix_xpp_post_unregister
--- dahdi-linux-2.6.1+dfsg/debian/patches/fix_xpp_post_unregister       
1970-01-01 02:00:00.000000000 +0200
+++ dahdi-linux-2.6.1+dfsg2/debian/patches/fix_xpp_post_unregister      
2013-01-29 23:38:53.000000000 +0200
@@ -0,0 +1,41 @@
+From: Tzafrir Cohen <tzafrir.co...@xorcom.com>
+Date: Thu, 15 Nov 2012 15:15:48 +0000
+Subject: xpp: pre/post_unregister: not for the EC
+Origin: 
http://git.asterisk.org/gitweb/?p=dahdi/linux.git;a=commit;h=c0eebd73bb29f1187b38cc3a41f1a86579e481ac
+
+Don't run the pre- and post-unregister hooks on a non-phone XPD
+(practically: the echo canceller). This fixes a panic with manual
+'dahdi_registertion off' as it is now called for the whole device
+(regression of 2.6.x).
+
+Signed-off-by: Tzafrir Cohen <tzafrir.co...@xorcom.com>
+
+---
+ drivers/dahdi/xpp/xpp_dahdi.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/dahdi/xpp/xpp_dahdi.c b/drivers/dahdi/xpp/xpp_dahdi.c
+index b9fa49a..b2f7008 100644
+--- a/drivers/dahdi/xpp/xpp_dahdi.c
++++ b/drivers/dahdi/xpp/xpp_dahdi.c
+@@ -1083,7 +1083,7 @@ int xpd_dahdi_postregister(xpd_t *xpd)
+  */
+ void xpd_dahdi_preunregister(xpd_t *xpd)
+ {
+-      if (!xpd)
++      if (!xpd || !IS_PHONEDEV(xpd))
+               return;
+       XPD_DBG(DEVICES, xpd, "\n");
+       update_xpd_status(xpd, DAHDI_ALARM_NOTOPEN);
+@@ -1103,7 +1103,7 @@ void xpd_dahdi_preunregister(xpd_t *xpd)
+ 
+ void xpd_dahdi_postunregister(xpd_t *xpd)
+ {
+-      if (!xpd)
++      if (!xpd || !IS_PHONEDEV(xpd))
+               return;
+       atomic_dec(&PHONEDEV(xpd).dahdi_registered);
+       atomic_dec(&num_registered_spans);
+-- 
+1.7.10.4
+
diff -Nru dahdi-linux-2.6.1+dfsg/debian/patches/fix_xpp_usermode 
dahdi-linux-2.6.1+dfsg2/debian/patches/fix_xpp_usermode
--- dahdi-linux-2.6.1+dfsg/debian/patches/fix_xpp_usermode      1970-01-01 
02:00:00.000000000 +0200
+++ dahdi-linux-2.6.1+dfsg2/debian/patches/fix_xpp_usermode     2013-01-29 
23:31:13.000000000 +0200
@@ -0,0 +1,60 @@
+From c0eebd73bb29f1187b38cc3a41f1a86579e481ac Mon Sep 17 00:00:00 2001
+From: Oron Peled <oron.pe...@xorcom.com>
+Date: Thu, 21 Jun 2012 17:53:33 +0000
+Subject: xpp: usermode_helper() bugfix for kernels >= 3.3.0
+Origin: 
http://git.asterisk.org/gitweb/?p=dahdi/linux.git;a=commit;h=c0eebd73bb29f1187b38cc3a41f1a86579e481ac
+
+Respective kernels fail to run the initialization script but report it
+was run, and thus the device behaves in an odd way.
+
+* UMH_WAIT_PROC semantics (and value) was changed from enum to
+  a bitmask (via #define)
+* This constant was missing from kernels older than 2.6.23
+
+Signed-off-by: Oron Peled <oron.pe...@xorcom.com>
+Acked-by: Tzafrir Cohen <tzafrir.co...@xorcom.com>
+
+---
+ drivers/dahdi/xpp/card_global.c |   12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/dahdi/xpp/card_global.c b/drivers/dahdi/xpp/card_global.c
+index 29c43f0..dca5aee 100644
+--- a/drivers/dahdi/xpp/card_global.c
++++ b/drivers/dahdi/xpp/card_global.c
+@@ -22,6 +22,7 @@
+ 
+ #include <linux/module.h>
+ #include <linux/delay.h>
++#include <linux/kmod.h>
+ #include "xdefs.h"
+ #include "xpd.h"
+ #include "xpp_dahdi.h"
+@@ -655,6 +656,15 @@ static void global_packet_dump(const char *msg, xpacket_t 
*pack)
+ 
+ #define       MAX_PATH_STR    128
+ 
++#ifndef       UMH_WAIT_PROC
++/*
++ * - UMH_WAIT_PROC was introduced as enum in 2.6.23
++ *   with a value of 1
++ * - It was changed to a macro (and it's value was modified) in 3.3.0
++ */
++#define       UMH_WAIT_PROC   1
++#endif
++
+ int run_initialize_registers(xpd_t *xpd)
+ {
+       int     ret;
+@@ -737,7 +747,7 @@ int run_initialize_registers(xpd_t *xpd)
+       }
+       XPD_DBG(DEVICES, xpd, "running '%s' for type=%d revision=%d\n",
+                       init_card, xpd->type, xbus->revision);
+-      ret = call_usermodehelper(init_card, argv, envp, 1);
++      ret = call_usermodehelper(init_card, argv, envp, UMH_WAIT_PROC);
+       /*
+        * Carefully report results
+        */
+-- 
+1.7.10.4
+
diff -Nru dahdi-linux-2.6.1+dfsg/debian/patches/pciradio-request_firmware 
dahdi-linux-2.6.1+dfsg2/debian/patches/pciradio-request_firmware
--- dahdi-linux-2.6.1+dfsg/debian/patches/pciradio-request_firmware     
1970-01-01 02:00:00.000000000 +0200
+++ dahdi-linux-2.6.1+dfsg2/debian/patches/pciradio-request_firmware    
2013-01-28 16:40:40.000000000 +0200
@@ -0,0 +1,135 @@
+Author: Ben Hutchings <b...@decadent.org.uk>
+Description: pciradio: Use request_firmware() to load bitfile
+Bug-Debian: http://bugs.debian.org/693666
+
+Non-free bits belong in separate (source & binary) packages.
+This driver must use request_firmware() to load the FPGA bitfile.
+
+---
+--- a/drivers/dahdi/pciradio.c
++++ b/drivers/dahdi/pciradio.c
+@@ -51,6 +51,7 @@ With driver: 303826  (1.5 %)
+ #include <linux/interrupt.h>
+ #include <linux/moduleparam.h>
+ #include <linux/sched.h>
++#include <linux/firmware.h>
+ #include <asm/io.h>
+ #include <asm/delay.h> 
+ 
+@@ -220,8 +221,6 @@ struct tonedef {
+       unsigned char b2;
+ } ;
+ 
+-#include "radfw.h"
+-
+ static struct tonedef cttable_tx [] = {
+ {0,0,0},
+ {670,0xE,0xB1},
+@@ -1505,9 +1504,18 @@ static void wait_just_a_bit(int foo)
+ 
+ static int pciradio_hardware_init(struct pciradio *rad)
+ {
++const struct firmware *bitfile;
+ unsigned char byte1,byte2;
+ int   x;
+ unsigned long endjif;
++int res;
++
++      res = request_firmware(&bitfile, "dahdi-fw-pciradio.bin",
++                             &rad->dev->dev);
++      if (res)
++              return res;
++
++      res = -EIO;
+ 
+       /* Signal Reset */
+       outb(0x01, rad->ioaddr + RAD_CNTL);
+@@ -1539,7 +1547,7 @@ unsigned long endjif;
+       while (inb(rad->ioaddr + RAD_AUXR) & (XINIT | XDONE) && (jiffies <= 
endjif));
+       if (endjif < jiffies) {
+               printk(KERN_DEBUG "Timeout waiting for INIT and DONE to go 
low\n");
+-              return -1;
++              goto out;
+       }
+       if (debug) printk(KERN_DEBUG "fwload: Init and done gone to low\n");
+       /* De-assert PGM */
+@@ -1550,16 +1558,16 @@ unsigned long endjif;
+       while (!(inb(rad->ioaddr + RAD_AUXR) & XINIT) && (jiffies <= endjif));
+       if (endjif < jiffies) {
+               printk(KERN_DEBUG "Timeout waiting for INIT to go high\n");
+-              return -1;
++              goto out;
+       }
+       if (debug) printk(KERN_DEBUG "fwload: Init went high (clearing 
done)\nNow loading...\n");
+       /* Assert CS+Write */
+       rad->ios &= ~XCS;
+       outb(rad->ios, rad->ioaddr + RAD_AUXD);
+-      for (x = 0; x < sizeof(radfw); x++)
++      for (x = 0; x < bitfile->size; x++)
+          {
+                 /* write the byte */
+-              outb(radfw[x],rad->ioaddr + RAD_REGBASE);
++              outb(bitfile->data[x], rad->ioaddr + RAD_REGBASE);
+                 /* if DONE signal, we're done, exit */
+               if (inb(rad->ioaddr + RAD_AUXR) & XDONE) break;
+                 /* if INIT drops, we're screwed, exit */
+@@ -1580,12 +1588,12 @@ unsigned long endjif;
+       if (!(inb(rad->ioaddr + RAD_AUXR) & XINIT))
+          {
+               printk(KERN_NOTICE "Drove Init low!! CRC Error!!!\n");
+-              return -1;
++              goto out;
+          }
+       if (!(inb(rad->ioaddr + RAD_AUXR) & XDONE))
+          {
+               printk(KERN_INFO "Did not get DONE signal. Short file 
maybe??\n");
+-              return -1;
++              goto out;
+          }
+       wait_just_a_bit(2);
+       /* get the thingy started */
+@@ -1646,7 +1654,10 @@ unsigned long endjif;
+       /* Wait 1/4 of a sec */
+       wait_just_a_bit(HZ/4);
+ 
+-      return 0;
++      res = 0;
++out:
++      release_firmware(bitfile);
++      return res;
+ }
+ 
+ static void pciradio_enable_interrupts(struct pciradio *rad)
+@@ -1765,7 +1776,8 @@ static int __devinit pciradio_init_one(s
+                       /* Keep track of which device we are */
+                       pci_set_drvdata(pdev, rad);
+ 
+-                      if (pciradio_hardware_init(rad)) {
++                      res = pciradio_hardware_init(rad);
++                      if (res) {
+                               /* Set Reset Low */
+                               x=inb(rad->ioaddr + RAD_CNTL);
+                               outb((~0x1)&x, rad->ioaddr + RAD_CNTL);
+@@ -1780,7 +1792,7 @@ static int __devinit pciradio_init_one(s
+                               pci_set_drvdata(pdev, NULL);
+                               dahdi_free_device(rad->ddev);
+                               kfree(rad);
+-                              return -EIO;
++                              return res;
+ 
+                       }
+ 
+--- a/drivers/dahdi/Kbuild
++++ b/drivers/dahdi/Kbuild
+@@ -141,11 +141,4 @@ ifeq ($(HPEC_PRESENT),yes)
+ obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_HPEC)    += dahdi_echocan_hpec.o
+ endif
+ 
+-$(obj)/pciradio.o: $(obj)/radfw.h
+-
+ hostprogs-y := makefw
+-
+-$(obj)/radfw.h: $(src)/pciradio.rbt $(obj)/makefw
+-      $(obj)/makefw $< radfw > $@
+-
+-clean-files   := radfw.h
diff -Nru dahdi-linux-2.6.1+dfsg/debian/patches/series 
dahdi-linux-2.6.1+dfsg2/debian/patches/series
--- dahdi-linux-2.6.1+dfsg/debian/patches/series        2012-04-23 
12:32:49.000000000 +0300
+++ dahdi-linux-2.6.1+dfsg2/debian/patches/series       2013-01-29 
23:40:15.000000000 +0200
@@ -3,3 +3,8 @@
 no_firmware_download
 chanmute
 notest
+fix_define_dev
+tor2-request_firmware
+pciradio-request_firmware
+fix_xpp_usermode
+fix_xpp_post_unregister
diff -Nru dahdi-linux-2.6.1+dfsg/debian/patches/tor2-request_firmware 
dahdi-linux-2.6.1+dfsg2/debian/patches/tor2-request_firmware
--- dahdi-linux-2.6.1+dfsg/debian/patches/tor2-request_firmware 1970-01-01 
02:00:00.000000000 +0200
+++ dahdi-linux-2.6.1+dfsg2/debian/patches/tor2-request_firmware        
2013-01-28 16:40:40.000000000 +0200
@@ -0,0 +1,87 @@
+Author: Ben Hutchings <b...@decadent.org.uk>
+Description: tor2: Use request_firmware() to load bitfile
+Bug-Debian: http://bugs.debian.org/693666
+
+Non-free bits belong in separate (source & binary) packages.
+This driver must use request_firmware() to load the FPGA bitfile.
+
+---
+--- a/drivers/dahdi/tor2.c
++++ b/drivers/dahdi/tor2.c
+@@ -31,11 +31,11 @@
+ #include <linux/sched.h>
+ #include <linux/interrupt.h>
+ #include <linux/moduleparam.h>
++#include <linux/firmware.h>
+ 
+ #include <dahdi/kernel.h>
+ #define NEED_PCI_IDS
+ #include "tor2-hw.h"
+-#include "tor2fw.h"
+ 
+ /*
+  * Tasklets provide better system interactive response at the cost of the
+@@ -379,6 +379,7 @@ static int __devinit tor2_probe(struct p
+       unsigned long endjif;
+       __iomem volatile unsigned long *gpdata_io, *lasdata_io;
+       unsigned long gpdata,lasdata;
++      const struct firmware *bitfile;
+ 
+       res = pci_enable_device(pdev);
+       if (res)
+@@ -439,6 +440,11 @@ static int __devinit tor2_probe(struct p
+                      tor->xilinx8_len, tor->xilinx8_region);
+               goto err_out_release_plx_region;
+       }
++      res = request_firmware(&bitfile, "dahdi-fw-tor2.bin", &pdev->dev);
++      if (res) {
++              ret = res;
++              goto err_out_release_all_regions;
++      }
+       pci_set_drvdata(pdev, tor);
+       printk(KERN_INFO "Detected %s at 0x%lx/0x%lx irq %d\n", tor->type, 
+               tor->xilinx32_region, tor->xilinx8_region,tor->irq);
+@@ -490,10 +496,10 @@ static int __devinit tor2_probe(struct p
+       /* assert WRITE signal */
+       gpdata &= ~GPIO_WRITE;
+       writel(gpdata, gpdata_io);
+-      for (x = 0; x < sizeof(tor2fw); x++)
++      for (x = 0; x < bitfile->size; x++)
+          {
+                 /* write the byte */
+-              writeb(tor2fw[x], tor->mem8);
++              writeb(bitfile->data[x], tor->mem8);
+                 /* if DONE signal, we're done, exit */
+               if (readl(gpdata_io) & GPIO_DONE)
+                       break;
+@@ -612,9 +618,12 @@ static int __devinit tor2_probe(struct p
+                       break;
+       }
+ 
++      release_firmware(bitfile);
+       return 0;
+ 
+ err_out_release_all:
++      release_firmware(bitfile);
++err_out_release_all_regions:
+       release_mem_region(tor->xilinx32_region, tor->xilinx32_len);
+       release_mem_region(tor->xilinx8_region, tor->xilinx8_len);
+ err_out_release_plx_region:
+--- a/drivers/dahdi/Kbuild
++++ b/drivers/dahdi/Kbuild
+@@ -142,14 +142,10 @@ obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECH
+ endif
+ 
+ $(obj)/pciradio.o: $(obj)/radfw.h
+-$(obj)/tor2.o: $(obj)/tor2fw.h
+ 
+ hostprogs-y := makefw
+ 
+-$(obj)/tor2fw.h: $(src)/tormenta2.rbt $(obj)/makefw 
+-      $(obj)/makefw $< tor2fw > $@
+-
+ $(obj)/radfw.h: $(src)/pciradio.rbt $(obj)/makefw
+       $(obj)/makefw $< radfw > $@
+ 
+-clean-files   := radfw.h tor2fw.h
++clean-files   := radfw.h
diff -Nru dahdi-linux-2.6.1+dfsg/debian/rules 
dahdi-linux-2.6.1+dfsg2/debian/rules
--- dahdi-linux-2.6.1+dfsg/debian/rules 2012-04-23 12:32:49.000000000 +0300
+++ dahdi-linux-2.6.1+dfsg2/debian/rules        2013-01-28 16:40:40.000000000 
+0200
@@ -25,7 +25,7 @@
 DEBVERSION:=$(shell head -n 1 debian/changelog \
                    | sed -e 's/^[^(]*(\([^)]*\)).*/\1/')
 DEB_BASE_VERSION:=$(shell echo $(DEBVERSION) | sed -e 's/^.*://' -e 
's/-[0-9~.a-z]*$$//')
-UPVERSION:=$(shell echo $(DEB_BASE_VERSION) | sed -e 's/[~+]dfsg\(~\|$$\)/\1/' 
-e 's/~\(rc\|beta\)/-\1/')
+UPVERSION:=$(shell echo $(DEB_BASE_VERSION) | sed -e 
's/[~+]dfsg[0-9]*\(~\|$$\)/\1/' -e 's/~\(rc\|beta\)/-\1/')
 
 UPFILENAME := $(PACKAGE_SRC)_$(UPVERSION).orig.tar.gz
 FILENAME := $(PACKAGE_SRC)_$(DEB_BASE_VERSION).orig.tar.gz
@@ -117,6 +117,7 @@
        @@cd $(TARBALL_DIR) ; \
        tar xfz ../$(UPFILENAME)
        @@rm -rf 
$(TARBALL_DIR)/$(PACKAGE_SRC)-$(UPVERSION)/drivers/dahdi/xpp/firmwares/*.hex
+       @@rm -f $(TARBALL_DIR)/$(PACKAGE_SRC)-$(UPVERSION)/drivers/dahdi/*.rbt
        @@cd $(TARBALL_DIR) ; \
        tar cfz ../$(FILENAME) *
        @@echo Cleaning up...
diff -Nru dahdi-linux-2.6.1+dfsg/drivers/dahdi/pciradio.rbt 
dahdi-linux-2.6.1+dfsg2/drivers/dahdi/pciradio.rbt
--- dahdi-linux-2.6.1+dfsg/drivers/dahdi/pciradio.rbt   2008-05-21 
18:11:48.000000000 +0300
+++ dahdi-linux-2.6.1+dfsg2/drivers/dahdi/pciradio.rbt  1970-01-01 
02:00:00.000000000 +0200
[deleted]
diff -Nru dahdi-linux-2.6.1+dfsg/drivers/dahdi/tormenta2.rbt 
dahdi-linux-2.6.1+dfsg2/drivers/dahdi/tormenta2.rbt
--- dahdi-linux-2.6.1+dfsg/drivers/dahdi/tormenta2.rbt  2008-05-21 
18:11:48.000000000 +0300
+++ dahdi-linux-2.6.1+dfsg2/drivers/dahdi/tormenta2.rbt 1970-01-01 
02:00:00.000000000 +0200
[deleted]





debdiff for dahdi-firmware:

diff -Nru dahdi-firmware-2.6.1/debian/changelog 
dahdi-firmware-2.6.1/debian/changelog
--- dahdi-firmware-2.6.1/debian/changelog       2012-06-10 12:52:32.000000000 
+0300
+++ dahdi-firmware-2.6.1/debian/changelog       2013-01-28 17:42:48.000000000 
+0200
@@ -1,6 +1,12 @@
-dahdi-firmware (2.6.1-1) UNRELEASED; urgency=low
+dahdi-firmware (2.6.1-2) UNRELEASED; urgency=low
 
   * NOT RELEASED YET
+  * Move old Zapata bitfiles (*.rbt) to this package (Closes: #699104).
+
+ -- Tzafrir Cohen <tzaf...@debian.org>  Sun, 10 Jun 2012 13:38:32 +0300
+
+dahdi-firmware (2.6.1-1) unstable; urgency=low
+
   * New upstream release.
   * Standards version 3.9.3 (no change needed).
   * Include the Octasic firmware for the Xorcom Astribank.
diff -Nru dahdi-firmware-2.6.1/debian/install 
dahdi-firmware-2.6.1/debian/install
--- dahdi-firmware-2.6.1/debian/install 2012-05-01 20:06:59.000000000 +0300
+++ dahdi-firmware-2.6.1/debian/install 2013-01-28 17:42:48.000000000 +0200
@@ -2,3 +2,4 @@
 drivers/dahdi/firmware/Makefile                var/lib/dahdi/digium-firm
 debian/get-digium-firmware             usr/share/dahdi
 debian/OCT6104E-256D.ima               usr/share/dahdi
+drivers/dahdi/dahdi-fw-*.bin           lib/firmware/ 
diff -Nru dahdi-firmware-2.6.1/debian/patches/make-binary-bitfiles 
dahdi-firmware-2.6.1/debian/patches/make-binary-bitfiles
--- dahdi-firmware-2.6.1/debian/patches/make-binary-bitfiles    1970-01-01 
02:00:00.000000000 +0200
+++ dahdi-firmware-2.6.1/debian/patches/make-binary-bitfiles    2013-01-28 
17:30:32.000000000 +0200
@@ -0,0 +1,73 @@
+Author: Ben Hutchings <b...@decadent.org.uk>
+Description: Add makefw -b option to enable binary output
+Bug-Debian: http://bugs.debian.org/699104
+
+We can't compile these bitfiles into the drivers in the free
+dahdi-source package.  Add the -b option to write a binary
+instead of a C array.
+
+---
+--- a/drivers/dahdi/makefw.c
++++ b/drivers/dahdi/makefw.c
+@@ -1,6 +1,7 @@
+ /* Xilinx firmware convertor program.
+  *
+  * Written by Jim Dixon <j...@lambdatel.com>.
++ * Binary output adde by Ben Hutchings <b...@decadent.org.uk>.
+  *
+  * Copyright (C) 2001 Jim Dixon / Zapata Telephony.
+  * Copyright (C) 2001-2008 Digium, Inc.
+@@ -34,10 +35,12 @@ FILE *fp;
+ int i,j,nbytes;
+ unsigned char c;
+ char  buf[300];
++int bin;
+ 
+       if (argc < 3)
+          {
+               puts("Usage... makefw  filename.rbt  array_name");
++              puts("         makefw  filename.rbt  -b");
+               exit(1);
+          }    
+ 
+@@ -47,8 +50,10 @@ char        buf[300];
+               perror("bit file open");
+               exit(1);
+          }
++      bin = !strcmp(argv[2], "-b");
+       nbytes = 0;
+-      printf("static unsigned char %s[] = {\n",argv[2]);
++      if (!bin)
++              printf("static unsigned char %s[] = {\n",argv[2]);
+       i = 0;
+       while(fgets(buf,sizeof(buf) - 1,fp))
+          {
+@@ -66,17 +71,22 @@ char       buf[300];
+                       if ((j & 7) == 7)
+                          {
+                               nbytes++;
+-                              if (i) printf(",");                             
+-                              printf("0x%02x",c);
+-                              if (i++ == SWATH) {
+-                                      printf(",\n");
+-                                      i = 0;
++                              if (bin) {
++                                      putchar(c);
++                              } else {
++                                      if (i) printf(",");
++                                      printf("0x%02x",c);
++                                      if (i++ == SWATH) {
++                                              printf(",\n");
++                                              i = 0;
++                                      }
+                               }
+                               c = 0;
+                          }
+                  }
+          }
+-      printf("\n};\n\n");
++      if (!bin)
++              printf("\n};\n\n");
+       fprintf(stderr,"Loaded %d bytes from file\n",nbytes);
+       fclose(fp);
+       exit(0);
diff -Nru dahdi-firmware-2.6.1/debian/patches/series 
dahdi-firmware-2.6.1/debian/patches/series
--- dahdi-firmware-2.6.1/debian/patches/series  1970-01-01 02:00:00.000000000 
+0200
+++ dahdi-firmware-2.6.1/debian/patches/series  2013-01-30 00:02:39.000000000 
+0200
@@ -0,0 +1 @@
+make-binary-bitfiles
diff -Nru dahdi-firmware-2.6.1/debian/rules dahdi-firmware-2.6.1/debian/rules
--- dahdi-firmware-2.6.1/debian/rules   2010-04-15 13:02:53.000000000 +0300
+++ dahdi-firmware-2.6.1/debian/rules   2013-01-28 17:53:59.000000000 +0200
@@ -12,8 +12,19 @@
 # included in the tarball. The same tarball is properly built in
 # dahdi-linux
 
-install/dahdi-firmware::
-       chmod +x 
$(CURDIR)/debian/dahdi-firmware/usr/share/dahdi/get-digium-firmware
+drivers/dahdi/makefw: drivers/dahdi/makefw.c
+       $(CC) $(CFLAGS) -Wall -Wextra -o $@ $<
+
+drivers/dahdi/dahdi-fw-tor2.bin: drivers/dahdi/tormenta2.rbt 
drivers/dahdi/makefw
+       drivers/dahdi/makefw $< -b > $@
+
+drivers/dahdi/dahdi-fw-pciradio.bin: drivers/dahdi/pciradio.rbt 
drivers/dahdi/makefw
+       drivers/dahdi/makefw $< -b > $@
+
+build/dahdi-firmware-nonfree:: drivers/dahdi/dahdi-fw-tor2.bin 
drivers/dahdi/dahdi-fw-pciradio.bin
+
+clean::
+       rm -f drivers/dahdi/makefw drivers/dahdi/dahdi-fw-*.bin
 
 get-orig-source:
        @@dh_testdir



unblock dahdi-linux/1:2.6.1+dfsg-2

-- System Information:
Debian Release: 7.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=he_IL.UTF-8, LC_CTYPE=he_IL.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

-- 
Tzafrir Cohen         | tzaf...@jabber.org | VIM is
http://tzafrir.org.il |                    | a Mutt's
tzaf...@cohens.org.il |                    |  best
tzaf...@debian.org    |                    | friend

-- 
Tzafrir Cohen         | tzaf...@jabber.org | VIM is
http://tzafrir.org.il |                    | a Mutt's
tzaf...@cohens.org.il |                    |  best
tzaf...@debian.org    |                    | friend


-- 
To UNSUBSCRIBE, email to debian-release-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130129230729.ga15...@lemon.cohens.org.il

Reply via email to