Revert "UPSTREAM: regulator: core: avoid unused variable warning"
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rkwifi / bcmdhd / include / sbsdpcmdev.h
1 /*
2  * Broadcom SiliconBackplane SDIO/PCMCIA hardware-specific
3  * device core support
4  *
5  * $Copyright Open 2005 Broadcom Corporation$
6  *
7  * $Id: sbsdpcmdev.h 416730 2013-08-06 09:33:19Z $
8  */
9
10 #ifndef _sbsdpcmdev_h_
11 #define _sbsdpcmdev_h_
12
13 /* cpp contortions to concatenate w/arg prescan */
14 #ifndef PAD
15 #define _PADLINE(line)  pad ## line
16 #define _XSTR(line)     _PADLINE(line)
17 #define PAD             _XSTR(__LINE__)
18 #endif  /* PAD */
19
20
21 typedef volatile struct {
22         dma64regs_t     xmt;            /* dma tx */
23         uint32 PAD[2];
24         dma64regs_t     rcv;            /* dma rx */
25         uint32 PAD[2];
26 } dma64p_t;
27
28 /* dma64 sdiod corerev >= 1 */
29 typedef volatile struct {
30         dma64p_t dma64regs[2];
31         dma64diag_t dmafifo;            /* DMA Diagnostic Regs, 0x280-0x28c */
32         uint32 PAD[92];
33 } sdiodma64_t;
34
35 /* dma32 sdiod corerev == 0 */
36 typedef volatile struct {
37         dma32regp_t dma32regs[2];       /* dma tx & rx, 0x200-0x23c */
38         dma32diag_t dmafifo;            /* DMA Diagnostic Regs, 0x240-0x24c */
39         uint32 PAD[108];
40 } sdiodma32_t;
41
42 /* dma32 regs for pcmcia core */
43 typedef volatile struct {
44         dma32regp_t dmaregs;            /* DMA Regs, 0x200-0x21c, rev8 */
45         dma32diag_t dmafifo;            /* DMA Diagnostic Regs, 0x220-0x22c */
46         uint32 PAD[116];
47 } pcmdma32_t;
48
49 /* core registers */
50 typedef volatile struct {
51         uint32 corecontrol;             /* CoreControl, 0x000, rev8 */
52         uint32 corestatus;              /* CoreStatus, 0x004, rev8  */
53         uint32 PAD[1];
54         uint32 biststatus;              /* BistStatus, 0x00c, rev8  */
55
56         /* PCMCIA access */
57         uint16 pcmciamesportaladdr;     /* PcmciaMesPortalAddr, 0x010, rev8   */
58         uint16 PAD[1];
59         uint16 pcmciamesportalmask;     /* PcmciaMesPortalMask, 0x014, rev8   */
60         uint16 PAD[1];
61         uint16 pcmciawrframebc;         /* PcmciaWrFrameBC, 0x018, rev8   */
62         uint16 PAD[1];
63         uint16 pcmciaunderflowtimer;    /* PcmciaUnderflowTimer, 0x01c, rev8   */
64         uint16 PAD[1];
65
66         /* interrupt */
67         uint32 intstatus;               /* IntStatus, 0x020, rev8   */
68         uint32 hostintmask;             /* IntHostMask, 0x024, rev8   */
69         uint32 intmask;                 /* IntSbMask, 0x028, rev8   */
70         uint32 sbintstatus;             /* SBIntStatus, 0x02c, rev8   */
71         uint32 sbintmask;               /* SBIntMask, 0x030, rev8   */
72         uint32 funcintmask;             /* SDIO Function Interrupt Mask, SDIO rev4 */
73         uint32 PAD[2];
74         uint32 tosbmailbox;             /* ToSBMailbox, 0x040, rev8   */
75         uint32 tohostmailbox;           /* ToHostMailbox, 0x044, rev8   */
76         uint32 tosbmailboxdata;         /* ToSbMailboxData, 0x048, rev8   */
77         uint32 tohostmailboxdata;       /* ToHostMailboxData, 0x04c, rev8   */
78
79         /* synchronized access to registers in SDIO clock domain */
80         uint32 sdioaccess;              /* SdioAccess, 0x050, rev8   */
81         uint32 PAD[3];
82
83         /* PCMCIA frame control */
84         uint8 pcmciaframectrl;          /* pcmciaFrameCtrl, 0x060, rev8   */
85         uint8 PAD[3];
86         uint8 pcmciawatermark;          /* pcmciaWaterMark, 0x064, rev8   */
87         uint8 PAD[155];
88
89         /* interrupt batching control */
90         uint32 intrcvlazy;              /* IntRcvLazy, 0x100, rev8 */
91         uint32 PAD[3];
92
93         /* counters */
94         uint32 cmd52rd;                 /* Cmd52RdCount, 0x110, rev8, SDIO: cmd52 reads */
95         uint32 cmd52wr;                 /* Cmd52WrCount, 0x114, rev8, SDIO: cmd52 writes */
96         uint32 cmd53rd;                 /* Cmd53RdCount, 0x118, rev8, SDIO: cmd53 reads */
97         uint32 cmd53wr;                 /* Cmd53WrCount, 0x11c, rev8, SDIO: cmd53 writes */
98         uint32 abort;                   /* AbortCount, 0x120, rev8, SDIO: aborts */
99         uint32 datacrcerror;            /* DataCrcErrorCount, 0x124, rev8, SDIO: frames w/bad CRC */
100         uint32 rdoutofsync;             /* RdOutOfSyncCount, 0x128, rev8, SDIO/PCMCIA: Rd Frm OOS */
101         uint32 wroutofsync;             /* RdOutOfSyncCount, 0x12c, rev8, SDIO/PCMCIA: Wr Frm OOS */
102         uint32 writebusy;               /* WriteBusyCount, 0x130, rev8, SDIO: dev asserted "busy" */
103         uint32 readwait;                /* ReadWaitCount, 0x134, rev8, SDIO: read: no data avail */
104         uint32 readterm;                /* ReadTermCount, 0x138, rev8, SDIO: rd frm terminates */
105         uint32 writeterm;               /* WriteTermCount, 0x13c, rev8, SDIO: wr frm terminates */
106         uint32 PAD[40];
107         uint32 clockctlstatus;          /* ClockCtlStatus, 0x1e0, rev8 */
108         uint32 PAD[7];
109
110         /* DMA engines */
111         volatile union {
112                 pcmdma32_t pcm32;
113                 sdiodma32_t sdiod32;
114                 sdiodma64_t sdiod64;
115         } dma;
116
117         /* SDIO/PCMCIA CIS region */
118         char cis[512];                  /* 512 byte CIS, 0x400-0x5ff, rev6 */
119
120         /* PCMCIA function control registers */
121         char pcmciafcr[256];            /* PCMCIA FCR, 0x600-6ff, rev6 */
122         uint16 PAD[55];
123
124         /* PCMCIA backplane access */
125         uint16 backplanecsr;            /* BackplaneCSR, 0x76E, rev6 */
126         uint16 backplaneaddr0;          /* BackplaneAddr0, 0x770, rev6 */
127         uint16 backplaneaddr1;          /* BackplaneAddr1, 0x772, rev6 */
128         uint16 backplaneaddr2;          /* BackplaneAddr2, 0x774, rev6 */
129         uint16 backplaneaddr3;          /* BackplaneAddr3, 0x776, rev6 */
130         uint16 backplanedata0;          /* BackplaneData0, 0x778, rev6 */
131         uint16 backplanedata1;          /* BackplaneData1, 0x77a, rev6 */
132         uint16 backplanedata2;          /* BackplaneData2, 0x77c, rev6 */
133         uint16 backplanedata3;          /* BackplaneData3, 0x77e, rev6 */
134         uint16 PAD[31];
135
136         /* sprom "size" & "blank" info */
137         uint16 spromstatus;             /* SPROMStatus, 0x7BE, rev2 */
138         uint32 PAD[464];
139
140         /* Sonics SiliconBackplane registers */
141         sbconfig_t sbconfig;            /* SbConfig Regs, 0xf00-0xfff, rev8 */
142 } sdpcmd_regs_t;
143
144 /* corecontrol */
145 #define CC_CISRDY               (1 << 0)        /* CIS Ready */
146 #define CC_BPRESEN              (1 << 1)        /* CCCR RES signal causes backplane reset */
147 #define CC_F2RDY                (1 << 2)        /* set CCCR IOR2 bit */
148 #define CC_CLRPADSISO           (1 << 3)        /* clear SDIO pads isolation bit (rev 11) */
149 #define CC_XMTDATAAVAIL_MODE    (1 << 4)        /* data avail generates an interrupt */
150 #define CC_XMTDATAAVAIL_CTRL    (1 << 5)        /* data avail interrupt ctrl */
151
152 /* corestatus */
153 #define CS_PCMCIAMODE   (1 << 0)        /* Device Mode; 0=SDIO, 1=PCMCIA */
154 #define CS_SMARTDEV     (1 << 1)        /* 1=smartDev enabled */
155 #define CS_F2ENABLED    (1 << 2)        /* 1=host has enabled the device */
156
157 #define PCMCIA_MES_PA_MASK      0x7fff  /* PCMCIA Message Portal Address Mask */
158 #define PCMCIA_MES_PM_MASK      0x7fff  /* PCMCIA Message Portal Mask Mask */
159 #define PCMCIA_WFBC_MASK        0xffff  /* PCMCIA Write Frame Byte Count Mask */
160 #define PCMCIA_UT_MASK          0x07ff  /* PCMCIA Underflow Timer Mask */
161
162 /* intstatus */
163 #define I_SMB_SW0       (1 << 0)        /* To SB Mail S/W interrupt 0 */
164 #define I_SMB_SW1       (1 << 1)        /* To SB Mail S/W interrupt 1 */
165 #define I_SMB_SW2       (1 << 2)        /* To SB Mail S/W interrupt 2 */
166 #define I_SMB_SW3       (1 << 3)        /* To SB Mail S/W interrupt 3 */
167 #define I_SMB_SW_MASK   0x0000000f      /* To SB Mail S/W interrupts mask */
168 #define I_SMB_SW_SHIFT  0               /* To SB Mail S/W interrupts shift */
169 #define I_HMB_SW0       (1 << 4)        /* To Host Mail S/W interrupt 0 */
170 #define I_HMB_SW1       (1 << 5)        /* To Host Mail S/W interrupt 1 */
171 #define I_HMB_SW2       (1 << 6)        /* To Host Mail S/W interrupt 2 */
172 #define I_HMB_SW3       (1 << 7)        /* To Host Mail S/W interrupt 3 */
173 #define I_HMB_SW_MASK   0x000000f0      /* To Host Mail S/W interrupts mask */
174 #define I_HMB_SW_SHIFT  4               /* To Host Mail S/W interrupts shift */
175 #define I_WR_OOSYNC     (1 << 8)        /* Write Frame Out Of Sync */
176 #define I_RD_OOSYNC     (1 << 9)        /* Read Frame Out Of Sync */
177 #define I_PC            (1 << 10)       /* descriptor error */
178 #define I_PD            (1 << 11)       /* data error */
179 #define I_DE            (1 << 12)       /* Descriptor protocol Error */
180 #define I_RU            (1 << 13)       /* Receive descriptor Underflow */
181 #define I_RO            (1 << 14)       /* Receive fifo Overflow */
182 #define I_XU            (1 << 15)       /* Transmit fifo Underflow */
183 #define I_RI            (1 << 16)       /* Receive Interrupt */
184 #define I_BUSPWR        (1 << 17)       /* SDIO Bus Power Change (rev 9) */
185 #define I_XMTDATA_AVAIL (1 << 23)       /* bits in fifo */
186 #define I_XI            (1 << 24)       /* Transmit Interrupt */
187 #define I_RF_TERM       (1 << 25)       /* Read Frame Terminate */
188 #define I_WF_TERM       (1 << 26)       /* Write Frame Terminate */
189 #define I_PCMCIA_XU     (1 << 27)       /* PCMCIA Transmit FIFO Underflow */
190 #define I_SBINT         (1 << 28)       /* sbintstatus Interrupt */
191 #define I_CHIPACTIVE    (1 << 29)       /* chip transitioned from doze to active state */
192 #define I_SRESET        (1 << 30)       /* CCCR RES interrupt */
193 #define I_IOE2          (1U << 31)      /* CCCR IOE2 Bit Changed */
194 #define I_ERRORS        (I_PC | I_PD | I_DE | I_RU | I_RO | I_XU)       /* DMA Errors */
195 #define I_DMA           (I_RI | I_XI | I_ERRORS)
196
197 /* sbintstatus */
198 #define I_SB_SERR       (1 << 8)        /* Backplane SError (write) */
199 #define I_SB_RESPERR    (1 << 9)        /* Backplane Response Error (read) */
200 #define I_SB_SPROMERR   (1 << 10)       /* Error accessing the sprom */
201
202 /* sdioaccess */
203 #define SDA_DATA_MASK   0x000000ff      /* Read/Write Data Mask */
204 #define SDA_ADDR_MASK   0x000fff00      /* Read/Write Address Mask */
205 #define SDA_ADDR_SHIFT  8               /* Read/Write Address Shift */
206 #define SDA_WRITE       0x01000000      /* Write bit  */
207 #define SDA_READ        0x00000000      /* Write bit cleared for Read */
208 #define SDA_BUSY        0x80000000      /* Busy bit */
209
210 /* sdioaccess-accessible register address spaces */
211 #define SDA_CCCR_SPACE          0x000   /* sdioAccess CCCR register space */
212 #define SDA_F1_FBR_SPACE        0x100   /* sdioAccess F1 FBR register space */
213 #define SDA_F2_FBR_SPACE        0x200   /* sdioAccess F2 FBR register space */
214 #define SDA_F1_REG_SPACE        0x300   /* sdioAccess F1 core-specific register space */
215
216 /* SDA_F1_REG_SPACE sdioaccess-accessible F1 reg space register offsets */
217 #define SDA_CHIPCONTROLDATA     0x006   /* ChipControlData */
218 #define SDA_CHIPCONTROLENAB     0x007   /* ChipControlEnable */
219 #define SDA_F2WATERMARK         0x008   /* Function 2 Watermark */
220 #define SDA_DEVICECONTROL       0x009   /* DeviceControl */
221 #define SDA_SBADDRLOW           0x00a   /* SbAddrLow */
222 #define SDA_SBADDRMID           0x00b   /* SbAddrMid */
223 #define SDA_SBADDRHIGH          0x00c   /* SbAddrHigh */
224 #define SDA_FRAMECTRL           0x00d   /* FrameCtrl */
225 #define SDA_CHIPCLOCKCSR        0x00e   /* ChipClockCSR */
226 #define SDA_SDIOPULLUP          0x00f   /* SdioPullUp */
227 #define SDA_SDIOWRFRAMEBCLOW    0x019   /* SdioWrFrameBCLow */
228 #define SDA_SDIOWRFRAMEBCHIGH   0x01a   /* SdioWrFrameBCHigh */
229 #define SDA_SDIORDFRAMEBCLOW    0x01b   /* SdioRdFrameBCLow */
230 #define SDA_SDIORDFRAMEBCHIGH   0x01c   /* SdioRdFrameBCHigh */
231
232 /* SDA_F2WATERMARK */
233 #define SDA_F2WATERMARK_MASK    0x7f    /* F2Watermark Mask */
234
235 /* SDA_SBADDRLOW */
236 #define SDA_SBADDRLOW_MASK      0x80    /* SbAddrLow Mask */
237
238 /* SDA_SBADDRMID */
239 #define SDA_SBADDRMID_MASK      0xff    /* SbAddrMid Mask */
240
241 /* SDA_SBADDRHIGH */
242 #define SDA_SBADDRHIGH_MASK     0xff    /* SbAddrHigh Mask */
243
244 /* SDA_FRAMECTRL */
245 #define SFC_RF_TERM     (1 << 0)        /* Read Frame Terminate */
246 #define SFC_WF_TERM     (1 << 1)        /* Write Frame Terminate */
247 #define SFC_CRC4WOOS    (1 << 2)        /* HW reports CRC error for write out of sync */
248 #define SFC_ABORTALL    (1 << 3)        /* Abort cancels all in-progress frames */
249
250 /* pcmciaframectrl */
251 #define PFC_RF_TERM     (1 << 0)        /* Read Frame Terminate */
252 #define PFC_WF_TERM     (1 << 1)        /* Write Frame Terminate */
253
254 /* intrcvlazy */
255 #define IRL_TO_MASK     0x00ffffff      /* timeout */
256 #define IRL_FC_MASK     0xff000000      /* frame count */
257 #define IRL_FC_SHIFT    24              /* frame count */
258
259 /* rx header */
260 typedef volatile struct {
261         uint16 len;
262         uint16 flags;
263 } sdpcmd_rxh_t;
264
265 /* rx header flags */
266 #define RXF_CRC         0x0001          /* CRC error detected */
267 #define RXF_WOOS        0x0002          /* write frame out of sync */
268 #define RXF_WF_TERM     0x0004          /* write frame terminated */
269 #define RXF_ABORT       0x0008          /* write frame aborted */
270 #define RXF_DISCARD     (RXF_CRC | RXF_WOOS | RXF_WF_TERM | RXF_ABORT)  /* bad frame */
271
272 /* HW frame tag */
273 #define SDPCM_FRAMETAG_LEN      4       /* HW frametag: 2 bytes len, 2 bytes check val */
274
275 #if !defined(NDISVER) || (NDISVER < 0x0630)
276 #define SDPCM_HWEXT_LEN 8
277 #else
278 #define SDPCM_HWEXT_LEN 0
279 #endif /* !defined(NDISVER) || (NDISVER < 0x0630) */
280
281 #endif  /* _sbsdpcmdev_h_ */