aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGertjan van Wingerde <gwingerde@gmail.com>2010-03-30 17:50:25 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-04-06 16:55:06 -0400
commit9e18944601856c04c07dc569b87e9b98e8a9da5f (patch)
tree1348c49d43d1846ce09dbe98b1845a795eff4388
parent5731858d0047cad309d334c4cd6ccb6199bf28fe (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.c14
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
2120static 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
2120static irqreturn_t rt61pci_interrupt(int irq, void *dev_instance) 2128static 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