/*
 * SiliconBackplane GCI core hardware definitions
 *
 * Copyright (C) 1999-2019, Broadcom.
 *
 *      Unless you and Broadcom execute a separate written software license
 * agreement governing use of this software, this software is licensed to you
 * under the terms of the GNU General Public License version 2 (the "GPL"),
 * available at http://www.broadcom.com/licenses/GPLv2.php, with the
 * following added to such license:
 *
 *      As a special exception, the copyright holders of this software give you
 * permission to link this software with independent modules, and to copy and
 * distribute the resulting executable under terms of your choice, provided that
 * you also meet, for each linked independent module, the terms and conditions of
 * the license of that module.  An independent module is a module which is not
 * derived from this software.  The special exception does not apply to any
 * modifications of the software.
 *
 *      Notwithstanding the above, under no circumstances may you combine this
 * software in any way with any other Broadcom software provided under a license
 * other than the GPL, without Broadcom's express prior written consent.
 *
 *
 * <<Broadcom-WL-IPTag/Open:>>
 *
 * $Id: sbgci.h 696881 2017-04-28 17:20:35Z $
 */

#ifndef _SBGCI_H
#define _SBGCI_H

#include <bcmutils.h>

#if !defined(_LANGUAGE_ASSEMBLY) && !defined(__ASSEMBLY__)

/* cpp contortions to concatenate w/arg prescan */
#ifndef PAD
#define	_PADLINE(line)	pad ## line
#define	_XSTR(line)	_PADLINE(line)
#define	PAD		_XSTR(__LINE__)
#endif	/* PAD */

#define GCI_OFFSETOF(sih, reg) \
	(AOB_ENAB(sih) ? OFFSETOF(gciregs_t, reg) : OFFSETOF(chipcregs_t, reg))
#define GCI_CORE_IDX(sih) (AOB_ENAB(sih) ? si_findcoreidx(sih, GCI_CORE_ID, 0) : SI_CC_IDX)

