kernel_samsung_a53x/drivers/misc/samsung/scsc/mif_reg_S5E9815.h
2024-06-15 16:02:09 -03:00

293 lines
12 KiB
C
Executable file

/****************************************************************************
*
* Copyright (c) 2014 - 2020 Samsung Electronics Co., Ltd. All rights reserved
*
****************************************************************************/
#ifndef __MIF_REG_9815_H
#define __MIF_REG_9815_H
/*********************************/
/* PLATFORM register definitions */
/*********************************/
#define NUM_MBOX_PLAT 4
#define NUM_SEMAPHORE 12
/********************************************/
/* MAILBOX_AP_WLBT_BASE 0x109F0000 */
/********************************************/
#define MCUCTRL 0x000 /* MCU Controller Register */
#define MAILBOX_WLBT_BASE 0x0000
#define MAILBOX_WLBT_REG(r) (MAILBOX_WLBT_BASE + (r))
/* WLBT to AP */
#define INTGR0 0x008 /* Interrupt Generation Register 0 (r/w) */
#define INTCR0 0x00C /* Interrupt Clear Register 0 (w) */
#define INTMR0 0x010 /* Interrupt Mask Register 0 (r/w) */
#define INTSR0 0x014 /* Interrupt Status Register 0 (r) */
#define INTMSR0 0x018 /* Interrupt Mask Status Register 0 (r) */
/* AP to WLBT */
#define INTGR1 0x01c /* Interrupt Generation Register 1 */
#define INTCR1 0x020 /* Interrupt Clear Register 1 */
#define INTMR1 0x024 /* Interrupt Mask Register 1 */
#define INTSR1 0x028 /* Interrupt Status Register 1 */
#define INTMSR1 0x02c /* Interrupt Mask Status Register 1 */
/* Shared register */
#define ISSR_BASE 0x100 /* IS_Shared_Register Base address */
#define ISSR(r) (ISSR_BASE + (4 * (r)))
#define MIF_INIT 0x06c /* MIF_init */
#define IS_VERSION 0x070 /* Version Information Register */
/********************************************/
/* END MAILBOX_AP_WLBT_BASE 0x109F0000 */
/********************************************/
/********************************************/
/* PMU_ALIVE_BASE 0x10860000 */
/********************************************/
#define WLBT_STAT 0x0058
#define WLBT_PWRDN_DONE BIT(0) /* Check WLBT power-down status.*/
#define WLBT_ACCESS_MIF BIT(4) /* Check whether WLBT accesses MIF domain */
#define WLBT_DEBUG 0x005C /* MIF sleep, wakeup debugging control */
#define MASK_CLKREQ_WLBT BIT(8) /* When this field is set to HIGH, ALIVE ignores
* CLKREQ from WLBT.
*/
#define WLBT_CONFIGURATION 0x3900
#define LOCAL_PWR_CFG BIT(0) /* Control power state 0: Power down 1: Power on */
#define WLBT_STATUS 0x3904
#define WLBT_STATUS_BIT0 BIT(0) /* Status 0 : Power down 1 : Power on */
#define WLBT_STATES 0x3908 /* STATES [7:0] States index for debugging
* 0x00 : Reset
* 0x10 : Power up
* 0x80 : Power down
* */
#define WLBT_OPTION 0x390C
#define WLBT_OPTION_DATA BIT(3)
#define WLBT_CTRL_NS 0x3910
#define WLBT_ACTIVE_CLR BIT(8) /* WLBT_ACTIVE_REQ is clear internally on WAKEUP */
#define WLBT_ACTIVE_EN BIT(7) /* Enable of WIFI_ACTIVE_REQ */
#define SW_TCXO_REQ BIT(6) /* SW TCXO Request register, if MASK_TCXO_REQ
* filed value is 1, This register value control TCXO Request*/
#define MASK_TCXO_REQ BIT(5) /* 1:mask TCXO_REQ coming from CP,
* 0:enable request source
*/
#define TCXO_GATE BIT(4) /* TCXO gate control 0: TCXO enabled 1: TCXO gated */
#define RTC_OUT_EN BIT(0) /* RTC output enable 0:Disable 1:Enable */
#define WLBT_CTRL_S 0x3914 /* WLBT Control SFR secure */
#define WLBT_START BIT(3) /* CP control enable 0: Disable 1: Enable */
#define WLBT_OUT 0x3920
#define INISO_EN BIT(19)
#define TCXO_ACK BIT(18)
#define PWR_ACK BIT(17)
#define INTREQ_ACTIVE BIT(14)
#define SWEEPER_BYPASS BIT(13) /* SWEEPER bypass mode control(WLBT2AP path) If
* this bit is set to 1, SWEEPER is bypass mode.
*/
#define SWEEPER_PND_CLR_REQ BIT(7) /* SWEEPER_CLEAN Request. SWPPER is the IP
* that can clean up hung transaction in the Long hop
* async Bus Interface, when <SUBSYS> get hung
* state. 0: Normal 1: SWEEPER CLEAN Requested
*/
#define WLBT_IN 0x3924
#define SHIFTING_DONE_OTP_BLK BIT(5) /* OTP shifting controls feedback 0:None 1:Shifting done */
#define BUS_READY BIT(4) /* BUS ready indication signal when reset released. 0:
* Normal 1: BUS ready state */
#define PWRDOWN_IND BIT(2) /* PWRDOWN state indication 0: Normal 1: In the
* power down state */
#define SWEEPER_PND_CLR_ACK BIT(0) /* SWEEPER_CLEAN ACK signal. SWPPER is the IP
* that can clean up hung transaction in the Long hop
* async Bus Interface, when <SUBSYS> get hung
* state. 0: Normal 1: SWEEPER CLEAN
* Acknowledged */
#define WLBT_INT_IN 0x3940
#define PWR_REQ_R BIT(2)
#define PWR_REQ_F BIT(3)
#define TCXO_REQ_R BIT(4)
#define TCXO_REQ_F BIT(5)
#define WLBT_INT_EN 0x3944
#define WLBT_INT_TYPE 0x3948
#define WLBT_INT_DIR 0x394c
/* TODO: check if this is needed in Orange */
#define WAKEUP_INT_IN 0x3c40
#define WAKEUP_INT_EN 0x3c44
#define WAKEUP_INT_TYPE 0x3c48
#define RESETREQ_WLBT BIT(18) /* Interrupt type 0:Edge, 1:Level */
/* New access type : set-bit-atomic
* write at Base_addr + (offset|0xc0000) "value"
* then only Base_addr+offset's "value" bit will be updated.
* changed method from 'write' to 'set-bit-atomic'
* Add SYSTEM_OUT_ATOMIC for (offset|0xC000)
* updated PWRRGTON_WLBT BIT(27) -> 0x1B (27)
*/
#define SYSTEM_OUT 0x3d20
#define SYSTEM_OUT_ATOMIC_CMD ((SYSTEM_OUT) | (0xC000))
#define PWRRGTON_WLBT_CMD 0x1B /* 27 for update 27th bit */
/********************************************/
/* END PMU_ALIVE_BASE 0x10860000 */
/********************************************/
/********************************************/
/* PBUS_BASE 0x15A00000 */
/********************************************/
#define PADDR_WLBT_PBUS_BASE 0x00000
/*********************************/
/*********************************/
#define WLBT_PBUS_D_TZPC_SFR 0x10000
/*********************************/
/*********************************/
/* REGISTERS */
#define WLBT_PBUS_BAAW_DBUS 0x0
#define BAAW_D_WLBT_START ((WLBT_PBUS_BAAW_DBUS) + 0x0)
#define BAAW_D_WLBT_END ((WLBT_PBUS_BAAW_DBUS) + 0x4)
#define BAAW_D_WLBT_REMAP ((WLBT_PBUS_BAAW_DBUS) + 0x8)
#define BAAW_D_WLBT_INIT_DONE ((WLBT_PBUS_BAAW_DBUS) + 0xc)
/* VALUES */
#define WLBT_DBUS_BAAW_0_START 0x80000000 /* Start of DRAM for WLBT R7 */
#if IS_ENABLED(CONFIG_SCSC_MEMLOG)
#define WLBT_DBUS_BAAW_0_END 0x80800000 /* 8 MB */
#define WLBT_DBUS_BAAW_1_START (WLBT_DBUS_BAAW_0_END) /* Start of DRAM for sable */
#define WLBT_DBUS_BAAW_1_END (WLBT_DBUS_BAAW_1_START + 0x800000) /* 8MB */
#else
#define WLBT_DBUS_BAAW_0_END 0x81000000
#endif
/* TODO document says SET only 0 bit 0xC init done */
#define WLBT_BAAW_CON_INIT_DONE (1 << 31)
#define WLBT_BAAW_CON_EN_WRITE (1 << 1)
#define WLBT_BAAW_CON_EN_READ (1 << 0)
#define WLBT_BAAW_ACCESS_CTRL (WLBT_BAAW_CON_INIT_DONE | WLBT_BAAW_CON_EN_WRITE | WLBT_BAAW_CON_EN_READ)
/*********************************/
/*********************************/
#define WLBT_PBUS_BAAW_CBUS 0x0
/* REGISTERS WLBT_PBUS_BAAW_CBUS0 */
#define BAAW_C_WLBT_START_0 ((WLBT_PBUS_BAAW_CBUS) + 0x00)
#define BAAW_C_WLBT_END_0 ((WLBT_PBUS_BAAW_CBUS) + 0x04)
#define BAAW_C_WLBT_REMAP_0 ((WLBT_PBUS_BAAW_CBUS) + 0x08)
#define BAAW_C_WLBT_INIT_DONE_0 ((WLBT_PBUS_BAAW_CBUS) + 0x0c)
/* VALUES */
#define WLBT_MAILBOX_CP_WLBT_BASE 0x10A20000
#define WLBT_CBUS_BAAW_0_START 0xA0000000 /* APM_BAAW0: CP */
#define WLBT_CBUS_BAAW_0_END 0xA0010000
/* REGISTERS WLBT_PBUS_BAAW_CBUS1 */
#define BAAW_C_WLBT_START_1 ((WLBT_PBUS_BAAW_CBUS) + 0x10)
#define BAAW_C_WLBT_END_1 ((WLBT_PBUS_BAAW_CBUS) + 0x14)
#define BAAW_C_WLBT_REMAP_1 ((WLBT_PBUS_BAAW_CBUS) + 0x18)
#define BAAW_C_WLBT_INIT_DONE_1 ((WLBT_PBUS_BAAW_CBUS) + 0x1c)
/* VALUES */
#define WLBT_MAILBOX_WLBT_CHUB_BASE 0x109D0000
#define WLBT_CBUS_BAAW_1_START 0xA0010000 /* APM_BAAW1: CHUB, ABOX, AP, APM, GNSS*/
#define WLBT_CBUS_BAAW_1_END 0xA0060000 /* REGISTERS WLBT_PBUS_BAAW_CBUS2 */
/* REGISTERS WLBT_PBUS_BAAW_CBUS2 */
#define BAAW_C_WLBT_START_2 ((WLBT_PBUS_BAAW_CBUS) + 0x20)
#define BAAW_C_WLBT_END_2 ((WLBT_PBUS_BAAW_CBUS) + 0x24)
#define BAAW_C_WLBT_REMAP_2 ((WLBT_PBUS_BAAW_CBUS) + 0x28)
#define BAAW_C_WLBT_INIT_DONE_2 ((WLBT_PBUS_BAAW_CBUS) + 0x2c)
/* VALUES */
#define WLBT_GPIO_CMGP_BASE 0x11C30000
#define WLBT_CBUS_BAAW_2_START 0xA0060000 /* APM BAAW2: GPIO_CMGP */
#define WLBT_CBUS_BAAW_2_END 0xA0070000 /* REGISTERS WLBT_PBUS_BAAW_CBUS3 */
/* REGISTERS WLBT_PBUS_BAAW_CBUS3 */
#define BAAW_C_WLBT_START_3 ((WLBT_PBUS_BAAW_CBUS) + 0x30)
#define BAAW_C_WLBT_END_3 ((WLBT_PBUS_BAAW_CBUS) + 0x34)
#define BAAW_C_WLBT_REMAP_3 ((WLBT_PBUS_BAAW_CBUS) + 0x38)
#define BAAW_C_WLBT_INIT_DONE_3 ((WLBT_PBUS_BAAW_CBUS) + 0x3c)
/* VALUES */
#define WLBT_SYSREG_CMGP2APM_BASE 0x11C60000
#define WLBT_CBUS_BAAW_3_START 0xA0070000 /* APM BAAW3: CMGP2PMU_APM , PMU_AP, CP, CHUB, GNSS */
#define WLBT_CBUS_BAAW_3_END 0xA00C0000 /* REGISTERS WLBT_PBUS_BAAW_CBUS4 */
/* REGISTERS WLBT_PBUS_BAAW_CBUS4 */
#define BAAW_C_WLBT_START_4 ((WLBT_PBUS_BAAW_CBUS) + 0x40)
#define BAAW_C_WLBT_END_4 ((WLBT_PBUS_BAAW_CBUS) + 0x44)
#define BAAW_C_WLBT_REMAP_4 ((WLBT_PBUS_BAAW_CBUS) + 0x48)
#define BAAW_C_WLBT_INIT_DONE_4 ((WLBT_PBUS_BAAW_CBUS) + 0x4c)
/* VALUES */
#define WLBT_SYSREG_CMGP2WLBT_BASE 0x11CB0000
#define WLBT_CBUS_BAAW_4_START 0xA00C0000 /* APM BAAW4: CMGP2WLBT */
#define WLBT_CBUS_BAAW_4_END 0xA00D0000 /* REGISTERS WLBT_PBUS_BAAW_CBUS5 */
/* REGISTERS WLBT_PBUS_BAAW_CBUS5 */
#define BAAW_C_WLBT_START_5 ((WLBT_PBUS_BAAW_CBUS) + 0x50)
#define BAAW_C_WLBT_END_5 ((WLBT_PBUS_BAAW_CBUS) + 0x54)
#define BAAW_C_WLBT_REMAP_5 ((WLBT_PBUS_BAAW_CBUS) + 0x58)
#define BAAW_C_WLBT_INIT_DONE_5 ((WLBT_PBUS_BAAW_CBUS) + 0x5c)
/* VALUES */
#define WLBT_SHUB_USICHUB0_BASE 0x11270000 //Orange3:0xA0 todo SCSC
#define WLBT_CBUS_BAAW_5_START 0xA00D0000 /* APM BAAW5: USI_CHUB0 */
#define WLBT_CBUS_BAAW_5_END 0xA0190000
/* REGISTERS WLBT_PBUS_BAAW_CBUS6 */
#define BAAW_C_WLBT_START_6 ((WLBT_PBUS_BAAW_CBUS) + 0x60)
#define BAAW_C_WLBT_END_6 ((WLBT_PBUS_BAAW_CBUS) + 0x64)
#define BAAW_C_WLBT_REMAP_6 ((WLBT_PBUS_BAAW_CBUS) + 0x68)
#define BAAW_C_WLBT_INIT_DONE_6 ((WLBT_PBUS_BAAW_CBUS) + 0x6c)
/* VALUES */
#define WLBT_SHUB_BASE 0x11300000 //Orange3:0xA0 todo SCSC
#define WLBT_CBUS_BAAW_6_START 0xA0190000 /* APM BAAW5: CHUB INSR ?????? */
#define WLBT_CBUS_BAAW_6_END 0xA01C0000
/*********************************/
/*********************************/
#define WLBT_PBUS_SMAPPER 0x40000
/*********************************/
/*********************************/
#define WLBT_PBUS_SYSREG 0x0
#define PROC_RMP_BOOT ((WLBT_PBUS_SYSREG) + 0x0400)
#define CHIP_VERSION_ID_OFFSET ((WLBT_PBUS_SYSREG) + 0x0410)
#define CHIP_VERSION_ID_VER_MASK 0xFFFFFFFF /* [00:31] Version ID */
#define CHIP_VERSION_ID_IP_PMU 0x0000F000 /* [12:15] PMU ROM Rev */
#define CHIP_VERSION_ID_IP_MINOR 0x000F0000 /* [16:19] Minor Rev */
#define CHIP_VERSION_ID_IP_MAJOR 0x00F00000 /* [20:23] Major Rev */
#define CHIP_VERSION_ID_IP_PMU_SHIFT 12
#define CHIP_VERSION_ID_IP_MINOR_SHIFT 16
#define CHIP_VERSION_ID_IP_MAJOR_SHIFT 20
/*********************************/
/*********************************/
#define WLBT_PBUS_BOOT 0x0
#define PMU_BOOT (WLBT_PBUS_BOOT + 0x0000)
#define PMU_BOOT_PMU_ACC 0x0 /* PMU has access to KARAM */
#define PMU_BOOT_AP_ACC 0x1 /* AP has access to KARAM */
#define PMU_BOOT_ACK (WLBT_PBUS_BOOT + 0x0004)
#define PMU_BOOT_COMPLETE 0x1 /* Boot ACK complete */
#define PMU_BOOT_RAM_START (WLBT_PBUS_BOOT + 0x1000)
#define PMU_BOOT_RAM_END (PMU_BOOT_RAM_START + 0xfff)
/********************************************/
/* END PBUS_BASE 0x15A00000 */
/********************************************/
/********************************************/
/* IC3 0x10960000 */
/********************************************/
#define VGPIO_TX_MONITOR 0x1700
#define VGPIO_TX_MON_BIT12 BIT(12)
/********************************************/
/* END IC3 0x10960000 */
/********************************************/
/* TODO: check TZ stuff*/
/* TZASC (TrustZone Address Space Controller) configuration for Katmai onwards */
#define EXYNOS_SET_CONN_TZPC 0
#define SMC_CMD_CONN_IF (0x82000710)
#endif /* __MIF_REG_9815_H */