Search Linux Wireless

[PATCH 2/5] compat-wireless: backport threaded irq for wl12xx_spi

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This backports threaded irq support for kernel < 2.6.31 for wl12xx_spi.
This is only compile tested as I do not have such a device.

Luis please add this into the linux-2.6.39.y branch.

CC: Ido Yariv <ido@xxxxxxxxxx>
Signed-off-by: Hauke Mehrtens <hauke@xxxxxxxxxx>
---
 patches/09-threaded-irq.patch |   61 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/patches/09-threaded-irq.patch b/patches/09-threaded-irq.patch
index f62933e..9822acb 100644
--- a/patches/09-threaded-irq.patch
+++ b/patches/09-threaded-irq.patch
@@ -61,3 +61,64 @@ thread in process context as well.
  };
  
  /* Data structure for the WLAN parts (802.11 cores) of the b43 chip. */
+--- a/drivers/net/wireless/wl12xx/spi.c
++++ b/drivers/net/wireless/wl12xx/spi.c
+@@ -408,9 +408,20 @@ static int __devinit wl1271_probe(struct
+ 		goto out_free;
+ 	}
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++	ret = compat_request_threaded_irq(&wl->irq_compat, wl->irq,
++					  wl1271_hardirq, wl1271_irq,
++					  IRQF_TRIGGER_RISING,
++					  DRIVER_NAME, wl);
++#else
+ 	ret = request_threaded_irq(wl->irq, wl1271_hardirq, wl1271_irq,
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
++				   IRQF_TRIGGER_RISING,
++#else
+ 				   IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
++#endif
+ 				   DRIVER_NAME, wl);
++#endif
+ 	if (ret < 0) {
+ 		wl1271_error("request_irq() failed: %d", ret);
+ 		goto out_free;
+@@ -431,7 +442,11 @@ static int __devinit wl1271_probe(struct
+ 	return 0;
+ 
+  out_irq:
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++	compat_free_threaded_irq(&wl->irq_compat);
++#else
+ 	free_irq(wl->irq, wl);
++#endif
+ 
+  out_free:
+ 	wl1271_free_hw(wl);
+@@ -444,7 +459,12 @@ static int __devexit wl1271_remove(struc
+ 	struct wl1271 *wl = dev_get_drvdata(&spi->dev);
+ 
+ 	wl1271_unregister_hw(wl);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++	compat_free_threaded_irq(&wl->irq_compat);
++	compat_destroy_threaded_irq(&wl->irq_compat);
++#else
+ 	free_irq(wl->irq, wl);
++#endif
+ 	wl1271_free_hw(wl);
+ 
+ 	return 0;
+--- a/drivers/net/wireless/wl12xx/wl12xx.h
++++ b/drivers/net/wireless/wl12xx/wl12xx.h
+@@ -544,6 +544,10 @@ struct wl1271 {
+ 
+ 	/* Quirks of specific hardware revisions */
+ 	unsigned int quirks;
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++	struct compat_threaded_irq irq_compat;
++#endif
+ };
+ 
+ struct wl1271_station {
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux