diff options
-rw-r--r-- | src/soc/mediatek/mt8188/devapc.c | 392 | ||||
-rw-r--r-- | src/soc/mediatek/mt8188/include/soc/addressmap.h | 2 | ||||
-rw-r--r-- | src/soc/mediatek/mt8188/include/soc/devapc.h | 9 |
3 files changed, 284 insertions, 119 deletions
diff --git a/src/soc/mediatek/mt8188/devapc.c b/src/soc/mediatek/mt8188/devapc.c index 5890a8ec3d..72ba222746 100644 --- a/src/soc/mediatek/mt8188/devapc.c +++ b/src/soc/mediatek/mt8188/devapc.c @@ -6,32 +6,38 @@ static const struct apc_infra_peri_dom_16 infra_ao_sys0_devices[] = { /* 0 */ DAPC_INFRA_AO_SYS0_ATTR("SPM_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN), DAPC_INFRA_AO_SYS0_ATTR("SPM_APB_S-1", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("SPM_APB_S-2", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("SPM_APB_S-4", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("APMIXEDSYS_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION2, FORBIDDEN3, + NO_PROTECTION2, FORBIDDEN4, NO_PROTECTION, FORBIDDEN), DAPC_INFRA_AO_SYS0_ATTR("APMIXEDSYS_APB_S-1", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN), DAPC_INFRA_AO_SYS0_ATTR("TINSYS_AO_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("TOPCKGEN_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION2, FORBIDDEN3, + NO_PROTECTION2, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("INFRACFG_AO_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN4, NO_PROTECTION, FORBIDDEN), DAPC_INFRA_AO_SYS0_ATTR("INFRACFG_AO_MEM_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), /* 10 */ DAPC_INFRA_AO_SYS0_ATTR("PERICFG_AO_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("GPIO_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("TOPRGU_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("DSP_IRQ_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("DEVICE_APC_INFRA_AO_APB_S", @@ -39,18 +45,19 @@ static const struct apc_infra_peri_dom_16 infra_ao_sys0_devices[] = { DAPC_INFRA_AO_SYS0_ATTR("BCRM_INFRA_AO_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("DEBUG_CTRL_INFRA_AO_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("AP_CIRQ_EINT_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("PMIC_WRAP_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("KP_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), /* 20 */ DAPC_INFRA_AO_SYS0_ATTR("TOP_MISC_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("DVFSRC_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("MBIST_AO_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("HDMI_CEC_APB_S", @@ -62,7 +69,8 @@ static const struct apc_infra_peri_dom_16 infra_ao_sys0_devices[] = { DAPC_INFRA_AO_SYS0_ATTR("IRRX_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("SYS_TIMER_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("MODEM_TEMP_SHARE_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("PMIF1_APB_S", @@ -71,9 +79,9 @@ static const struct apc_infra_peri_dom_16 infra_ao_sys0_devices[] = { DAPC_INFRA_AO_SYS0_ATTR("PMICSPI_MST_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("TIA_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("TOPCKGEN_INFRA_CFG_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("DRM_DEBUG_TOP_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("EFUSE_DEBUG_AO_APB_S", @@ -96,11 +104,11 @@ static const struct apc_infra_peri_dom_16 infra_ao_sys0_devices[] = { DAPC_INFRA_AO_SYS0_ATTR("DEVICE_APC_FMEM_AO_APB_S", SEC_RW_ONLY, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("PWM_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("PMSR_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("SRCLKEN_RC_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("MFG_S_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("MFG_S_S-1", @@ -125,24 +133,30 @@ static const struct apc_infra_peri_dom_16 infra_ao_sys0_devices[] = { DAPC_INFRA_AO_SYS0_ATTR("APU_S_S-1", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("APU_S_S-2", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, SEC_RW_ONLY, FORBIDDEN4, + SEC_RW_ONLY, FORBIDDEN7), DAPC_INFRA_AO_SYS0_ATTR("APU_S_S-3", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("APU_S_S-4", NO_PROTECTION, FORBIDDEN15), /* 60 */ DAPC_INFRA_AO_SYS0_ATTR("APU_S_S-5", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, SEC_RW_ONLY, FORBIDDEN4, + SEC_RW_ONLY, FORBIDDEN7), DAPC_INFRA_AO_SYS0_ATTR("MCUSYS_CFGREG_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_INFRA_AO_SYS0_ATTR("MCUSYS_CFGREG_APB_S-1", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN), DAPC_INFRA_AO_SYS0_ATTR("MCUSYS_CFGREG_APB_S-2", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN), DAPC_INFRA_AO_SYS0_ATTR("MCUSYS_CFGREG_APB_S-3", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN), DAPC_INFRA_AO_SYS0_ATTR("MCUSYS_CFGREG_APB_S-4", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN), DAPC_INFRA_AO_SYS0_ATTR("L3C_S", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("L3C_S-1", @@ -150,7 +164,7 @@ static const struct apc_infra_peri_dom_16 infra_ao_sys0_devices[] = { DAPC_INFRA_AO_SYS0_ATTR("L3C_S-2", NO_PROTECTION, FORBIDDEN15), DAPC_INFRA_AO_SYS0_ATTR("PCIE0_AXI_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN, NO_PROTECTION, FORBIDDEN13), /* 70 */ DAPC_INFRA_AO_SYS0_ATTR("VIOSYS_APB0_S", NO_PROTECTION, FORBIDDEN15), @@ -167,28 +181,28 @@ static const struct apc_infra_peri_dom_16 infra_ao_sys0_devices[] = { static const struct apc_infra_peri_dom_4 infra_ao_sys1_devices[] = { /* 0 */ DAPC_INFRA_AO_SYS1_ATTR("MM_S_S", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-1", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-2", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-3", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-4", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-5", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-6", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-7", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-8", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-9", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), /* 10 */ DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-10", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-11", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-12", @@ -202,7 +216,7 @@ static const struct apc_infra_peri_dom_4 infra_ao_sys1_devices[] = { DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-16", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-17", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-18", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-19", @@ -324,7 +338,7 @@ static const struct apc_infra_peri_dom_4 infra_ao_sys1_devices[] = { DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-74", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-75", - NO_PROTECTION, FORBIDDEN3), + SEC_RW_ONLY, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-76", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MM_S_S-77", @@ -427,7 +441,7 @@ static const struct apc_infra_peri_dom_4 infra_ao_sys1_devices[] = { DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-1", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-2", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-3", @@ -450,7 +464,7 @@ static const struct apc_infra_peri_dom_4 infra_ao_sys1_devices[] = { DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-11", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-12", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-13", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-14", @@ -484,7 +498,7 @@ static const struct apc_infra_peri_dom_4 infra_ao_sys1_devices[] = { DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-27", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-28", - NO_PROTECTION, FORBIDDEN3), + SEC_RW_ONLY, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-29", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-30", @@ -524,9 +538,9 @@ static const struct apc_infra_peri_dom_4 infra_ao_sys1_devices[] = { NO_PROTECTION, FORBIDDEN3), /* 170 */ DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-47", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-48", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-49", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-50", @@ -580,9 +594,9 @@ static const struct apc_infra_peri_dom_4 infra_ao_sys1_devices[] = { DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-73", NO_PROTECTION, FORBIDDEN3), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-74", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-75", - NO_PROTECTION, FORBIDDEN3), + NO_PROTECTION2, FORBIDDEN2), DAPC_INFRA_AO_SYS1_ATTR("MDP_S_S-76", NO_PROTECTION, FORBIDDEN3), /* 200 */ @@ -913,97 +927,141 @@ static const struct apc_infra_peri_dom_16 peri_ao_sys0_devices[] = { DAPC_PERI_AO_SYS0_ATTR("DEBUG_CTRL_PERI_AO_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-1", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-2", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-3", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-4", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-5", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-6", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), /* 10 */ DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-7", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-8", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-9", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("PWR_MD32_S-10", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DEBUGSYS_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN), DAPC_PERI_AO_SYS0_ATTR("DRAMC_MD32_S0_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_MD32_S0_APB_S-1", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_MD32_S1_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_MD32_S1_APB_S-1", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH0_TOP0_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), /* 20 */ DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH0_TOP1_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH0_TOP2_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH0_TOP3_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH0_TOP4_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH0_TOP5_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH0_TOP6_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH1_TOP0_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH1_TOP1_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH1_TOP2_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH1_TOP3_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), /* 30 */ DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH1_TOP4_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH1_TOP5_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH1_TOP6_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH2_TOP0_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH2_TOP1_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH2_TOP2_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH2_TOP3_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH2_TOP4_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH2_TOP5_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH2_TOP6_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), /* 40 */ DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH3_TOP0_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH3_TOP1_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH3_TOP2_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH3_TOP3_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH3_TOP4_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH3_TOP5_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("DRAMC_CH3_TOP6_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI_AO_SYS0_ATTR("CCIF2_AP_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_AO_SYS0_ATTR("CCIF2_MD_APB_S", @@ -1022,9 +1080,11 @@ static const struct apc_infra_peri_dom_16 peri_ao_sys0_devices[] = { DAPC_PERI_AO_SYS0_ATTR("CCIF5_MD_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_AO_SYS0_ATTR("SSC_INFRA_APB0_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN7), DAPC_PERI_AO_SYS0_ATTR("SSC_INFRA_APB1_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN7), DAPC_PERI_AO_SYS0_ATTR("DEVICE_MPU_ACP_APB_S", SEC_RW_ONLY, FORBIDDEN15), }; @@ -1046,7 +1106,7 @@ static const struct apc_infra_peri_dom_16 peri2_ao_sys0_devices[] = { DAPC_PERI2_AO_SYS0_ATTR("BND_EAST_APB0_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("BND_EAST_APB1_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN13, NO_PROTECTION, FORBIDDEN), DAPC_PERI2_AO_SYS0_ATTR("BND_EAST_APB2_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("BND_EAST_APB3_S", @@ -1103,7 +1163,7 @@ static const struct apc_infra_peri_dom_16 peri2_ao_sys0_devices[] = { DAPC_PERI2_AO_SYS0_ATTR("BND_NORTH_APB1_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("BND_NORTH_APB2_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN13, NO_PROTECTION, FORBIDDEN), DAPC_PERI2_AO_SYS0_ATTR("BND_NORTH_APB3_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("BND_NORTH_APB4_S", @@ -1195,7 +1255,8 @@ static const struct apc_infra_peri_dom_16 peri2_ao_sys0_devices[] = { DAPC_PERI2_AO_SYS0_ATTR("MBIST_PDN_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("INFRACFG_PDN_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION2, FORBIDDEN6), DAPC_PERI2_AO_SYS0_ATTR("TRNG_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("GCPU_APB_S", @@ -1206,7 +1267,7 @@ static const struct apc_infra_peri_dom_16 peri2_ao_sys0_devices[] = { NO_PROTECTION, FORBIDDEN15), /* 80 */ DAPC_PERI2_AO_SYS0_ATTR("SRAMROM_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_PERI2_AO_SYS0_ATTR("INFRACFG_MEM_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("ECC_TOP_APB_S", @@ -1222,18 +1283,19 @@ static const struct apc_infra_peri_dom_16 peri2_ao_sys0_devices[] = { DAPC_PERI2_AO_SYS0_ATTR("DEBUG_TRACKER_APB1_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("INFRA_IOMMU_WRAP_APB0_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_PERI2_AO_SYS0_ATTR("INFRA_IOMMU_WRAP_APB1_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), /* 90 */ DAPC_PERI2_AO_SYS0_ATTR("INFRA_IOMMU_WRAP_APB2_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_PERI2_AO_SYS0_ATTR("INFRA_IOMMU_WRAP_APB3_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_PERI2_AO_SYS0_ATTR("INFRA_IOMMU_WRAP_APB4_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_PERI2_AO_SYS0_ATTR("EMI_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN7), DAPC_PERI2_AO_SYS0_ATTR("EMI_MPU_APB_S", SEC_RW_ONLY, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("DEVICE_MPU_PDN_APB_S", @@ -1262,7 +1324,8 @@ static const struct apc_infra_peri_dom_16 peri2_ao_sys0_devices[] = { DAPC_PERI2_AO_SYS0_ATTR("PERI_SLOW_M_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("EMI_SUB_INFRA_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN7), DAPC_PERI2_AO_SYS0_ATTR("EMI_MPU_SUB_INFRA_APB_S", SEC_RW_ONLY, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("DEVICE_MPU_PDN_SUB_INFRA_APB_S", @@ -1271,7 +1334,8 @@ static const struct apc_infra_peri_dom_16 peri2_ao_sys0_devices[] = { DAPC_PERI2_AO_SYS0_ATTR("MBIST_PDN_SUB_INFRA_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("INFRACFG_MEM_SUB_INFRA_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN7), DAPC_PERI2_AO_SYS0_ATTR("BCRM_SUB_INFRA_AO_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("DEBUG_CTRL_SUB_INFRA_AO_APB_S", @@ -1279,11 +1343,13 @@ static const struct apc_infra_peri_dom_16 peri2_ao_sys0_devices[] = { DAPC_PERI2_AO_SYS0_ATTR("BCRM_SUB_INFRA_PDN_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("SSC_SUB_INFRA_APB1_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN7), DAPC_PERI2_AO_SYS0_ATTR("SSC_SUB_INFRA_APB2_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN7), DAPC_PERI2_AO_SYS0_ATTR("INFRACFG_AO_MEM_SUB_INFRA_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN6), DAPC_PERI2_AO_SYS0_ATTR("SUB_FAKE_ENGINE_MM_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI2_AO_SYS0_ATTR("SUB_FAKE_ENGINE_MDP_S", @@ -1323,7 +1389,7 @@ static const struct apc_infra_peri_dom_16 peri_par_ao_sys0_devices[] = { DAPC_PERI_PAR_AO_SYS0_ATTR("MSDC2_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_PAR_AO_SYS0_ATTR("PCIE0_AHB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN, NO_PROTECTION, FORBIDDEN13), DAPC_PERI_PAR_AO_SYS0_ATTR("SSUSB_P2_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_PAR_AO_SYS0_ATTR("SSUSB_P3_S", @@ -1331,7 +1397,8 @@ static const struct apc_infra_peri_dom_16 peri_par_ao_sys0_devices[] = { DAPC_PERI_PAR_AO_SYS0_ATTR("AUXADC_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_PAR_AO_SYS0_ATTR("UART0_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN2, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN5, NO_PROTECTION, FORBIDDEN), DAPC_PERI_PAR_AO_SYS0_ATTR("UART1_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_PAR_AO_SYS0_ATTR("UART2_APB_S", @@ -1346,7 +1413,8 @@ static const struct apc_infra_peri_dom_16 peri_par_ao_sys0_devices[] = { DAPC_PERI_PAR_AO_SYS0_ATTR("SPI0_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_PAR_AO_SYS0_ATTR("PTP_THERM_CTRL_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN), DAPC_PERI_PAR_AO_SYS0_ATTR("PERI_MBIST_PDN_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_PAR_AO_SYS0_ATTR("DISP_PWM_APB_S", @@ -1384,9 +1452,10 @@ static const struct apc_infra_peri_dom_16 peri_par_ao_sys0_devices[] = { DAPC_PERI_PAR_AO_SYS0_ATTR("DEVICE_APC_PERI_PAR_PDN_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_PAR_AO_SYS0_ATTR("PTP_THERM_CTRL2_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN8, NO_PROTECTION, FORBIDDEN4, + NO_PROTECTION, FORBIDDEN), DAPC_PERI_PAR_AO_SYS0_ATTR("IIC_P2P_REMAP_APB_S", - NO_PROTECTION, FORBIDDEN15), + NO_PROTECTION, FORBIDDEN13, NO_PROTECTION, FORBIDDEN), DAPC_PERI_PAR_AO_SYS0_ATTR("NOR_APB_S", NO_PROTECTION, FORBIDDEN15), DAPC_PERI_PAR_AO_SYS0_ATTR("PERICFG2_AO_APB_S", @@ -1547,10 +1616,48 @@ static void dump_peri_par_ao_apc(uintptr_t base) read32(getreg(base, MAS_SEC_0))); } +static void dump_fmem_ao(uintptr_t base) +{ + printk(BIOS_DEBUG, "[DEVAPC] (DEVAPC_FMEM_AO_BASE %#lx)DOM_REMAP_0_0:%#x\n", + base, read32(getreg(base, DOM_REMAP_0_0))); +} + +static void dump_infra2_ao(uintptr_t base) +{ + printk(BIOS_DEBUG, "[DEVAPC] (DEVAPC_INFRA2_AO_BASE %#lx)DOM_REMAP_0_0:%#x\n", + base, read32(getreg(base, DOM_REMAP_0_0))); +} + static void infra_init(uintptr_t base) { + void *reg; + /* Side-band */ - SET32_BITFIELDS(getreg(base, MAS_SEC_0), MCUPM_SEC, SECURE_TRANS); + SET32_BITFIELDS(getreg(base, MAS_SEC_0), CPU_EB_SEC, SECURE_TRANS); + SET32_BITFIELDS(getreg(base, MAS_SEC_0), SCP_SSPM_SEC, SECURE_TRANS); + + /* + * Domain Remap: INFRA (4-bit) -> MMSYS (2-bit) + * domain 0 -> domain 0 + * domain 8 -> domain 1 (SCP) + * others -> domain 3 + */ + reg = getreg(base, DOM_REMAP_2_0); + write32(reg, 0xFFFFFFFF); + SET32_BITFIELDS(reg, + TWO_BIT_DOM_REMAP_0, DOMAIN_0, + TWO_BIT_DOM_REMAP_8, DOMAIN_1); + + /* + * Domain Remap: TINYSYS (3-bit) -> INFRA (4-bit) + * domain 0 -> domain 4 (DSP) + * others -> domain 15 + */ + reg = getreg(base, DOM_REMAP_0_0); + write32(reg, 0xFFFFFFFF); + SET32_BITFIELDS(reg, + FOUR_BIT_DOM_REMAP_0, DOMAIN_4); + /* TODO: Setup SCP, SSPM and MCUPM permissions in APC . */ set_infra_ao_apc(base); @@ -1558,8 +1665,23 @@ static void infra_init(uintptr_t base) static void peri_init(uintptr_t base) { + void *reg; + /* Default APC setting */ set_peri_ao_apc(base); + + /* + * Domain Remap: INFRA (4-bit) -> TINYSYS (3-bit) + * domain 0 -> domain 0 + * domain 4 -> domain 0 (DSP) + * others -> domain 7 + */ + reg = getreg(base, DOM_REMAP_0_0); + write32(reg, 0xFFFFFFFF); + SET32_BITFIELDS(reg, + THREE_BIT_DOM_REMAP_0, DOMAIN_0, + THREE_BIT_DOM_REMAP_4, DOMAIN_0); + write32(getreg(base, DOM_REMAP_0_1), 0xFFFFFFFF); } static void peri2_init(uintptr_t base) @@ -1574,11 +1696,49 @@ static void peri_par_init(uintptr_t base) set_peri_par_ao_apc(base); } +static void fmem_master_init(uintptr_t base) +{ + /* + * Domain Remap: TINYSYS to EMI (3-bit to 4-bit) + * 1. DSP from 0 to 4 + * 2. others from XXX to 15 + */ + SET32_BITFIELDS(getreg(base, DOM_REMAP_0_0), + FOUR_BIT_DOM_REMAP_0, DOMAIN_4, + FOUR_BIT_DOM_REMAP_1, DOMAIN_15, + FOUR_BIT_DOM_REMAP_2, DOMAIN_15, + FOUR_BIT_DOM_REMAP_3, DOMAIN_15, + FOUR_BIT_DOM_REMAP_4, DOMAIN_15, + FOUR_BIT_DOM_REMAP_5, DOMAIN_15, + FOUR_BIT_DOM_REMAP_6, DOMAIN_15, + FOUR_BIT_DOM_REMAP_7, DOMAIN_15); +} + +static void infra2_master_init(uintptr_t base) +{ + /* + * Domain Remap: TINYSYS to EMI (3-bit to 4-bit) + * 1. DSP from 0 to 4 + * 2. others from XXX to 15 + */ + SET32_BITFIELDS(getreg(base, DOM_REMAP_0_0), + FOUR_BIT_DOM_REMAP_0, DOMAIN_4, + FOUR_BIT_DOM_REMAP_1, DOMAIN_15, + FOUR_BIT_DOM_REMAP_2, DOMAIN_15, + FOUR_BIT_DOM_REMAP_3, DOMAIN_15, + FOUR_BIT_DOM_REMAP_4, DOMAIN_15, + FOUR_BIT_DOM_REMAP_5, DOMAIN_15, + FOUR_BIT_DOM_REMAP_6, DOMAIN_15, + FOUR_BIT_DOM_REMAP_7, DOMAIN_15); +} + const struct devapc_init_ops devapc_init[] = { { DEVAPC_INFRA_AO_BASE, infra_init, dump_infra_ao_apc }, { DEVAPC_PERI_AO_BASE, peri_init, dump_peri_ao_apc }, { DEVAPC_PERI2_AO_BASE, peri2_init, dump_peri2_ao_apc }, { DEVAPC_PERI_PAR_AO_BASE, peri_par_init, dump_peri_par_ao_apc }, + { DEVAPC_FMEM_AO_BASE, fmem_master_init, dump_fmem_ao }, + { DEVAPC_INFRA2_AO_BASE, infra2_master_init, dump_infra2_ao }, }; const size_t devapc_init_cnt = ARRAY_SIZE(devapc_init); diff --git a/src/soc/mediatek/mt8188/include/soc/addressmap.h b/src/soc/mediatek/mt8188/include/soc/addressmap.h index 74489764f9..01620b4508 100644 --- a/src/soc/mediatek/mt8188/include/soc/addressmap.h +++ b/src/soc/mediatek/mt8188/include/soc/addressmap.h @@ -41,6 +41,7 @@ enum { DEVAPC_PERI_PAR_AO_BASE = IO_PHYS + 0x0003C000, PERI_PAR_AO_BASE = IO_PHYS + 0x00040000, FMEM_AO_BASE = IO_PHYS + 0x00042000, + DEVAPC_FMEM_AO_BASE = IO_PHYS + 0x00044000, DBG_TRACKER_BASE = IO_PHYS + 0x00208000, PERI_TRACKER_BASE = IO_PHYS + 0x00218000, EMI0_BASE = IO_PHYS + 0x00219000, @@ -52,6 +53,7 @@ enum { I2C4_DMA_BASE = IO_PHYS + 0x00220380, I2C5_DMA_BASE = IO_PHYS + 0x00220480, I2C6_DMA_BASE = IO_PHYS + 0x00220600, + DEVAPC_INFRA2_AO_BASE = IO_PHYS + 0x00228000, DRAMC_CHA_AO_BASE = IO_PHYS + 0x00230000, INFRA_TRACKER_BASE = IO_PHYS + 0x00314000, SSPM_SRAM_BASE = IO_PHYS + 0x00400000, diff --git a/src/soc/mediatek/mt8188/include/soc/devapc.h b/src/soc/mediatek/mt8188/include/soc/devapc.h index 161ae9b28b..0f320bac6a 100644 --- a/src/soc/mediatek/mt8188/include/soc/devapc.h +++ b/src/soc/mediatek/mt8188/include/soc/devapc.h @@ -11,13 +11,14 @@ enum devapc_ao_offset { SYS0_D0_APC_0 = 0x00000, SYS1_D0_APC_0 = 0x01000, SYS2_D0_APC_0 = 0x02000, + DOM_REMAP_0_0 = 0x00800, + DOM_REMAP_0_1 = 0x00804, + DOM_REMAP_2_0 = 0x00820, MAS_DOM_0 = 0x00900, MAS_SEC_0 = 0x00A00, AO_APC_CON = 0x00F00, }; -DEFINE_BIT(MCUPM_SEC, 1) - /****************************************************************************** * STRUCTURE DEFINITION ******************************************************************************/ @@ -54,6 +55,8 @@ enum devapc_cfg_index { /****************************************************************************** * Bit Field DEFINITION ******************************************************************************/ - /* TODO */ +/* INFRA */ +DEFINE_BIT(CPU_EB_SEC, 1) +DEFINE_BIT(SCP_SSPM_SEC, 2) #endif /* SOC_MEDIATEK_MT8188_DEVAPC_H */ |