typedef volatile struct {
	uint32 gci_corecaps0;				/* 0x000 */
	uint32 gci_corecaps1;				/* 0x004 */
	uint32 gci_corecaps2;				/* 0x008 */
	uint32 gci_corectrl;				/* 0x00c */
	uint32 gci_corestat;				/* 0x010 */
	uint32 gci_intstat;				/* 0x014 */
	uint32 gci_intmask;				/* 0x018 */
	uint32 gci_wakemask;				/* 0x01c */
	uint32 gci_levelintstat;			/* 0x020 */
	uint32 gci_eventintstat;			/* 0x024 */
	uint32 gci_wakelevelintstat;			/* 0x028 */
	uint32 gci_wakeeventintstat;			/* 0x02c */
	uint32 semaphoreintstatus;			/* 0x030 */
	uint32 semaphoreintmask;			/* 0x034 */
	uint32 semaphorerequest;			/* 0x038 */
	uint32 semaphorereserve;			/* 0x03c */
	uint32 gci_indirect_addr;			/* 0x040 */
	uint32 gci_gpioctl;				/* 0x044 */
	uint32 gci_gpiostatus;				/* 0x048 */
	uint32 gci_gpiomask;				/* 0x04c */
	uint32 gci_eventsummary;			/* 0x050 */
	uint32 gci_miscctl;				/* 0x054 */
	uint32 gci_gpiointmask;				/* 0x058 */
	uint32 gci_gpiowakemask;			/* 0x05c */
	uint32 gci_input[32];				/* 0x060 */
	uint32 gci_event[32];				/* 0x0e0 */
	uint32 gci_output[4];				/* 0x160 */
	uint32 gci_control_0;				/* 0x170 */
	uint32 gci_control_1;				/* 0x174 */
	uint32 gci_intpolreg;				/* 0x178 */
	uint32 gci_levelintmask;			/* 0x17c */
	uint32 gci_eventintmask;			/* 0x180 */
	uint32 wakelevelintmask;			/* 0x184 */
	uint32 wakeeventintmask;			/* 0x188 */
	uint32 hwmask;					/* 0x18c */
	uint32 PAD;
	uint32 gci_inbandeventintmask;			/* 0x194 */
	uint32 PAD;
	uint32 gci_inbandeventstatus;			/* 0x19c */
	uint32 gci_seciauxtx;				/* 0x1a0 */
	uint32 gci_seciauxrx;				/* 0x1a4 */
	uint32 gci_secitx_datatag;			/* 0x1a8 */
	uint32 gci_secirx_datatag;			/* 0x1ac */
	uint32 gci_secitx_datamask;			/* 0x1b0 */
	uint32 gci_seciusef0tx_reg;			/* 0x1b4 */
	uint32 gci_secif0tx_offset;			/* 0x1b8 */
	uint32 gci_secif0rx_offset;			/* 0x1bc */
	uint32 gci_secif1tx_offset;			/* 0x1c0 */
	uint32 gci_rxfifo_common_ctrl;			/* 0x1c4 */
	uint32 gci_rxfifoctrl;				/* 0x1c8 */
	uint32 gci_hw_sema_status;			/* 0x1cc */
	uint32 gci_seciuartescval;			/* 0x1d0 */
	uint32 gic_seciuartautobaudctr;			/* 0x1d4 */
	uint32 gci_secififolevel;			/* 0x1d8 */
	uint32 gci_seciuartdata;			/* 0x1dc */
	uint32 gci_secibauddiv;				/* 0x1e0 */
	uint32 gci_secifcr;				/* 0x1e4 */
	uint32 gci_secilcr;				/* 0x1e8 */
	uint32 gci_secimcr;				/* 0x1ec */
	uint32 gci_secilsr;				/* 0x1f0 */
	uint32 gci_secimsr;				/* 0x1f4 */
	uint32 gci_baudadj;				/* 0x1f8 */
	uint32 gci_inbandintmask;			/* 0x1fc */
	uint32 gci_chipctrl;				/* 0x200 */
	uint32 gci_chipsts;				/* 0x204 */
	uint32 gci_gpioout;				/* 0x208 */
	uint32 gci_gpioout_read;			/* 0x20C */
	uint32 gci_mpwaketx;				/* 0x210 */
	uint32 gci_mpwakedetect;			/* 0x214 */
	uint32 gci_seciin_ctrl;				/* 0x218 */
	uint32 gci_seciout_ctrl;			/* 0x21C */
	uint32 gci_seciin_auxfifo_en;			/* 0x220 */
	uint32 gci_seciout_txen_txbr;			/* 0x224 */
	uint32 gci_seciin_rxbrstatus;			/* 0x228 */
	uint32 gci_seciin_rxerrstatus;			/* 0x22C */
	uint32 gci_seciin_fcstatus;			/* 0x230 */
	uint32 gci_seciout_txstatus;			/* 0x234 */
	uint32 gci_seciout_txbrstatus;			/* 0x238 */
	uint32 wlan_mem_info;				/* 0x23C */
	uint32 wlan_bankxinfo;				/* 0x240 */
	uint32 bt_smem_select;				/* 0x244 */
	uint32 bt_smem_stby;				/* 0x248 */
	uint32 bt_smem_status;				/* 0x24C */
	uint32 wlan_bankxactivepda;			/* 0x250 */
	uint32 wlan_bankxsleeppda;			/* 0x254 */
	uint32 wlan_bankxkill;				/* 0x258 */
	uint32 PAD[PADSZ(0x25c, 0x268)];		/* 0x25c-0x268 */
	uint32 bt_smem_control0;			/* 0x26C */
	uint32 bt_smem_control1;			/* 0x270 */
	uint32 PAD[PADSZ(0x274, 0x2fc)];		/* 0x274-0x2fc */
	uint32 gci_chipid;				/* 0x300 */
	uint32 PAD[PADSZ(0x304, 0x30c)];		/* 0x304-0x30c */
	uint32 otpstatus;				/* 0x310 */
	uint32 otpcontrol;				/* 0x314 */
	uint32 otpprog;					/* 0x318 */
	uint32 otplayout;				/* 0x31c */
	uint32 otplayoutextension;			/* 0x320 */
	uint32 otpcontrol1;				/* 0x324 */
	uint32 otpprogdata;				/* 0x328 */
	uint32 PAD[PADSZ(0x32c, 0x3f8)];		/* 0x32c-0x3f8 */
	uint32 otpECCstatus;				/* 0x3FC */
	uint32 PAD[PADSZ(0x400, 0xbfc)];		/* 0x400-0xbfc */
	uint32 lhl_core_capab_adr;			/* 0xC00 */
	uint32 lhl_main_ctl_adr;			/* 0xC04 */
	uint32 lhl_pmu_ctl_adr;				/* 0xC08 */
	uint32 lhl_extlpo_ctl_adr;			/* 0xC0C */
	uint32 lpo_ctl_adr;				/* 0xC10 */
	uint32 lhl_lpo2_ctl_adr;			/* 0xC14 */
	uint32 lhl_osc32k_ctl_adr;			/* 0xC18 */
	uint32 lhl_clk_status_adr;			/* 0xC1C */
	uint32 lhl_clk_det_ctl_adr;			/* 0xC20 */
	uint32 lhl_clk_sel_adr;				/* 0xC24 */
	uint32 hidoff_cnt_adr[2];			/* 0xC28-0xC2C */
	uint32 lhl_autoclk_ctl_adr;			/* 0xC30 */
	uint32 PAD;					/* reserved */
	uint32 lhl_hibtim_adr;				/* 0xC38 */
	uint32 lhl_wl_ilp_val_adr;			/* 0xC3C */
	uint32 lhl_wl_armtim0_intrp_adr;		/* 0xC40 */
	uint32 lhl_wl_armtim0_st_adr;			/* 0xC44 */
	uint32 lhl_wl_armtim0_adr;			/* 0xC48 */
	uint32 PAD[PADSZ(0xc4c, 0xc6c)];		/* 0xC4C-0xC6C */
	uint32 lhl_wl_mactim0_intrp_adr;		/* 0xC70 */
	uint32 lhl_wl_mactim0_st_adr;			/* 0xC74 */
	uint32 lhl_wl_mactim_int0_adr;			/* 0xC78 */
	uint32 lhl_wl_mactim_frac0_adr;			/* 0xC7C */
	uint32 lhl_wl_mactim1_intrp_adr;		/* 0xC80 */
	uint32 lhl_wl_mactim1_st_adr;			/* 0xC84 */
	uint32 lhl_wl_mactim_int1_adr;			/* 0xC88 */
	uint32 lhl_wl_mactim_frac1_adr;			/* 0xC8C */
	uint32 PAD[PADSZ(0xc90, 0xcac)];		/* 0xC90-0xCAC */
	uint32 gpio_int_en_port_adr[4];			/* 0xCB0-0xCBC */
	uint32 gpio_int_st_port_adr[4];			/* 0xCC0-0xCCC */
	uint32 gpio_ctrl_iocfg_p_adr[40];		/* 0xCD0-0xD6C */
	uint32 lhl_lp_up_ctl1_adr;			/* 0xd70 */
	uint32 lhl_lp_dn_ctl1_adr;			/* 0xd74 */
	uint32 PAD[PADSZ(0xd78, 0xdb4)];		/* 0xd78-0xdb4 */
	uint32 lhl_sleep_timer_adr;			/* 0xDB8 */
	uint32 lhl_sleep_timer_ctl_adr;			/* 0xDBC */
	uint32 lhl_sleep_timer_load_val_adr;		/* 0xDC0 */
	uint32 lhl_lp_main_ctl_adr;			/* 0xDC4 */
	uint32 lhl_lp_up_ctl_adr;			/* 0xDC8 */
	uint32 lhl_lp_dn_ctl_adr;			/* 0xDCC */
	uint32 gpio_gctrl_iocfg_p0_p39_adr;		/* 0xDD0 */
	uint32 gpio_gdsctrl_iocfg_p0_p25_p30_p39_adr;	/* 0xDD4 */
	uint32 gpio_gdsctrl_iocfg_p26_p29_adr;		/* 0xDD8 */
	uint32 PAD[PADSZ(0xddc, 0xdf8)];		/* 0xDDC-0xDF8 */
	uint32 lhl_gpio_din0_adr;			/* 0xDFC */
	uint32 lhl_gpio_din1_adr;			/* 0xE00 */
	uint32 lhl_wkup_status_adr;			/* 0xE04 */
	uint32 lhl_ctl_adr;				/* 0xE08 */
	uint32 lhl_adc_ctl_adr;				/* 0xE0C */
	uint32 lhl_qdxyz_in_dly_adr;			/* 0xE10 */
	uint32 lhl_optctl_adr;				/* 0xE14 */
	uint32 lhl_optct2_adr;				/* 0xE18 */
	uint32 lhl_scanp_cntr_init_val_adr;		/* 0xE1C */
	uint32 lhl_opt_togg_val_adr[6];			/* 0xE20-0xE34 */
	uint32 lhl_optx_smp_val_adr;			/* 0xE38 */
	uint32 lhl_opty_smp_val_adr;			/* 0xE3C */
	uint32 lhl_optz_smp_val_adr;			/* 0xE40 */
	uint32 lhl_hidoff_keepstate_adr[3];		/* 0xE44-0xE4C */
	uint32 lhl_bt_slmboot_ctl0_adr[4];		/* 0xE50-0xE5C */
	uint32 lhl_wl_fw_ctl;				/* 0xE60 */
	uint32 lhl_wl_hw_ctl_adr[2];			/* 0xE64-0xE68 */
	uint32 lhl_bt_hw_ctl_adr;			/* 0xE6C */
	uint32 lhl_top_pwrseq_en_adr;			/* 0xE70 */
	uint32 lhl_top_pwrdn_ctl_adr;			/* 0xE74 */
	uint32 lhl_top_pwrup_ctl_adr;			/* 0xE78 */
	uint32 lhl_top_pwrseq_ctl_adr;			/* 0xE7C */
	uint32 lhl_top_pwrdn2_ctl_adr;			/* 0xE80 */
	uint32 lhl_top_pwrup2_ctl_adr;			/* 0xE84 */
	uint32 wpt_regon_intrp_cfg_adr;			/* 0xE88 */
	uint32 bt_regon_intrp_cfg_adr;			/* 0xE8C */
	uint32 wl_regon_intrp_cfg_adr;			/* 0xE90 */
	uint32 regon_intrp_st_adr;			/* 0xE94 */
	uint32 regon_intrp_en_adr;			/* 0xE98 */
	uint32 PAD[PADSZ(0xe9c, 0xeb4)];		/* 0xe9c-0xeb4 */
	uint32 lhl_lp_main_ctl1_adr;			/* 0xeb8 */
	uint32 lhl_lp_up_ctl2_adr;			/* 0xebc */
	uint32 lhl_lp_dn_ctl2_adr;			/* 0xec0 */
	uint32 lhl_lp_up_ctl3_adr;			/* 0xec4 */
	uint32 lhl_lp_dn_ctl3_adr;			/* 0xec8 */
	uint32 PAD[PADSZ(0xecc, 0xed8)];		/* 0xecc-0xed8 */
	uint32 lhl_lp_main_ctl2_adr;			/* 0xedc */
	uint32 lhl_lp_up_ctl4_adr;			/* 0xee0 */
	uint32 lhl_lp_dn_ctl4_adr;			/* 0xee4 */
	uint32 lhl_lp_up_ctl5_adr;			/* 0xee8 */
	uint32 lhl_lp_dn_ctl5_adr;			/* 0xeec */

} gciregs_t;

