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>
This commit is contained in:
parent
a6fe231361
commit
13f2dc52c6
|
@ -184,7 +184,7 @@ void wl1271_event_mbox_config(struct wl1271 *wl)
|
||||||
wl->mbox_ptr[0], wl->mbox_ptr[1]);
|
wl->mbox_ptr[0], wl->mbox_ptr[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
int wl1271_event_handle(struct wl1271 *wl, u8 mbox_num, bool do_ack)
|
int wl1271_event_handle(struct wl1271 *wl, u8 mbox_num)
|
||||||
{
|
{
|
||||||
struct event_mailbox mbox;
|
struct event_mailbox mbox;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -204,9 +204,7 @@ int wl1271_event_handle(struct wl1271 *wl, u8 mbox_num, bool do_ack)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* then we let the firmware know it can go on...*/
|
/* then we let the firmware know it can go on...*/
|
||||||
if (do_ack)
|
wl1271_spi_write32(wl, ACX_REG_INTERRUPT_TRIG, INTR_TRIG_EVENT_ACK);
|
||||||
wl1271_spi_write32(wl, ACX_REG_INTERRUPT_TRIG,
|
|
||||||
INTR_TRIG_EVENT_ACK);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,6 +112,6 @@ struct event_mailbox {
|
||||||
|
|
||||||
int wl1271_event_unmask(struct wl1271 *wl);
|
int wl1271_event_unmask(struct wl1271 *wl);
|
||||||
void wl1271_event_mbox_config(struct wl1271 *wl);
|
void wl1271_event_mbox_config(struct wl1271 *wl);
|
||||||
int wl1271_event_handle(struct wl1271 *wl, u8 mbox, bool do_ack);
|
int wl1271_event_handle(struct wl1271 *wl, u8 mbox);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -450,14 +450,13 @@ static void wl1271_irq_work(struct work_struct *work)
|
||||||
intr &= WL1271_INTR_MASK;
|
intr &= WL1271_INTR_MASK;
|
||||||
|
|
||||||
if (intr & WL1271_ACX_INTR_EVENT_A) {
|
if (intr & WL1271_ACX_INTR_EVENT_A) {
|
||||||
bool do_ack = (intr & WL1271_ACX_INTR_EVENT_B) ? false : true;
|
|
||||||
wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_EVENT_A");
|
wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_EVENT_A");
|
||||||
wl1271_event_handle(wl, 0, do_ack);
|
wl1271_event_handle(wl, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intr & WL1271_ACX_INTR_EVENT_B) {
|
if (intr & WL1271_ACX_INTR_EVENT_B) {
|
||||||
wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_EVENT_B");
|
wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_EVENT_B");
|
||||||
wl1271_event_handle(wl, 1, true);
|
wl1271_event_handle(wl, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intr & WL1271_ACX_INTR_INIT_COMPLETE)
|
if (intr & WL1271_ACX_INTR_INIT_COMPLETE)
|
||||||
|
|
Loading…
Reference in New Issue