Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d10b195 authored by Arik Nemtsov's avatar Arik Nemtsov Committed by Luciano Coelho
Browse files

wlcore/wl12xx: expand functionality of cmd_trigger HW op



Change the cmd_trigger op to include the write of the command buffer.

Also, instead of letting the lower driver access the cmd_box_addr element
directly, we now pass the address in the trigger_cmd operation, so it
doesn't have to be exported.

Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent 8a9affc0
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -707,8 +707,10 @@ out:
	return ret;
}

static void wl12xx_trigger_cmd(struct wl1271 *wl)
static void wl12xx_trigger_cmd(struct wl1271 *wl, int cmd_box_addr,
			       void *buf, size_t len)
{
	wl1271_write(wl, cmd_box_addr, buf, len, false);
	wlcore_write_reg(wl, REG_INTERRUPT_TRIG, WL12XX_INTR_TRIG_CMD);
}

+1 −1
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@ int wl1271_cmd_send(struct wl1271 *wl, u16 id, void *buf, size_t len,
	 * TODO: we just need this because one bit is in a different
	 * place.  Is there any better way?
	 */
	wl->ops->trigger_cmd(wl);
	wl->ops->trigger_cmd(wl, wl->cmd_box_addr, buf, len);

	timeout = jiffies + msecs_to_jiffies(WL1271_COMMAND_TIMEOUT);

+2 −1
Original line number Diff line number Diff line
@@ -37,7 +37,8 @@ enum wl_rx_buf_align;
struct wlcore_ops {
	int (*identify_chip)(struct wl1271 *wl);
	int (*boot)(struct wl1271 *wl);
	void (*trigger_cmd)(struct wl1271 *wl);
	void (*trigger_cmd)(struct wl1271 *wl, int cmd_box_addr,
			    void *buf, size_t len);
	void (*ack_event)(struct wl1271 *wl);
	u32 (*calc_tx_blocks)(struct wl1271 *wl, u32 len, u32 spare_blks);
	void (*set_tx_desc_blocks)(struct wl1271 *wl,