#define	GCI_CAP0_REV_MASK	0x000000ff

/* GCI Capabilities registers */
#define GCI_CORE_CAP_0_COREREV_MASK			0xFF
#define GCI_CORE_CAP_0_COREREV_SHIFT			0

#define GCI_INDIRECT_ADDRESS_REG_REGINDEX_MASK		0x3F
#define GCI_INDIRECT_ADDRESS_REG_REGINDEX_SHIFT		0
#define GCI_INDIRECT_ADDRESS_REG_GPIOINDEX_MASK		0xF
#define GCI_INDIRECT_ADDRESS_REG_GPIOINDEX_SHIFT	16

#define WLAN_BANKX_SLEEPPDA_REG_SLEEPPDA_MASK		0xFFFF

#define WLAN_BANKX_PKILL_REG_SLEEPPDA_MASK		0x1

/* WLAN BankXInfo Register */
#define WLAN_BANKXINFO_BANK_SIZE_MASK			0x00FFF000
#define WLAN_BANKXINFO_BANK_SIZE_SHIFT			12

/* WLAN Mem Info Register */
#define WLAN_MEM_INFO_REG_NUMSOCRAMBANKS_MASK		0x000000FF
#define WLAN_MEM_INFO_REG_NUMSOCRAMBANKS_SHIFT		0

#define WLAN_MEM_INFO_REG_NUMD11MACBM_MASK		0x0000FF00
#define WLAN_MEM_INFO_REG_NUMD11MACBM_SHIFT		8

#define WLAN_MEM_INFO_REG_NUMD11MACUCM_MASK		0x00FF0000
#define WLAN_MEM_INFO_REG_NUMD11MACUCM_SHIFT		16

#define WLAN_MEM_INFO_REG_NUMD11MACSHM_MASK		0xFF000000
#define WLAN_MEM_INFO_REG_NUMD11MACSHM_SHIFT		24

#endif /* !_LANGUAGE_ASSEMBLY && !__ASSEMBLY__ */

#endif	/* _SBGCI_H */
