aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJuuso Oikarinen <juuso.oikarinen@nokia.com>2009-12-11 08:40:59 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-12-28 16:31:34 -0500
commit13f2dc52c69bcca074cd12d4806953b2af45c386 (patch)
treef05cd7abe8ca8d09efc3d870ef66c5996026a049 /drivers
parenta6fe231361e35e3d068a63bbfd2318fa4e961ec5 (diff)
wl1271: Fix event acknowledging functionality
In reference source, events are acknowledged separately - fix the driver to do the same. Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com> Reviewed-by: Luciano Coelho <luciano.coelho@nokia.com> Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_event.c6
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_event.h2
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_main.c5
3 files changed, 5 insertions, 8 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1271_event.c b/drivers/net/wireless/wl12xx/wl1271_event.c
index d13fdd99c85c..227caa14cbc5 100644
--- a/drivers/net/wireless/wl12xx/wl1271_event.c
+++ b/drivers/net/wireless/wl12xx/wl1271_event.c
@@ -184,7 +184,7 @@ void wl1271_event_mbox_config(struct wl1271 *wl)
184 wl->mbox_ptr[0], wl->mbox_ptr[1]); 184 wl->mbox_ptr[0], wl->mbox_ptr[1]);
185} 185}
186 186
187int wl1271_event_handle(struct wl1271 *wl, u8 mbox_num, bool do_ack) 187int wl1271_event_handle(struct wl1271 *wl, u8 mbox_num)
188{ 188{
189 struct event_mailbox mbox; 189 struct event_mailbox mbox;
190 int ret; 190 int ret;
@@ -204,9 +204,7 @@ int wl1271_event_handle(struct wl1271 *wl, u8 mbox_num, bool do_ack)
204 return ret; 204 return ret;
205 205
206 /* then we let the firmware know it can go on...*/ 206 /* then we let the firmware know it can go on...*/
207 if (do_ack) 207 wl1271_spi_write32(wl, ACX_REG_INTERRUPT_TRIG, INTR_TRIG_EVENT_ACK);
208 wl1271_spi_write32(wl, ACX_REG_INTERRUPT_TRIG,
209 INTR_TRIG_EVENT_ACK);
210 208
211 return 0; 209 return 0;
212} 210}
diff --git a/drivers/net/wireless/wl12xx/wl1271_event.h b/drivers/net/wireless/wl12xx/wl1271_event.h
index 4e3f55ebb1a8..278f9206aa56 100644
--- a/drivers/net/wireless/wl12xx/wl1271_event.h
+++ b/drivers/net/wireless/wl12xx/wl1271_event.h
@@ -112,6 +112,6 @@ struct event_mailbox {
112 112
113int wl1271_event_unmask(struct wl1271 *wl); 113int wl1271_event_unmask(struct wl1271 *wl);
114void wl1271_event_mbox_config(struct wl1271 *wl); 114void wl1271_event_mbox_config(struct wl1271 *wl);
115int wl1271_event_handle(struct wl1271 *wl, u8 mbox, bool do_ack); 115int wl1271_event_handle(struct wl1271 *wl, u8 mbox);
116 116
117#endif 117#endif
diff --git a/drivers/net/wireless/wl12xx/wl1271_main.c b/drivers/net/wireless/wl12xx/wl1271_main.c
index 272a8fa677ef..d507dae19e17 100644
--- a/drivers/net/wireless/wl12xx/wl1271_main.c
+++ b/drivers/net/wireless/wl12xx/wl1271_main.c
@@ -450,14 +450,13 @@ static void wl1271_irq_work(struct work_struct *work)
450 intr &= WL1271_INTR_MASK; 450 intr &= WL1271_INTR_MASK;
451 451
452 if (intr & WL1271_ACX_INTR_EVENT_A) { 452 if (intr & WL1271_ACX_INTR_EVENT_A) {
453 bool do_ack = (intr & WL1271_ACX_INTR_EVENT_B) ? false : true;
454 wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_EVENT_A"); 453 wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_EVENT_A");
455 wl1271_event_handle(wl, 0, do_ack); 454 wl1271_event_handle(wl, 0);
456 } 455 }
457 456
458 if (intr & WL1271_ACX_INTR_EVENT_B) { 457 if (intr & WL1271_ACX_INTR_EVENT_B) {
459 wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_EVENT_B"); 458 wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_EVENT_B");
460 wl1271_event_handle(wl, 1, true); 459 wl1271_event_handle(wl, 1);
461 } 460 }
462 461
463 if (intr & WL1271_ACX_INTR_INIT_COMPLETE) 462 if (intr & WL1271_ACX_INTR_INIT_COMPLETE)