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