Breaking all the rules by copying 2.6.25 updates from other drivers on a
"monkey see, monkey do" basis, I came up with three patches which let
unicorn-0.9.3 build on 2.6.24.  The modules even insert OK but I haven't
tested more with them because 2.6.24-etchnhalf seems buggy on my network card.

The patches are attached, probably a hopelessly naive attempt to update
the driver anyway :)  As I say not tested in live running since I've
not yet connected my Unicorn to a phone line !

The same three patches also let 0.9.3 compile OK on 2.6.25, however the
link stage then fails with GPL violations (?!).  Building in a patched
/usr/src/modules with "m-a -t -o build unicorn" I get the following.
Doubly annoying since I want the PCI driver and don't care about USB !

 dh_clean -k
 # Build and install the module
 if [ 6 = 4 ]; then                          \
                 /usr/bin/make modules M=/usr/src/modules/unicorn 
HPATH=/lib/modules/2.6.25-2-686/build/include 
KERNEL_SOURCES=/lib/modules/2.6.25-2-686/build; \
                 /usr/bin/make only_modules_install 
KERNEL_SOURCES=/lib/modules/2.6.25-2-686/build      \
                         
DESTDIR=/usr/src/modules/unicorn/debian/unicorn-modules-2.6.25-2-686 
KVERS=2.6.25-2-686;    \
         elif [ 6 = 6 ]; then                        \
                 /usr/bin/make -C libm modules;                                \
                 /usr/bin/make -C /lib/modules/2.6.25-2-686/build 
SUBDIRS=/usr/src/modules/unicorn/unicorn_pci  \
                         
INSTALL_MOD_PATH=/usr/src/modules/unicorn/debian/unicorn-modules-2.6.25-2-686 
modules modules_install; \
                 /usr/bin/make -C /lib/modules/2.6.25-2-686/build 
SUBDIRS=/usr/src/modules/unicorn/unicorn_usb  \
                         
INSTALL_MOD_PATH=/usr/src/modules/unicorn/debian/unicorn-modules-2.6.25-2-686 
modules modules_install; \
         fi
 make[2]: Entering directory `/usr/src/modules/unicorn/libm'
 make[2]: Nothing to be done for `modules'.
 make[2]: Leaving directory `/usr/src/modules/unicorn/libm'
 make[2]: Entering directory `/usr/src/linux-headers-2.6.25-2-686'
   CC [M]  /usr/src/modules/unicorn/unicorn_pci/../msw/linrapi.o
   CC [M]  /usr/src/modules/unicorn/unicorn_pci/../msw/msw.o
   CC [M]  /usr/src/modules/unicorn/unicorn_pci/../msw/crc.o
   CC [M]  /usr/src/modules/unicorn/unicorn_pci/../amu/amas.o
   CC [M]  /usr/src/modules/unicorn/unicorn_pci/../amu/amu.o
   CC [M]  /usr/src/modules/unicorn/unicorn_pci/../unicorn_atm/unicorn_atmdrv.o
   CC [M]  /usr/src/modules/unicorn/unicorn_pci/../unicorn_eth/unicorn_ethdrv.o
   LD [M]  /usr/src/modules/unicorn/unicorn_pci/unicorn_pci_atm.o
   LD [M]  /usr/src/modules/unicorn/unicorn_pci/unicorn_pci_eth.o
   Building modules, stage 2.
   MODPOST 2 modules
   LD [M]  /usr/src/modules/unicorn/unicorn_pci/unicorn_pci_atm.ko
   LD [M]  /usr/src/modules/unicorn/unicorn_pci/unicorn_pci_eth.ko
   INSTALL /usr/src/modules/unicorn/unicorn_pci/unicorn_pci_atm.ko
   INSTALL /usr/src/modules/unicorn/unicorn_pci/unicorn_pci_eth.ko
   DEPMOD  2.6.25-2-686
 make[2]: Leaving directory `/usr/src/linux-headers-2.6.25-2-686'
 make[2]: Entering directory `/usr/src/linux-headers-2.6.25-2-686'
   CC [M]  /usr/src/modules/unicorn/unicorn_usb/../msw/linrapi.o
   CC [M]  /usr/src/modules/unicorn/unicorn_usb/../msw/msw.o
   CC [M]  /usr/src/modules/unicorn/unicorn_usb/../msw/crc.o
   CC [M]  /usr/src/modules/unicorn/unicorn_usb/../amu/amas.o
   CC [M]  /usr/src/modules/unicorn/unicorn_usb/../amu/amu.o
   CC [M]  /usr/src/modules/unicorn/unicorn_usb/../unicorn_atm/unicorn_atmdrv.o
   CC [M]  /usr/src/modules/unicorn/unicorn_usb/../unicorn_eth/unicorn_ethdrv.o
   LD [M]  /usr/src/modules/unicorn/unicorn_usb/unicorn_usb_atm.o
   LD [M]  /usr/src/modules/unicorn/unicorn_usb/unicorn_usb_eth.o
   Building modules, stage 2.
   MODPOST 2 modules
 FATAL: modpost: GPL-incompatible module unicorn_usb_eth.ko uses GPL-only 
symbol 'usb_unlink_urb'
 make[3]: *** [__modpost] Error 1
 make[2]: *** [modules] Error 2
 make[2]: Leaving directory `/usr/src/linux-headers-2.6.25-2-686'

Index: unicorn/unicorn_pci/unicorn_pcidrv.c
===================================================================
--- unicorn.orig/unicorn_pci/unicorn_pcidrv.c	2008-08-07 12:39:04.000000000 +0100
+++ unicorn/unicorn_pci/unicorn_pcidrv.c	2008-08-07 12:39:42.000000000 +0100
@@ -992,7 +992,11 @@
 	    phys_base,dev->mem,dev->mem_size);
 	
 	// Initialize and connect the interrupt
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
 	status = request_irq(pci_dev->irq, unicorn_isr, SA_SHIRQ, "unicorn_pci", dev);
+#else
+	status = request_irq(pci_dev->irq, unicorn_isr, IRQF_SHARED, "unicorn_pci", dev);
+#endif
 	if (status) {
 		WARN("Failed to connect Interrupt,status=%d\n",status);
 		return status;
Index: unicorn/unicorn_usb/unicorn_usbdrv.c
===================================================================
--- unicorn.orig/unicorn_usb/unicorn_usbdrv.c	2008-08-07 12:36:13.000000000 +0100
+++ unicorn/unicorn_usb/unicorn_usbdrv.c	2008-08-07 12:36:16.000000000 +0100
@@ -148,7 +148,9 @@
 	      unsigned int pipe, void *buf, int length, int packet_size, usb_complete_t complete,
 	      void *context)
 {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
 	spin_lock_init(&urb->lock);
+#endif
 	urb->dev=dev;
 	urb->pipe=pipe;
 	urb->transfer_buffer=buf;
Index: unicorn/unicorn_eth/unicorn_ethdrv.c
===================================================================
--- unicorn.orig/unicorn_eth/unicorn_ethdrv.c	2008-08-07 12:47:19.000000000 +0100
+++ unicorn/unicorn_eth/unicorn_ethdrv.c	2008-08-07 12:47:22.000000000 +0100
@@ -1391,7 +1391,9 @@
 	}
 	unicorn_ethdrv = drv = eth_dev->priv;
 	memset(drv, 0, sizeof(struct unicorn_ethdrv));  
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
 	SET_MODULE_OWNER(eth_dev);
+#endif
 	drv->dev = eth_dev;
 	drv->adsl_status = ADSL_STATUS_NOHARDWARE;
 	drv->vpi = VPI;

Reply via email to