Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 300910
b: refs/heads/master
c: f16ff75
h: refs/heads/master
v: v3
  • Loading branch information
Luciano Coelho committed Apr 12, 2012
1 parent 29286f6 commit 296f212
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 30d9b4a58bc168620eed0fc6d90b2f05cd02a462
refs/heads/master: f16ff75872b04fa6c779367ae24146c8a1729f2e
12 changes: 12 additions & 0 deletions trunk/drivers/net/wireless/ti/wl12xx/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,16 @@ static int wl12xx_boot(struct wl1271 *wl)
return ret;
}

static void wl12xx_trigger_cmd(struct wl1271 *wl)
{
wlcore_write_reg(wl, REG_INTERRUPT_TRIG, WL12XX_INTR_TRIG_CMD);
}

static void wl12xx_ack_event(struct wl1271 *wl)
{
wlcore_write_reg(wl, REG_INTERRUPT_TRIG, WL12XX_INTR_TRIG_EVENT_ACK);
}

static bool wl12xx_mac_in_fuse(struct wl1271 *wl)
{
bool supported = false;
Expand Down Expand Up @@ -637,6 +647,8 @@ static void wl12xx_get_mac(struct wl1271 *wl)
static struct wlcore_ops wl12xx_ops = {
.identify_chip = wl12xx_identify_chip,
.boot = wl12xx_boot,
.trigger_cmd = wl12xx_trigger_cmd,
.ack_event = wl12xx_ack_event,
.get_pg_ver = wl12xx_get_pg_ver,
.get_mac = wl12xx_get_mac,
};
Expand Down
16 changes: 16 additions & 0 deletions trunk/drivers/net/wireless/ti/wl12xx/reg.h
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,22 @@ enum {

/* end PLL configuration algorithm for wl128x */

/*
* Host Command Interrupt. Setting this bit masks
* the interrupt that the host issues to inform
* the FW that it has sent a command
* to the Wlan hardware Command Mailbox.
*/
#define WL12XX_INTR_TRIG_CMD BIT(0)

/*
* Host Event Acknowlegde Interrupt. The host
* sets this bit to acknowledge that it received
* the unsolicited information from the event
* mailbox.
*/
#define WL12XX_INTR_TRIG_EVENT_ACK BIT(1)

/*===============================================
HI_CFG Interface Configuration Register Values
------------------------------------------
Expand Down
6 changes: 5 additions & 1 deletion trunk/drivers/net/wireless/ti/wlcore/cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,11 @@ int wl1271_cmd_send(struct wl1271 *wl, u16 id, void *buf, size_t len,

wl1271_write(wl, wl->cmd_box_addr, buf, len, false);

wlcore_write_reg(wl, REG_INTERRUPT_TRIG, INTR_TRIG_CMD);
/*
* TODO: we just need this because one bit is in a different
* place. Is there any better way?
*/
wl->ops->trigger_cmd(wl);

timeout = jiffies + msecs_to_jiffies(WL1271_COMMAND_TIMEOUT);

Expand Down
7 changes: 5 additions & 2 deletions trunk/drivers/net/wireless/ti/wlcore/event.c
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,11 @@ int wl1271_event_handle(struct wl1271 *wl, u8 mbox_num)
if (ret < 0)
return ret;

/* then we let the firmware know it can go on...*/
wlcore_write_reg(wl, REG_INTERRUPT_TRIG, INTR_TRIG_EVENT_ACK);
/*
* TODO: we just need this because one bit is in a different
* place. Is there any better way?
*/
wl->ops->ack_event(wl);

return 0;
}
18 changes: 2 additions & 16 deletions trunk/drivers/net/wireless/ti/wlcore/wlcore.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
struct wlcore_ops {
int (*identify_chip)(struct wl1271 *wl);
int (*boot)(struct wl1271 *wl);
void (*trigger_cmd)(struct wl1271 *wl);
void (*ack_event)(struct wl1271 *wl);
s8 (*get_pg_ver)(struct wl1271 *wl);
void (*get_mac)(struct wl1271 *wl);
};
Expand Down Expand Up @@ -344,22 +346,6 @@ int wlcore_free_hw(struct wl1271 *wl);

/* Hardware to Embedded CPU Interrupts - first 32-bit register set */

/*
* Host Command Interrupt. Setting this bit masks
* the interrupt that the host issues to inform
* the FW that it has sent a command
* to the Wlan hardware Command Mailbox.
*/
#define INTR_TRIG_CMD BIT(0)

/*
* Host Event Acknowlegde Interrupt. The host
* sets this bit to acknowledge that it received
* the unsolicited information from the event
* mailbox.
*/
#define INTR_TRIG_EVENT_ACK BIT(1)

/*
* The host sets this bit to inform the Wlan
* FW that a TX packet is in the XFER
Expand Down

0 comments on commit 296f212

Please sign in to comment.