xref: /OK3568_Linux_fs/external/rkwifibt/drivers/bcmdhd/include/sbgci.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * SiliconBackplane GCI core hardware definitions
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2020, Broadcom.
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  *      Unless you and Broadcom execute a separate written software license
7*4882a593Smuzhiyun  * agreement governing use of this software, this software is licensed to you
8*4882a593Smuzhiyun  * under the terms of the GNU General Public License version 2 (the "GPL"),
9*4882a593Smuzhiyun  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
10*4882a593Smuzhiyun  * following added to such license:
11*4882a593Smuzhiyun  *
12*4882a593Smuzhiyun  *      As a special exception, the copyright holders of this software give you
13*4882a593Smuzhiyun  * permission to link this software with independent modules, and to copy and
14*4882a593Smuzhiyun  * distribute the resulting executable under terms of your choice, provided that
15*4882a593Smuzhiyun  * you also meet, for each linked independent module, the terms and conditions of
16*4882a593Smuzhiyun  * the license of that module.  An independent module is a module which is not
17*4882a593Smuzhiyun  * derived from this software.  The special exception does not apply to any
18*4882a593Smuzhiyun  * modifications of the software.
19*4882a593Smuzhiyun  *
20*4882a593Smuzhiyun  *
21*4882a593Smuzhiyun  * <<Broadcom-WL-IPTag/Dual:>>
22*4882a593Smuzhiyun  */
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #ifndef _SBGCI_H
25*4882a593Smuzhiyun #define _SBGCI_H
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun #include <bcmutils.h>
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #if !defined(_LANGUAGE_ASSEMBLY) && !defined(__ASSEMBLY__)
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun /* cpp contortions to concatenate w/arg prescan */
32*4882a593Smuzhiyun #ifndef PAD
33*4882a593Smuzhiyun #define	_PADLINE(line)	pad ## line
34*4882a593Smuzhiyun #define	_XSTR(line)	_PADLINE(line)
35*4882a593Smuzhiyun #define	PAD		_XSTR(__LINE__)
36*4882a593Smuzhiyun #endif	/* PAD */
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun #define GCI_OFFSETOF(sih, reg) \
39*4882a593Smuzhiyun 	(AOB_ENAB(sih) ? OFFSETOF(gciregs_t, reg) : OFFSETOF(chipcregs_t, reg))
40*4882a593Smuzhiyun #define GCI_CORE_IDX(sih) (AOB_ENAB(sih) ? si_findcoreidx(sih, GCI_CORE_ID, 0) : SI_CC_IDX)
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun typedef volatile struct {
43*4882a593Smuzhiyun 	uint32 gci_corecaps0;				/* 0x000 */
44*4882a593Smuzhiyun 	uint32 gci_corecaps1;				/* 0x004 */
45*4882a593Smuzhiyun 	uint32 gci_corecaps2;				/* 0x008 */
46*4882a593Smuzhiyun 	uint32 gci_corectrl;				/* 0x00c */
47*4882a593Smuzhiyun 	uint32 gci_corestat;				/* 0x010 */
48*4882a593Smuzhiyun 	uint32 gci_intstat;				/* 0x014 */
49*4882a593Smuzhiyun 	uint32 gci_intmask;				/* 0x018 */
50*4882a593Smuzhiyun 	uint32 gci_wakemask;				/* 0x01c */
51*4882a593Smuzhiyun 	uint32 gci_levelintstat;			/* 0x020 */
52*4882a593Smuzhiyun 	uint32 gci_eventintstat;			/* 0x024 */
53*4882a593Smuzhiyun 	uint32 gci_wakelevelintstat;			/* 0x028 */
54*4882a593Smuzhiyun 	uint32 gci_wakeeventintstat;			/* 0x02c */
55*4882a593Smuzhiyun 	uint32 semaphoreintstatus;			/* 0x030 */
56*4882a593Smuzhiyun 	uint32 semaphoreintmask;			/* 0x034 */
57*4882a593Smuzhiyun 	uint32 semaphorerequest;			/* 0x038 */
58*4882a593Smuzhiyun 	uint32 semaphorereserve;			/* 0x03c */
59*4882a593Smuzhiyun 	uint32 gci_indirect_addr;			/* 0x040 */
60*4882a593Smuzhiyun 	uint32 gci_gpioctl;				/* 0x044 */
61*4882a593Smuzhiyun 	uint32 gci_gpiostatus;				/* 0x048 */
62*4882a593Smuzhiyun 	uint32 gci_gpiomask;				/* 0x04c */
63*4882a593Smuzhiyun 	uint32 gci_eventsummary;			/* 0x050 */
64*4882a593Smuzhiyun 	uint32 gci_miscctl;				/* 0x054 */
65*4882a593Smuzhiyun 	uint32 gci_gpiointmask;				/* 0x058 */
66*4882a593Smuzhiyun 	uint32 gci_gpiowakemask;			/* 0x05c */
67*4882a593Smuzhiyun 	uint32 gci_input[32];				/* 0x060 */
68*4882a593Smuzhiyun 	uint32 gci_event[32];				/* 0x0e0 */
69*4882a593Smuzhiyun 	uint32 gci_output[4];				/* 0x160 */
70*4882a593Smuzhiyun 	uint32 gci_control_0;				/* 0x170 */
71*4882a593Smuzhiyun 	uint32 gci_control_1;				/* 0x174 */
72*4882a593Smuzhiyun 	uint32 gci_intpolreg;				/* 0x178 */
73*4882a593Smuzhiyun 	uint32 gci_levelintmask;			/* 0x17c */
74*4882a593Smuzhiyun 	uint32 gci_eventintmask;			/* 0x180 */
75*4882a593Smuzhiyun 	uint32 wakelevelintmask;			/* 0x184 */
76*4882a593Smuzhiyun 	uint32 wakeeventintmask;			/* 0x188 */
77*4882a593Smuzhiyun 	uint32 hwmask;					/* 0x18c */
78*4882a593Smuzhiyun 	uint32 PAD;
79*4882a593Smuzhiyun 	uint32 gci_inbandeventintmask;			/* 0x194 */
80*4882a593Smuzhiyun 	uint32 PAD;
81*4882a593Smuzhiyun 	uint32 gci_inbandeventstatus;			/* 0x19c */
82*4882a593Smuzhiyun 	uint32 gci_seciauxtx;				/* 0x1a0 */
83*4882a593Smuzhiyun 	uint32 gci_seciauxrx;				/* 0x1a4 */
84*4882a593Smuzhiyun 	uint32 gci_secitx_datatag;			/* 0x1a8 */
85*4882a593Smuzhiyun 	uint32 gci_secirx_datatag;			/* 0x1ac */
86*4882a593Smuzhiyun 	uint32 gci_secitx_datamask;			/* 0x1b0 */
87*4882a593Smuzhiyun 	uint32 gci_seciusef0tx_reg;			/* 0x1b4 */
88*4882a593Smuzhiyun 	uint32 gci_secif0tx_offset;			/* 0x1b8 */
89*4882a593Smuzhiyun 	uint32 gci_secif0rx_offset;			/* 0x1bc */
90*4882a593Smuzhiyun 	uint32 gci_secif1tx_offset;			/* 0x1c0 */
91*4882a593Smuzhiyun 	uint32 gci_rxfifo_common_ctrl;			/* 0x1c4 */
92*4882a593Smuzhiyun 	uint32 gci_rxfifoctrl;				/* 0x1c8 */
93*4882a593Smuzhiyun 	uint32 gci_hw_sema_status;			/* 0x1cc */
94*4882a593Smuzhiyun 	uint32 gci_seciuartescval;			/* 0x1d0 */
95*4882a593Smuzhiyun 	uint32 gic_seciuartautobaudctr;			/* 0x1d4 */
96*4882a593Smuzhiyun 	uint32 gci_secififolevel;			/* 0x1d8 */
97*4882a593Smuzhiyun 	uint32 gci_seciuartdata;			/* 0x1dc */
98*4882a593Smuzhiyun 	uint32 gci_secibauddiv;				/* 0x1e0 */
99*4882a593Smuzhiyun 	uint32 gci_secifcr;				/* 0x1e4 */
100*4882a593Smuzhiyun 	uint32 gci_secilcr;				/* 0x1e8 */
101*4882a593Smuzhiyun 	uint32 gci_secimcr;				/* 0x1ec */
102*4882a593Smuzhiyun 	uint32 gci_secilsr;				/* 0x1f0 */
103*4882a593Smuzhiyun 	uint32 gci_secimsr;				/* 0x1f4 */
104*4882a593Smuzhiyun 	uint32 gci_baudadj;				/* 0x1f8 */
105*4882a593Smuzhiyun 	uint32 gci_inbandintmask;			/* 0x1fc */
106*4882a593Smuzhiyun 	uint32 gci_chipctrl;				/* 0x200 */
107*4882a593Smuzhiyun 	uint32 gci_chipsts;				/* 0x204 */
108*4882a593Smuzhiyun 	uint32 gci_gpioout;				/* 0x208 */
109*4882a593Smuzhiyun 	uint32 gci_gpioout_read;			/* 0x20C */
110*4882a593Smuzhiyun 	uint32 gci_mpwaketx;				/* 0x210 */
111*4882a593Smuzhiyun 	uint32 gci_mpwakedetect;			/* 0x214 */
112*4882a593Smuzhiyun 	uint32 gci_seciin_ctrl;				/* 0x218 */
113*4882a593Smuzhiyun 	uint32 gci_seciout_ctrl;			/* 0x21C */
114*4882a593Smuzhiyun 	uint32 gci_seciin_auxfifo_en;			/* 0x220 */
115*4882a593Smuzhiyun 	uint32 gci_seciout_txen_txbr;			/* 0x224 */
116*4882a593Smuzhiyun 	uint32 gci_seciin_rxbrstatus;			/* 0x228 */
117*4882a593Smuzhiyun 	uint32 gci_seciin_rxerrstatus;			/* 0x22C */
118*4882a593Smuzhiyun 	uint32 gci_seciin_fcstatus;			/* 0x230 */
119*4882a593Smuzhiyun 	uint32 gci_seciout_txstatus;			/* 0x234 */
120*4882a593Smuzhiyun 	uint32 gci_seciout_txbrstatus;			/* 0x238 */
121*4882a593Smuzhiyun 	uint32 wlan_mem_info;				/* 0x23C */
122*4882a593Smuzhiyun 	uint32 wlan_bankxinfo;				/* 0x240 */
123*4882a593Smuzhiyun 	uint32 bt_smem_select;				/* 0x244 */
124*4882a593Smuzhiyun 	uint32 bt_smem_stby;				/* 0x248 */
125*4882a593Smuzhiyun 	uint32 bt_smem_status;				/* 0x24C */
126*4882a593Smuzhiyun 	uint32 wlan_bankxactivepda;			/* 0x250 */
127*4882a593Smuzhiyun 	uint32 wlan_bankxsleeppda;			/* 0x254 */
128*4882a593Smuzhiyun 	uint32 wlan_bankxkill;				/* 0x258 */
129*4882a593Smuzhiyun 	uint32 reset_override;				/* 0x25C */
130*4882a593Smuzhiyun 	uint32 ip_id;					/* 0x260 */
131*4882a593Smuzhiyun 	uint32 lpo_safe_zone;				/* 0x264 */
132*4882a593Smuzhiyun 	uint32 function_sel_control_and_status;		/* 0x268 */
133*4882a593Smuzhiyun 	uint32 bt_smem_control0;			/* 0x26C */
134*4882a593Smuzhiyun 	uint32 bt_smem_control1;			/* 0x270 */
135*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0x274, 0x2fc)];		/* 0x274-0x2fc */
136*4882a593Smuzhiyun 	uint32 gci_chipid;				/* 0x300 */
137*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0x304, 0x30c)];		/* 0x304-0x30c */
138*4882a593Smuzhiyun 	uint32 otpstatus;				/* 0x310 */
139*4882a593Smuzhiyun 	uint32 otpcontrol;				/* 0x314 */
140*4882a593Smuzhiyun 	uint32 otpprog;					/* 0x318 */
141*4882a593Smuzhiyun 	uint32 otplayout;				/* 0x31c */
142*4882a593Smuzhiyun 	uint32 otplayoutextension;			/* 0x320 */
143*4882a593Smuzhiyun 	uint32 otpcontrol1;				/* 0x324 */
144*4882a593Smuzhiyun 	uint32 otpprogdata;				/* 0x328 */
145*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0x32c, 0x3f8)];		/* 0x32c-0x3f8 */
146*4882a593Smuzhiyun 	uint32 otpECCstatus;				/* 0x3FC */
147*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_data0;			/* 0x400 */
148*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_data1;			/* 0x404 */
149*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_data2;			/* 0x408 */
150*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_data3;			/* 0x40c */
151*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_addr;			/* 0x410 */
152*4882a593Smuzhiyun 	uint32 gci_rffe_config;				/* 0x414 */
153*4882a593Smuzhiyun 	uint32 gci_rffe_clk_ctrl;			/* 0x418 */
154*4882a593Smuzhiyun 	uint32 gci_rffe_ctrl;				/* 0x41c */
155*4882a593Smuzhiyun 	uint32 gci_rffe_misc_ctrl;			/* 0x420 */
156*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_reg0_field_ctrl;		/* 0x424 */
157*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0x428, 0x438)];		/* 0x428-0x438 */
158*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_mapping_mux0;		/* 0x43c */
159*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_mapping_mux1;		/* 0x440 */
160*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_mapping_mux2;		/* 0x444 */
161*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_mapping_mux3;		/* 0x448 */
162*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_mapping_mux4;		/* 0x44c */
163*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_mapping_mux5;		/* 0x450 */
164*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_mapping_mux6;		/* 0x454 */
165*4882a593Smuzhiyun 	uint32 gci_rffe_rfem_mapping_mux7;		/* 0x458 */
166*4882a593Smuzhiyun 	uint32 gci_rffe_change_detect_ovr_wlmc;		/* 0x45c */
167*4882a593Smuzhiyun 	uint32 gci_rffe_change_detect_ovr_wlac;		/* 0x460 */
168*4882a593Smuzhiyun 	uint32 gci_rffe_change_detect_ovr_wlsc;		/* 0x464 */
169*4882a593Smuzhiyun 	uint32 gci_rffe_change_detect_ovr_btmc;		/* 0x468 */
170*4882a593Smuzhiyun 	uint32 gci_rffe_change_detect_ovr_btsc;		/* 0x46c */
171*4882a593Smuzhiyun 	uint32 gci_cncb_ctrl_status;			/* 0x470 */
172*4882a593Smuzhiyun 	uint32 gci_cncb_2g_force_unlock;		/* 0x474 */
173*4882a593Smuzhiyun 	uint32 gci_cncb_5g_force_unlock;		/* 0x478 */
174*4882a593Smuzhiyun 	uint32 gci_cncb_2g_reset_pulse_width;		/* 0x47c */
175*4882a593Smuzhiyun 	uint32 gci_cncb_5g_reset_pulse_width;		/* 0x480 */
176*4882a593Smuzhiyun 	uint32 gci_cncb_lut_indirect_addr;		/* 0x484 */
177*4882a593Smuzhiyun 	uint32 gci_cncb_2g_lut;				/* 0x488 */
178*4882a593Smuzhiyun 	uint32 gci_cncb_5g_lut;				/* 0x48c */
179*4882a593Smuzhiyun 	uint32 gci_cncb_glitch_filter_width;		/* 0x490 */
180*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0x494, 0x5fc)];		/* 0x494-0x5fc */
181*4882a593Smuzhiyun 	uint32 sgr_fifo_control_reg_5g;			/* 0x600 */
182*4882a593Smuzhiyun 	uint32 sgr_fifo_control_reg_2g;			/* 0x604 */
183*4882a593Smuzhiyun 	uint32 sgr_fifo_control_reg_bt;			/* 0x608 */
184*4882a593Smuzhiyun 	uint32 PAD;					/* 0x60c */
185*4882a593Smuzhiyun 	uint32 sgr_rx_fifo0_read_reg0;			/* 0x610 */
186*4882a593Smuzhiyun 	uint32 sgr_rx_fifo0_read_reg1;			/* 0x614 */
187*4882a593Smuzhiyun 	uint32 sgr_rx_fifo0_read_reg2;			/* 0x618 */
188*4882a593Smuzhiyun 	uint32 sgr_rx_fifo1_read_reg0;			/* 0x61c */
189*4882a593Smuzhiyun 	uint32 sgr_rx_fifo1_read_reg1;			/* 0x620 */
190*4882a593Smuzhiyun 	uint32 sgr_rx_fifo1_read_reg2;			/* 0x624 */
191*4882a593Smuzhiyun 	uint32 sgr_rx_fifo2_read_reg0;			/* 0x628 */
192*4882a593Smuzhiyun 	uint32 sgr_rx_fifo2_read_reg1;			/* 0x62c */
193*4882a593Smuzhiyun 	uint32 sgr_rx_fifo2_read_reg2;			/* 0x630 */
194*4882a593Smuzhiyun 	uint32 sgr_rx_fifo3_read_reg0;			/* 0x634 */
195*4882a593Smuzhiyun 	uint32 sgr_rx_fifo3_read_reg1;			/* 0x638 */
196*4882a593Smuzhiyun 	uint32 sgr_rx_fifo3_read_reg2;			/* 0x63c */
197*4882a593Smuzhiyun 	uint32 sgr_rx_fifo4_read_reg0;			/* 0x640 */
198*4882a593Smuzhiyun 	uint32 sgr_rx_fifo4_read_reg1;			/* 0x644 */
199*4882a593Smuzhiyun 	uint32 sgr_rx_fifo4_read_reg2;			/* 0x648 */
200*4882a593Smuzhiyun 	uint32 sgr_rx_fifo5_read_reg0;			/* 0x64c */
201*4882a593Smuzhiyun 	uint32 sgr_rx_fifo5_read_reg1;			/* 0x650 */
202*4882a593Smuzhiyun 	uint32 sgr_rx_fifo5_read_reg2;			/* 0x654 */
203*4882a593Smuzhiyun 	uint32 sgr_rx_fifo6_read_reg0;			/* 0x658 */
204*4882a593Smuzhiyun 	uint32 sgr_rx_fifo6_read_reg1;			/* 0x65c */
205*4882a593Smuzhiyun 	uint32 sgr_rx_fifo6_read_reg2;			/* 0x660 */
206*4882a593Smuzhiyun 	uint32 sgr_rx_fifo7_read_reg0;			/* 0x664 */
207*4882a593Smuzhiyun 	uint32 sgr_rx_fifo7_read_reg1;			/* 0x668 */
208*4882a593Smuzhiyun 	uint32 sgr_rx_fifo7_read_reg2;			/* 0x66c */
209*4882a593Smuzhiyun 	uint32 sgr_rx_fifo8_read_reg0;			/* 0x670 */
210*4882a593Smuzhiyun 	uint32 sgr_rx_fifo8_read_reg1;			/* 0x674 */
211*4882a593Smuzhiyun 	uint32 sgr_rx_fifo8_read_reg2;			/* 0x678 */
212*4882a593Smuzhiyun 	uint32 sgr_rx_fifo0_read_status;		/* 0x67c */
213*4882a593Smuzhiyun 	uint32 sgr_rx_fifo1_read_status;		/* 0x680 */
214*4882a593Smuzhiyun 	uint32 sgr_rx_fifo2_read_status;		/* 0x684 */
215*4882a593Smuzhiyun 	uint32 sgr_rx_fifo3_read_status;		/* 0x688 */
216*4882a593Smuzhiyun 	uint32 sgr_rx_fifo4_read_status;		/* 0x68c */
217*4882a593Smuzhiyun 	uint32 sgr_rx_fifo5_read_status;		/* 0x690 */
218*4882a593Smuzhiyun 	uint32 sgr_rx_fifo6_read_status;		/* 0x694 */
219*4882a593Smuzhiyun 	uint32 sgr_rx_fifo7_read_status;		/* 0x698 */
220*4882a593Smuzhiyun 	uint32 sgr_rx_fifo8_read_status;		/* 0x69c */
221*4882a593Smuzhiyun 	uint32 wl_tx_fifo_data_idx_reg;			/* 0x6a0 */
222*4882a593Smuzhiyun 	uint32 wl_tx_fifo_data_reg0;			/* 0x6a4 */
223*4882a593Smuzhiyun 	uint32 wl_tx_fifo_data_reg1;			/* 0x6a8 */
224*4882a593Smuzhiyun 	uint32 wl_tx_fifo_data_reg2;			/* 0x6ac */
225*4882a593Smuzhiyun 	uint32 mac_main_core_tx_fifo_data_idx_reg;	/* 0x6b0 */
226*4882a593Smuzhiyun 	uint32 mac_main_core_tx_fifo_data_reg0;		/* 0x6b4 */
227*4882a593Smuzhiyun 	uint32 mac_main_core_tx_fifo_data_reg1;		/* 0x6b8 */
228*4882a593Smuzhiyun 	uint32 mac_main_core_tx_fifo_data_reg2;		/* 0x6bc */
229*4882a593Smuzhiyun 	uint32 mac_aux_core_tx_fifo_data_idx_reg;	/* 0x6c0 */
230*4882a593Smuzhiyun 	uint32 mac_aux_core_tx_fifo_data_reg0;		/* 0x6c4 */
231*4882a593Smuzhiyun 	uint32 mac_aux_core_tx_fifo_data_reg1;		/* 0x6c8 */
232*4882a593Smuzhiyun 	uint32 mac_aux_core_tx_fifo_data_reg2;		/* 0x6cc */
233*4882a593Smuzhiyun 	uint32 bt_tx_fifo_data_idx_reg;			/* 0x6d0 */
234*4882a593Smuzhiyun 	uint32 bt_tx_fifo_data_reg0;			/* 0x6d4 */
235*4882a593Smuzhiyun 	uint32 bt_tx_fifo_data_reg1;			/* 0x6d8 */
236*4882a593Smuzhiyun 	uint32 bt_tx_fifo_data_reg2;			/* 0x6dc */
237*4882a593Smuzhiyun 	uint32 wci2_tx_fifo_data_reg0;			/* 0x6e0 */
238*4882a593Smuzhiyun 	uint32 wci2_tx_fifo_data_reg1;			/* 0x6e4 */
239*4882a593Smuzhiyun 	uint32 sgt_tx_fifo_ctrl;			/* 0x6e8 */
240*4882a593Smuzhiyun 	uint32 sgt_fifo_status_hpri;			/* 0x6ec */
241*4882a593Smuzhiyun 	uint32 sgt_fifo_status_norm;			/* 0x6f0 */
242*4882a593Smuzhiyun 	uint32 sgt_fifo_status_lpri;			/* 0x6f4 */
243*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0x6f8, 0x7a0)];		/* 0x6f8-0x7a0 */
244*4882a593Smuzhiyun 	uint32 sg_timestamp_fifo_ctrl;			/* 0x7a4 */
245*4882a593Smuzhiyun 	uint32 sgr_timestamp_data_rx;			/* 0x7a8 */
246*4882a593Smuzhiyun 	uint32 sgr_timestamp_data_tx;			/* 0x7ac */
247*4882a593Smuzhiyun 	uint32 sgr_fifo_int_reg;			/* 0x7b0 */
248*4882a593Smuzhiyun 	uint32 sgr_fifo_int_mask_reg;			/* 0x7b4 */
249*4882a593Smuzhiyun 	uint32 sgt_fifo_int_reg;			/* 0x7b8 */
250*4882a593Smuzhiyun 	uint32 sgt_fifo_int_mask_reg;			/* 0x7bc */
251*4882a593Smuzhiyun 	uint32 sg_fifo_debug_bus;			/* 0x7c0 */
252*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0x7c4, 0xbfc)];		/* 0x7c4-0xbfc */
253*4882a593Smuzhiyun 	uint32 lhl_core_capab_adr;			/* 0xC00 */
254*4882a593Smuzhiyun 	uint32 lhl_main_ctl_adr;			/* 0xC04 */
255*4882a593Smuzhiyun 	uint32 lhl_pmu_ctl_adr;				/* 0xC08 */
256*4882a593Smuzhiyun 	uint32 lhl_extlpo_ctl_adr;			/* 0xC0C */
257*4882a593Smuzhiyun 	uint32 lpo_ctl_adr;				/* 0xC10 */
258*4882a593Smuzhiyun 	uint32 lhl_lpo2_ctl_adr;			/* 0xC14 */
259*4882a593Smuzhiyun 	uint32 lhl_osc32k_ctl_adr;			/* 0xC18 */
260*4882a593Smuzhiyun 	uint32 lhl_clk_status_adr;			/* 0xC1C */
261*4882a593Smuzhiyun 	uint32 lhl_clk_det_ctl_adr;			/* 0xC20 */
262*4882a593Smuzhiyun 	uint32 lhl_clk_sel_adr;				/* 0xC24 */
263*4882a593Smuzhiyun 	uint32 hidoff_cnt_adr[2];			/* 0xC28-0xC2C */
264*4882a593Smuzhiyun 	uint32 lhl_autoclk_ctl_adr;			/* 0xC30 */
265*4882a593Smuzhiyun 	uint32 PAD;					/* reserved */
266*4882a593Smuzhiyun 	uint32 lhl_hibtim_adr;				/* 0xC38 */
267*4882a593Smuzhiyun 	uint32 lhl_wl_ilp_val_adr;			/* 0xC3C */
268*4882a593Smuzhiyun 	uint32 lhl_wl_armtim0_intrp_adr;		/* 0xC40 */
269*4882a593Smuzhiyun 	uint32 lhl_wl_armtim0_st_adr;			/* 0xC44 */
270*4882a593Smuzhiyun 	uint32 lhl_wl_armtim0_adr;			/* 0xC48 */
271*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xc4c, 0xc6c)];		/* 0xC4C-0xC6C */
272*4882a593Smuzhiyun 	uint32 lhl_wl_mactim0_intrp_adr;		/* 0xC70 */
273*4882a593Smuzhiyun 	uint32 lhl_wl_mactim0_st_adr;			/* 0xC74 */
274*4882a593Smuzhiyun 	uint32 lhl_wl_mactim_int0_adr;			/* 0xC78 */
275*4882a593Smuzhiyun 	uint32 lhl_wl_mactim_frac0_adr;			/* 0xC7C */
276*4882a593Smuzhiyun 	uint32 lhl_wl_mactim1_intrp_adr;		/* 0xC80 */
277*4882a593Smuzhiyun 	uint32 lhl_wl_mactim1_st_adr;			/* 0xC84 */
278*4882a593Smuzhiyun 	uint32 lhl_wl_mactim_int1_adr;			/* 0xC88 */
279*4882a593Smuzhiyun 	uint32 lhl_wl_mactim_frac1_adr;			/* 0xC8C */
280*4882a593Smuzhiyun 	uint32 lhl_wl_mactim2_intrp_adr;		/* 0xC90 */
281*4882a593Smuzhiyun 	uint32 lhl_wl_mactim2_st_adr;			/* 0xC94 */
282*4882a593Smuzhiyun 	uint32 lhl_wl_mactim_int2_adr;			/* 0xC98 */
283*4882a593Smuzhiyun 	uint32 lhl_wl_mactim_frac2_adr;			/* 0xC9C */
284*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xca0, 0xcac)];		/* 0xCA0-0xCAC */
285*4882a593Smuzhiyun 	uint32 gpio_int_en_port_adr[4];			/* 0xCB0-0xCBC */
286*4882a593Smuzhiyun 	uint32 gpio_int_st_port_adr[4];			/* 0xCC0-0xCCC */
287*4882a593Smuzhiyun 	uint32 gpio_ctrl_iocfg_p_adr[40];		/* 0xCD0-0xD6C */
288*4882a593Smuzhiyun 	uint32 lhl_lp_up_ctl1_adr;			/* 0xd70 */
289*4882a593Smuzhiyun 	uint32 lhl_lp_dn_ctl1_adr;			/* 0xd74 */
290*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xd78, 0xdb4)];		/* 0xd78-0xdb4 */
291*4882a593Smuzhiyun 	uint32 lhl_sleep_timer_adr;			/* 0xDB8 */
292*4882a593Smuzhiyun 	uint32 lhl_sleep_timer_ctl_adr;			/* 0xDBC */
293*4882a593Smuzhiyun 	uint32 lhl_sleep_timer_load_val_adr;		/* 0xDC0 */
294*4882a593Smuzhiyun 	uint32 lhl_lp_main_ctl_adr;			/* 0xDC4 */
295*4882a593Smuzhiyun 	uint32 lhl_lp_up_ctl_adr;			/* 0xDC8 */
296*4882a593Smuzhiyun 	uint32 lhl_lp_dn_ctl_adr;			/* 0xDCC */
297*4882a593Smuzhiyun 	uint32 gpio_gctrl_iocfg_p0_p39_adr;		/* 0xDD0 */
298*4882a593Smuzhiyun 	uint32 gpio_gdsctrl_iocfg_p0_p25_p30_p39_adr;	/* 0xDD4 */
299*4882a593Smuzhiyun 	uint32 gpio_gdsctrl_iocfg_p26_p29_adr;		/* 0xDD8 */
300*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xddc, 0xdf8)];		/* 0xDDC-0xDF8 */
301*4882a593Smuzhiyun 	uint32 lhl_gpio_din0_adr;			/* 0xDFC */
302*4882a593Smuzhiyun 	uint32 lhl_gpio_din1_adr;			/* 0xE00 */
303*4882a593Smuzhiyun 	uint32 lhl_wkup_status_adr;			/* 0xE04 */
304*4882a593Smuzhiyun 	uint32 lhl_ctl_adr;				/* 0xE08 */
305*4882a593Smuzhiyun 	uint32 lhl_adc_ctl_adr;				/* 0xE0C */
306*4882a593Smuzhiyun 	uint32 lhl_qdxyz_in_dly_adr;			/* 0xE10 */
307*4882a593Smuzhiyun 	uint32 lhl_optctl_adr;				/* 0xE14 */
308*4882a593Smuzhiyun 	uint32 lhl_optct2_adr;				/* 0xE18 */
309*4882a593Smuzhiyun 	uint32 lhl_scanp_cntr_init_val_adr;		/* 0xE1C */
310*4882a593Smuzhiyun 	uint32 lhl_opt_togg_val_adr[6];			/* 0xE20-0xE34 */
311*4882a593Smuzhiyun 	uint32 lhl_optx_smp_val_adr;			/* 0xE38 */
312*4882a593Smuzhiyun 	uint32 lhl_opty_smp_val_adr;			/* 0xE3C */
313*4882a593Smuzhiyun 	uint32 lhl_optz_smp_val_adr;			/* 0xE40 */
314*4882a593Smuzhiyun 	uint32 lhl_hidoff_keepstate_adr[3];		/* 0xE44-0xE4C */
315*4882a593Smuzhiyun 	uint32 lhl_bt_slmboot_ctl0_adr[4];		/* 0xE50-0xE5C */
316*4882a593Smuzhiyun 	uint32 lhl_wl_fw_ctl;				/* 0xE60 */
317*4882a593Smuzhiyun 	uint32 lhl_wl_hw_ctl_adr[2];			/* 0xE64-0xE68 */
318*4882a593Smuzhiyun 	uint32 lhl_bt_hw_ctl_adr;			/* 0xE6C */
319*4882a593Smuzhiyun 	uint32 lhl_top_pwrseq_en_adr;			/* 0xE70 */
320*4882a593Smuzhiyun 	uint32 lhl_top_pwrdn_ctl_adr;			/* 0xE74 */
321*4882a593Smuzhiyun 	uint32 lhl_top_pwrup_ctl_adr;			/* 0xE78 */
322*4882a593Smuzhiyun 	uint32 lhl_top_pwrseq_ctl_adr;			/* 0xE7C */
323*4882a593Smuzhiyun 	uint32 lhl_top_pwrdn2_ctl_adr;			/* 0xE80 */
324*4882a593Smuzhiyun 	uint32 lhl_top_pwrup2_ctl_adr;			/* 0xE84 */
325*4882a593Smuzhiyun 	uint32 wpt_regon_intrp_cfg_adr;			/* 0xE88 */
326*4882a593Smuzhiyun 	uint32 bt_regon_intrp_cfg_adr;			/* 0xE8C */
327*4882a593Smuzhiyun 	uint32 wl_regon_intrp_cfg_adr;			/* 0xE90 */
328*4882a593Smuzhiyun 	uint32 regon_intrp_st_adr;			/* 0xE94 */
329*4882a593Smuzhiyun 	uint32 regon_intrp_en_adr;			/* 0xE98 */
330*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xe9c, 0xeb4)];		/* 0xe9c-0xeb4 */
331*4882a593Smuzhiyun 	uint32 lhl_lp_main_ctl1_adr;			/* 0xeb8 */
332*4882a593Smuzhiyun 	uint32 lhl_lp_up_ctl2_adr;			/* 0xebc */
333*4882a593Smuzhiyun 	uint32 lhl_lp_dn_ctl2_adr;			/* 0xec0 */
334*4882a593Smuzhiyun 	uint32 lhl_lp_up_ctl3_adr;			/* 0xec4 */
335*4882a593Smuzhiyun 	uint32 lhl_lp_dn_ctl3_adr;			/* 0xec8 */
336*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xecc, 0xed8)];		/* 0xecc-0xed8 */
337*4882a593Smuzhiyun 	uint32 lhl_lp_main_ctl2_adr;			/* 0xedc */
338*4882a593Smuzhiyun 	uint32 lhl_lp_up_ctl4_adr;			/* 0xee0 */
339*4882a593Smuzhiyun 	uint32 lhl_lp_dn_ctl4_adr;			/* 0xee4 */
340*4882a593Smuzhiyun 	uint32 lhl_lp_up_ctl5_adr;			/* 0xee8 */
341*4882a593Smuzhiyun 	uint32 lhl_lp_dn_ctl5_adr;			/* 0xeec */
342*4882a593Smuzhiyun 	uint32 lhl_top_pwrdn3_ctl_adr;			/* 0xEF0 */
343*4882a593Smuzhiyun 	uint32 lhl_top_pwrup3_ctl_adr;			/* 0xEF4 */
344*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xef8, 0xf00)];		/* 0xEF8 - 0xF00 */
345*4882a593Smuzhiyun 	uint32 error_status;				/* 0xF04 */
346*4882a593Smuzhiyun 	uint32 error_parity;				/* 0xF08 */
347*4882a593Smuzhiyun 	uint32 PAD;					/* 0xF0C */
348*4882a593Smuzhiyun 	uint32 msg_buf_0[8];				/* 0xF10 - 0xF2C */
349*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xf30, 0xf3c)];		/* 0xF30 - 0xF3C */
350*4882a593Smuzhiyun 	uint32 CTRL_REG0;				/* 0xF40 */
351*4882a593Smuzhiyun 	uint32 CTRL_REG1;				/* 0xF44 */
352*4882a593Smuzhiyun 	uint32 chipID;					/* 0xF48 */
353*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xf4c, 0xf54)];		/* 0xF4C - 0xF54 */
354*4882a593Smuzhiyun 	uint32 timestamp_mask0;				/* 0xf58 */
355*4882a593Smuzhiyun 	uint32 timestamp_mask1;				/* 0xf5c */
356*4882a593Smuzhiyun 	uint32 wl_event_rdAddress;			/* 0xF60 */
357*4882a593Smuzhiyun 	uint32 bt_event_rdAddress;			/* 0xF64 */
358*4882a593Smuzhiyun 	uint32 interrupt_Address;			/* 0xF68 */
359*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xf6c, 0xf70)];                /* 0xF6c - 0xF70 */
360*4882a593Smuzhiyun 	uint32 coex_error_status;			/* 0xF74 */
361*4882a593Smuzhiyun 	uint32 coex_error_parity;			/* 0xF78 */
362*4882a593Smuzhiyun 	uint32 PAD;					/* 0xF7C */
363*4882a593Smuzhiyun 	uint32 ar_buf_01[4];				/* 0xF80 - 0xF8C */
364*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xf90,0xfac)];			/* 0xF90 - 0xFAC */
365*4882a593Smuzhiyun 	uint32 coex_ctrl_reg0;				/* 0xFB0 */
366*4882a593Smuzhiyun 	uint32 coex_ctrl_reg1;				/* 0xFB4 */
367*4882a593Smuzhiyun 	uint32 coex_chip_id;				/* 0xFB8 */
368*4882a593Smuzhiyun 	uint32 PAD[PADSZ(0xfbc, 0xfcc)];		/* 0xFBC - 0xFCC */
369*4882a593Smuzhiyun 	uint32 coex_wl_event_rd;			/* 0xFD0 */
370*4882a593Smuzhiyun 	uint32 coex_bt_event_rd;			/* 0xFD4 */
371*4882a593Smuzhiyun 	uint32 coex_interrupt;				/* 0xFD8 */
372*4882a593Smuzhiyun 	uint32 PAD;					/* 0xFDC */
373*4882a593Smuzhiyun 	uint32 spmi_shared_reg_status_intMask_adr;	/* 0xFE0 */
374*4882a593Smuzhiyun 	uint32 spmi_shared_reg_status_intStatus_adr;	/* 0xFE4 */
375*4882a593Smuzhiyun 	uint32 spmi_shared_reg_status_wakeMask_adr;	/* 0xFE8 */
376*4882a593Smuzhiyun 	uint32 spmi_shared_event_map_idx_adr;		/* 0xFEC */
377*4882a593Smuzhiyun 	uint32 spmi_shared_event_map_data_adr;		/* 0xFF0 */
378*4882a593Smuzhiyun 	uint32 spmi_coex_event_gpr_status_adr;		/* 0xFF4 */
379*4882a593Smuzhiyun } gciregs_t;
380*4882a593Smuzhiyun 
381*4882a593Smuzhiyun #define	GCI_CAP0_REV_MASK	0x000000ff
382*4882a593Smuzhiyun 
383*4882a593Smuzhiyun /* GCI Capabilities registers */
384*4882a593Smuzhiyun #define GCI_CORE_CAP_0_COREREV_MASK			0xFF
385*4882a593Smuzhiyun #define GCI_CORE_CAP_0_COREREV_SHIFT			0
386*4882a593Smuzhiyun 
387*4882a593Smuzhiyun #define GCI_INDIRECT_ADDRESS_REG_REGINDEX_MASK		0x3F
388*4882a593Smuzhiyun #define GCI_INDIRECT_ADDRESS_REG_REGINDEX_SHIFT		0
389*4882a593Smuzhiyun #define GCI_INDIRECT_ADDRESS_REG_GPIOINDEX_MASK		0xF
390*4882a593Smuzhiyun #define GCI_INDIRECT_ADDRESS_REG_GPIOINDEX_SHIFT	16
391*4882a593Smuzhiyun 
392*4882a593Smuzhiyun #define WLAN_BANKX_SLEEPPDA_REG_SLEEPPDA_MASK		0xFFFF
393*4882a593Smuzhiyun 
394*4882a593Smuzhiyun #define WLAN_BANKX_PKILL_REG_SLEEPPDA_MASK		0x1
395*4882a593Smuzhiyun 
396*4882a593Smuzhiyun /* WLAN BankXInfo Register */
397*4882a593Smuzhiyun #define WLAN_BANKXINFO_BANK_SIZE_MASK			0x00FFF000
398*4882a593Smuzhiyun #define WLAN_BANKXINFO_BANK_SIZE_SHIFT			12
399*4882a593Smuzhiyun 
400*4882a593Smuzhiyun /* WLAN Mem Info Register */
401*4882a593Smuzhiyun #define WLAN_MEM_INFO_REG_NUMSOCRAMBANKS_MASK		0x000000FF
402*4882a593Smuzhiyun #define WLAN_MEM_INFO_REG_NUMSOCRAMBANKS_SHIFT		0
403*4882a593Smuzhiyun 
404*4882a593Smuzhiyun #define WLAN_MEM_INFO_REG_NUMD11MACBM_MASK		0x0000FF00
405*4882a593Smuzhiyun #define WLAN_MEM_INFO_REG_NUMD11MACBM_SHIFT		8
406*4882a593Smuzhiyun 
407*4882a593Smuzhiyun #define WLAN_MEM_INFO_REG_NUMD11MACUCM_MASK		0x00FF0000
408*4882a593Smuzhiyun #define WLAN_MEM_INFO_REG_NUMD11MACUCM_SHIFT		16
409*4882a593Smuzhiyun 
410*4882a593Smuzhiyun #define WLAN_MEM_INFO_REG_NUMD11MACSHM_MASK		0xFF000000
411*4882a593Smuzhiyun #define WLAN_MEM_INFO_REG_NUMD11MACSHM_SHIFT		24
412*4882a593Smuzhiyun 
413*4882a593Smuzhiyun /* GCI chip status register 9 */
414*4882a593Smuzhiyun #define GCI_CST9_SCAN_DIS	(1u << 31u)	/* scan core disable */
415*4882a593Smuzhiyun 
416*4882a593Smuzhiyun /* GCI Output register indices */
417*4882a593Smuzhiyun #define GCI_OUTPUT_IDX_0	0
418*4882a593Smuzhiyun #define GCI_OUTPUT_IDX_1	1
419*4882a593Smuzhiyun #define GCI_OUTPUT_IDX_2	2
420*4882a593Smuzhiyun #define GCI_OUTPUT_IDX_3	3
421*4882a593Smuzhiyun 
422*4882a593Smuzhiyun #endif /* !_LANGUAGE_ASSEMBLY && !__ASSEMBLY__ */
423*4882a593Smuzhiyun 
424*4882a593Smuzhiyun #endif	/* _SBGCI_H */
425