summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath5k/base.c
diff options
context:
space:
mode:
authorTobias Doerffel2009-06-09 17:33:27 +0200
committerJohn W. Linville2009-06-10 19:27:54 +0200
commite6a3b61681dcb963e6465ffbc4330b44824f35e3 (patch)
tree1628eb26f1a79858391686a64e9e72780cd6340a /drivers/net/wireless/ath/ath5k/base.c
parentrfkill: print events when input handler is disabled/enabled (diff)
downloadkernel-qcow2-linux-e6a3b61681dcb963e6465ffbc4330b44824f35e3.tar.gz
kernel-qcow2-linux-e6a3b61681dcb963e6465ffbc4330b44824f35e3.tar.xz
kernel-qcow2-linux-e6a3b61681dcb963e6465ffbc4330b44824f35e3.zip
ath5k: added cfg80211 based rfkill support
This patch introduces initial rfkill support for the ath5k driver based on rfkill support in the cfg80211 framework. All rfkill related code is separated into newly created rfkill.c. Changes to existing code are minimal: * added a new data structure ath5k_rfkill to the ath5k_softc structure * inserted calls to HW rfkill init/deinit routines * ath5k_intr() has been extended to handle AR5K_INT_GPIO interrupts Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/base.c')
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 85a00db4867d..f55675c23f2e 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -2360,6 +2360,8 @@ ath5k_init(struct ath5k_softc *sc)
if (ret)
goto done;
+ ath5k_rfkill_hw_start(ah);
+
/*
* Reset the key cache since some parts do not reset the
* contents on initial power up or resume from suspend.
@@ -2468,6 +2470,8 @@ ath5k_stop_hw(struct ath5k_softc *sc)
tasklet_kill(&sc->restq);
tasklet_kill(&sc->beacontq);
+ ath5k_rfkill_hw_stop(sc->ah);
+
return ret;
}
@@ -2526,6 +2530,12 @@ ath5k_intr(int irq, void *dev_id)
*/
ath5k_hw_update_mib_counters(ah, &sc->ll_stats);
}
+#ifdef CONFIG_ATH5K_RFKILL
+ if (status & AR5K_INT_GPIO)
+ {
+ tasklet_schedule(&sc->rf_kill.toggleq);
+ }
+#endif
}
} while (ath5k_hw_is_intr_pending(ah) && --counter > 0);