int wl1271_event_handle(struct wl1271 *wl, u8 mbox_num, bool do_ack)
{
	struct event_mailbox mbox;
	int ret;

	wl1271_debug(DEBUG_EVENT, "EVENT on mbox %d", mbox_num);

	if (mbox_num > 1)
		return -EINVAL;

	/* first we read the mbox descriptor */
	wl1271_spi_read(wl, wl->mbox_ptr[mbox_num], &mbox,
			sizeof(struct event_mailbox), false);

	/* process the descriptor */
	ret = wl1271_event_process(wl, &mbox);
	if (ret < 0)
		return ret;

	/* 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);

	return 0;
}
Example #2
0
int wl1271_event_handle(struct wl1271 *wl, u8 mbox_num)
{
	struct event_mailbox mbox;
	int ret;

	wl1271_debug(DEBUG_EVENT, "EVENT on mbox %d", mbox_num);

	if (mbox_num > 1)
		return -EINVAL;

	
	wl1271_spi_mem_read(wl, wl->mbox_ptr[mbox_num], &mbox,
			    sizeof(struct event_mailbox));

	
	ret = wl1271_event_process(wl, &mbox);
	if (ret < 0)
		return ret;

	
	wl1271_reg_write32(wl, ACX_REG_INTERRUPT_TRIG, INTR_TRIG_EVENT_ACK);

	return 0;
}