aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ti/wl12xx/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ti/wl12xx/main.c')
-rw-r--r--drivers/net/wireless/ti/wl12xx/main.c43
1 files changed, 42 insertions, 1 deletions
diff --git a/drivers/net/wireless/ti/wl12xx/main.c b/drivers/net/wireless/ti/wl12xx/main.c
index 0d3ed7d7893..ea8480c1fae 100644
--- a/drivers/net/wireless/ti/wl12xx/main.c
+++ b/drivers/net/wireless/ti/wl12xx/main.c
@@ -27,7 +27,7 @@
27#include "../wlcore/wlcore.h" 27#include "../wlcore/wlcore.h"
28#include "../wlcore/debug.h" 28#include "../wlcore/debug.h"
29 29
30#include "../wlcore/reg.h" 30#include "reg.h"
31 31
32static struct wlcore_ops wl12xx_ops = { 32static struct wlcore_ops wl12xx_ops = {
33}; 33};
@@ -52,6 +52,26 @@ static struct wlcore_partition_set wl12xx_ptable[PART_TABLE_LEN] = {
52 }, 52 },
53 }, 53 },
54 54
55 [PART_BOOT] = { /* in wl12xx we can use a mix of work and down
56 * partition here */
57 .mem = {
58 .start = 0x00040000,
59 .size = 0x00014fc0
60 },
61 .reg = {
62 .start = REGISTERS_BASE,
63 .size = 0x00008800
64 },
65 .mem2 = {
66 .start = 0x00000000,
67 .size = 0x00000000
68 },
69 .mem3 = {
70 .start = 0x00000000,
71 .size = 0x00000000
72 },
73 },
74
55 [PART_WORK] = { 75 [PART_WORK] = {
56 .mem = { 76 .mem = {
57 .start = 0x00040000, 77 .start = 0x00040000,
@@ -91,6 +111,26 @@ static struct wlcore_partition_set wl12xx_ptable[PART_TABLE_LEN] = {
91 } 111 }
92}; 112};
93 113
114static const int wl12xx_rtable[REG_TABLE_LEN] = {
115 [REG_ECPU_CONTROL] = WL12XX_REG_ECPU_CONTROL,
116 [REG_INTERRUPT_NO_CLEAR] = WL12XX_REG_INTERRUPT_NO_CLEAR,
117 [REG_INTERRUPT_ACK] = WL12XX_REG_INTERRUPT_ACK,
118 [REG_COMMAND_MAILBOX_PTR] = WL12XX_REG_COMMAND_MAILBOX_PTR,
119 [REG_EVENT_MAILBOX_PTR] = WL12XX_REG_EVENT_MAILBOX_PTR,
120 [REG_INTERRUPT_TRIG] = WL12XX_REG_INTERRUPT_TRIG,
121 [REG_INTERRUPT_MASK] = WL12XX_REG_INTERRUPT_MASK,
122 [REG_PC_ON_RECOVERY] = WL12XX_SCR_PAD4,
123 [REG_CHIP_ID_B] = WL12XX_CHIP_ID_B,
124 [REG_CMD_MBOX_ADDRESS] = WL12XX_CMD_MBOX_ADDRESS,
125
126 /* data access memory addresses, used with partition translation */
127 [REG_SLV_MEM_DATA] = WL1271_SLV_MEM_DATA,
128 [REG_SLV_REG_DATA] = WL1271_SLV_REG_DATA,
129
130 /* raw data access memory addresses */
131 [REG_RAW_FW_STATUS_ADDR] = FW_STATUS_ADDR,
132};
133
94static int __devinit wl12xx_probe(struct platform_device *pdev) 134static int __devinit wl12xx_probe(struct platform_device *pdev)
95{ 135{
96 struct wl1271 *wl; 136 struct wl1271 *wl;
@@ -105,6 +145,7 @@ static int __devinit wl12xx_probe(struct platform_device *pdev)
105 wl = hw->priv; 145 wl = hw->priv;
106 wl->ops = &wl12xx_ops; 146 wl->ops = &wl12xx_ops;
107 wl->ptable = wl12xx_ptable; 147 wl->ptable = wl12xx_ptable;
148 wl->rtable = wl12xx_rtable;
108 149
109 return wlcore_probe(wl, pdev); 150 return wlcore_probe(wl, pdev);
110} 151}