diff options
author | Gertjan van Wingerde <gwingerde@gmail.com> | 2010-03-30 17:50:25 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-04-06 16:55:06 -0400 |
commit | 9e18944601856c04c07dc569b87e9b98e8a9da5f (patch) | |
tree | 1348c49d43d1846ce09dbe98b1845a795eff4388 | |
parent | 5731858d0047cad309d334c4cd6ccb6199bf28fe (diff) |
rt2x00: Add wakeup interrupt handler to rt61pci.
This is needed to wake up the device automatically for receiving beacons,
and is required for proper powersave handling.
Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index e2da928dd9f0..ac69dbe5719b 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -2117,6 +2117,14 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev) | |||
2117 | } | 2117 | } |
2118 | } | 2118 | } |
2119 | 2119 | ||
2120 | static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) | ||
2121 | { | ||
2122 | struct ieee80211_conf conf = { .flags = 0 }; | ||
2123 | struct rt2x00lib_conf libconf = { .conf = &conf }; | ||
2124 | |||
2125 | rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); | ||
2126 | } | ||
2127 | |||
2120 | static irqreturn_t rt61pci_interrupt(int irq, void *dev_instance) | 2128 | static irqreturn_t rt61pci_interrupt(int irq, void *dev_instance) |
2121 | { | 2129 | { |
2122 | struct rt2x00_dev *rt2x00dev = dev_instance; | 2130 | struct rt2x00_dev *rt2x00dev = dev_instance; |
@@ -2164,6 +2172,12 @@ static irqreturn_t rt61pci_interrupt(int irq, void *dev_instance) | |||
2164 | rt2x00pci_register_write(rt2x00dev, | 2172 | rt2x00pci_register_write(rt2x00dev, |
2165 | M2H_CMD_DONE_CSR, 0xffffffff); | 2173 | M2H_CMD_DONE_CSR, 0xffffffff); |
2166 | 2174 | ||
2175 | /* | ||
2176 | * 4 - MCU Autowakeup interrupt. | ||
2177 | */ | ||
2178 | if (rt2x00_get_field32(reg_mcu, MCU_INT_SOURCE_CSR_TWAKEUP)) | ||
2179 | rt61pci_wakeup(rt2x00dev); | ||
2180 | |||
2167 | return IRQ_HANDLED; | 2181 | return IRQ_HANDLED; |
2168 | } | 2182 | } |
2169 | 2183 | ||