Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

soc: samsung: gs101-pmu: implement access tables for read and write

Accessing non-existent PMU registers causes an SError, halting the
system.

Implement read and write access tables for the gs101-PMU to specify
which registers are read- and/or writable to avoid that SError.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
Link: https://patch.msgid.link/20251009-gs101-pmu-regmap-tables-v2-3-2d64f5261952@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

authored by

André Draszik and committed by
Krzysztof Kozlowski
8b9cd112 b320711e

+640 -9
+305 -1
drivers/soc/samsung/gs101-pmu.c
··· 9 9 #include <linux/array_size.h> 10 10 #include <linux/soc/samsung/exynos-pmu.h> 11 11 #include <linux/soc/samsung/exynos-regs-pmu.h> 12 + #include <linux/regmap.h> 12 13 13 14 #include "exynos-pmu.h" 14 15 ··· 21 20 #define TENSOR_PMUREG_WRITE 1 22 21 #define TENSOR_PMUREG_RMW 2 23 22 23 + static const struct regmap_range gs101_pmu_registers[] = { 24 + regmap_reg_range(GS101_OM_STAT, GS101_SYSTEM_INFO), 25 + regmap_reg_range(GS101_IDLE_IP(0), GS101_IDLE_IP_MASK(3)), 26 + regmap_reg_range(GS101_DATARAM_STATE_SLC_CH(0), 27 + GS101_PPMPURAM_INFORM_SCL_CH(3)), 28 + regmap_reg_range(GS101_INFORM0, GS101_SYSIP_DAT(0)), 29 + /* skip SYSIP_DAT1 SYSIP_DAT2 */ 30 + regmap_reg_range(GS101_SYSIP_DAT(3), GS101_PWR_HOLD_SW_TRIP), 31 + regmap_reg_range(GS101_GSA_INFORM(0), GS101_GSA_INFORM(1)), 32 + regmap_reg_range(GS101_INFORM4, GS101_IROM_INFORM), 33 + regmap_reg_range(GS101_IROM_CPU_INFORM(0), GS101_IROM_CPU_INFORM(7)), 34 + regmap_reg_range(GS101_PMU_SPARE(0), GS101_PMU_SPARE(3)), 35 + /* skip most IROM_xxx registers */ 36 + regmap_reg_range(GS101_DREX_CALIBRATION(0), GS101_DREX_CALIBRATION(7)), 37 + 38 + #define CLUSTER_CPU_RANGE(cl, cpu) \ 39 + regmap_reg_range(GS101_CLUSTER_CPU_CONFIGURATION(cl, cpu), \ 40 + GS101_CLUSTER_CPU_OPTION(cl, cpu)), \ 41 + regmap_reg_range(GS101_CLUSTER_CPU_OUT(cl, cpu), \ 42 + GS101_CLUSTER_CPU_IN(cl, cpu)), \ 43 + regmap_reg_range(GS101_CLUSTER_CPU_INT_IN(cl, cpu), \ 44 + GS101_CLUSTER_CPU_INT_DIR(cl, cpu)) 45 + 46 + /* cluster 0..2 and cpu 0..4 or 0..1 */ 47 + CLUSTER_CPU_RANGE(GS101_CLUSTER0_OFFSET, 0), 48 + CLUSTER_CPU_RANGE(GS101_CLUSTER0_OFFSET, 1), 49 + CLUSTER_CPU_RANGE(GS101_CLUSTER0_OFFSET, 2), 50 + CLUSTER_CPU_RANGE(GS101_CLUSTER0_OFFSET, 3), 51 + CLUSTER_CPU_RANGE(GS101_CLUSTER1_OFFSET, 0), 52 + CLUSTER_CPU_RANGE(GS101_CLUSTER1_OFFSET, 1), 53 + CLUSTER_CPU_RANGE(GS101_CLUSTER2_OFFSET, 0), 54 + CLUSTER_CPU_RANGE(GS101_CLUSTER2_OFFSET, 1), 55 + #undef CLUSTER_CPU_RANGE 56 + 57 + #define CLUSTER_NONCPU_RANGE(cl) \ 58 + regmap_reg_range(GS101_CLUSTER_NONCPU_CONFIGURATION(cl), \ 59 + GS101_CLUSTER_NONCPU_OPTION(cl)), \ 60 + regmap_reg_range(GS101_CLUSTER_NONCPU_OUT(cl), \ 61 + GS101_CLUSTER_NONCPU_IN(cl)), \ 62 + regmap_reg_range(GS101_CLUSTER_NONCPU_INT_IN(cl), \ 63 + GS101_CLUSTER_NONCPU_INT_DIR(cl)), \ 64 + regmap_reg_range(GS101_CLUSTER_NONCPU_DUALRAIL_CTRL_OUT(cl), \ 65 + GS101_CLUSTER_NONCPU_DUALRAIL_POS_OUT(cl)), \ 66 + regmap_reg_range(GS101_CLUSTER_NONCPU_DUALRAIL_CTRL_IN(cl), \ 67 + GS101_CLUSTER_NONCPU_DUALRAIL_CTRL_IN(cl)) 68 + 69 + CLUSTER_NONCPU_RANGE(0), 70 + regmap_reg_range(GS101_CLUSTER0_NONCPU_DSU_PCH, 71 + GS101_CLUSTER0_NONCPU_DSU_PCH), 72 + CLUSTER_NONCPU_RANGE(1), 73 + CLUSTER_NONCPU_RANGE(2), 74 + #undef CLUSTER_NONCPU_RANGE 75 + 76 + #define SUBBLK_RANGE(blk) \ 77 + regmap_reg_range(GS101_SUBBLK_CONFIGURATION(blk), \ 78 + GS101_SUBBLK_CTRL(blk)), \ 79 + regmap_reg_range(GS101_SUBBLK_OUT(blk), GS101_SUBBLK_IN(blk)), \ 80 + regmap_reg_range(GS101_SUBBLK_INT_IN(blk), \ 81 + GS101_SUBBLK_INT_DIR(blk)), \ 82 + regmap_reg_range(GS101_SUBBLK_MEMORY_OUT(blk), \ 83 + GS101_SUBBLK_MEMORY_IN(blk)) 84 + 85 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_ALIVE), 86 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_AOC), 87 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_APM), 88 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CMU), 89 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_BUS0), 90 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_BUS1), 91 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_BUS2), 92 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CORE), 93 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_EH), 94 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CPUCL0), 95 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CPUCL1), 96 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CPUCL2), 97 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_G3D), 98 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_EMBEDDED_CPUCL0), 99 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_EMBEDDED_G3D), 100 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_HSI0), 101 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_HSI1), 102 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_HSI2), 103 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_DPU), 104 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_DISP), 105 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_G2D), 106 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MFC), 107 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CSIS), 108 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_PDP), 109 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_DNS), 110 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_G3AA), 111 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_IPP), 112 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_ITP), 113 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MCSC), 114 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_GDC), 115 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_TNR), 116 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_BO), 117 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_TPU), 118 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MIF0), 119 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MIF1), 120 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MIF2), 121 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MIF3), 122 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MISC), 123 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_PERIC0), 124 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_PERIC1), 125 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_S2D), 126 + #undef SUBBLK_RANGE 127 + 128 + #define SUBBLK_CPU_RANGE(blk) \ 129 + regmap_reg_range(GS101_SUBBLK_CPU_CONFIGURATION(blk), \ 130 + GS101_SUBBLK_CPU_OPTION(blk)), \ 131 + regmap_reg_range(GS101_SUBBLK_CPU_OUT(blk), \ 132 + GS101_SUBBLK_CPU_IN(blk)), \ 133 + regmap_reg_range(GS101_SUBBLK_CPU_INT_IN(blk), \ 134 + GS101_SUBBLK_CPU_INT_DIR(blk)) 135 + 136 + SUBBLK_CPU_RANGE(GS101_SUBBBLK_CPU_OFFSET_APM), 137 + SUBBLK_CPU_RANGE(GS101_SUBBBLK_CPU_OFFSET_DBGCORE), 138 + SUBBLK_CPU_RANGE(GS101_SUBBBLK_CPU_OFFSET_SSS), 139 + #undef SUBBLK_CPU_RANGE 140 + 141 + regmap_reg_range(GS101_MIF_CONFIGURATION, GS101_MIF_CTRL), 142 + regmap_reg_range(GS101_MIF_OUT, GS101_MIF_IN), 143 + regmap_reg_range(GS101_MIF_INT_IN, GS101_MIF_INT_DIR), 144 + regmap_reg_range(GS101_TOP_CONFIGURATION, GS101_TOP_OPTION), 145 + regmap_reg_range(GS101_TOP_OUT, GS101_TOP_IN), 146 + regmap_reg_range(GS101_TOP_INT_IN, GS101_WAKEUP2_STAT), 147 + regmap_reg_range(GS101_WAKEUP2_INT_IN, GS101_WAKEUP2_INT_DIR), 148 + regmap_reg_range(GS101_SYSTEM_CONFIGURATION, GS101_USER_DEFINED_OUT), 149 + regmap_reg_range(GS101_SYSTEM_OUT, GS101_SYSTEM_IN), 150 + regmap_reg_range(GS101_SYSTEM_INT_IN, GS101_EINT_WAKEUP_MASK3), 151 + regmap_reg_range(GS101_USER_DEFINED_INT_IN, GS101_SCAN2DRAM_INT_DIR), 152 + /* skip HCU_START */ 153 + regmap_reg_range(GS101_CUSTOM_OUT, GS101_CUSTOM_IN), 154 + regmap_reg_range(GS101_CUSTOM_INT_IN, GS101_CUSTOM_INT_DIR), 155 + regmap_reg_range(GS101_ACK_LAST_CPU, GS101_HCU_R(3)), 156 + regmap_reg_range(GS101_HCU_SP, GS101_HCU_PC), 157 + /* skip PMU_RAM_CTRL */ 158 + regmap_reg_range(GS101_APM_HCU_CTRL, GS101_APM_HCU_CTRL), 159 + regmap_reg_range(GS101_APM_NMI_ENABLE, GS101_RST_STAT_PMU), 160 + regmap_reg_range(GS101_HPM_INT_IN, GS101_BOOT_STAT), 161 + regmap_reg_range(GS101_PMLINK_OUT, GS101_PMLINK_AOC_CTRL), 162 + regmap_reg_range(GS101_TCXO_BUF_CTRL, GS101_ADD_CTRL), 163 + regmap_reg_range(GS101_HCU_TIMEOUT_RESET, GS101_HCU_TIMEOUT_SCAN2DRAM), 164 + regmap_reg_range(GS101_TIMER(0), GS101_TIMER(3)), 165 + regmap_reg_range(GS101_PPC_MIF(0), GS101_PPC_EH), 166 + /* PPC_OFFSET, skip PPC_CPUCL1_0 PPC_CPUCL1_1 */ 167 + regmap_reg_range(GS101_EXT_REGULATOR_MIF_DURATION, GS101_TCXO_DURATION), 168 + regmap_reg_range(GS101_BURNIN_CTRL, GS101_TMU_SUB_TRIP), 169 + regmap_reg_range(GS101_MEMORY_CEN, GS101_MEMORY_SMX_FEEDBACK), 170 + regmap_reg_range(GS101_SLC_PCH_CHANNEL, GS101_SLC_PCH_CB), 171 + regmap_reg_range(GS101_FORCE_NOMC, GS101_FORCE_NOMC), 172 + regmap_reg_range(GS101_FORCE_BOOST, GS101_PMLINK_SLC_BUSY), 173 + regmap_reg_range(GS101_BOOTSYNC_OUT, GS101_CTRL_SECJTAG_ALIVE), 174 + regmap_reg_range(GS101_CTRL_DIV_PLL_ALV_DIVLOW, GS101_CTRL_CLKDIV__CLKRTC), 175 + regmap_reg_range(GS101_CTRL_SOC32K, GS101_CTRL_SBU_SW_EN), 176 + regmap_reg_range(GS101_PAD_CTRL_CLKOUT0, GS101_PAD_CTRL_WRESETO_n), 177 + regmap_reg_range(GS101_PHY_CTRL_USB20, GS101_PHY_CTRL_UFS), 178 + }; 179 + 180 + static const struct regmap_range gs101_pmu_ro_registers[] = { 181 + regmap_reg_range(GS101_OM_STAT, GS101_VERSION), 182 + regmap_reg_range(GS101_OTP_STATUS, GS101_OTP_STATUS), 183 + 184 + regmap_reg_range(GS101_DATARAM_STATE_SLC_CH(0), 185 + GS101_PPMPURAM_STATE_SLC_CH(0)), 186 + regmap_reg_range(GS101_DATARAM_STATE_SLC_CH(1), 187 + GS101_PPMPURAM_STATE_SLC_CH(1)), 188 + regmap_reg_range(GS101_DATARAM_STATE_SLC_CH(2), 189 + GS101_PPMPURAM_STATE_SLC_CH(2)), 190 + regmap_reg_range(GS101_DATARAM_STATE_SLC_CH(3), 191 + GS101_PPMPURAM_STATE_SLC_CH(3)), 192 + 193 + #define CLUSTER_CPU_RANGE(cl, cpu) \ 194 + regmap_reg_range(GS101_CLUSTER_CPU_IN(cl, cpu), \ 195 + GS101_CLUSTER_CPU_IN(cl, cpu)), \ 196 + regmap_reg_range(GS101_CLUSTER_CPU_INT_IN(cl, cpu), \ 197 + GS101_CLUSTER_CPU_INT_IN(cl, cpu)) 198 + 199 + CLUSTER_CPU_RANGE(GS101_CLUSTER0_OFFSET, 0), 200 + CLUSTER_CPU_RANGE(GS101_CLUSTER0_OFFSET, 1), 201 + CLUSTER_CPU_RANGE(GS101_CLUSTER0_OFFSET, 2), 202 + CLUSTER_CPU_RANGE(GS101_CLUSTER0_OFFSET, 3), 203 + CLUSTER_CPU_RANGE(GS101_CLUSTER1_OFFSET, 0), 204 + CLUSTER_CPU_RANGE(GS101_CLUSTER1_OFFSET, 1), 205 + CLUSTER_CPU_RANGE(GS101_CLUSTER2_OFFSET, 0), 206 + CLUSTER_CPU_RANGE(GS101_CLUSTER2_OFFSET, 1), 207 + #undef CLUSTER_CPU_RANGE 208 + 209 + #define CLUSTER_NONCPU_RANGE(cl) \ 210 + regmap_reg_range(GS101_CLUSTER_NONCPU_IN(cl), \ 211 + GS101_CLUSTER_NONCPU_IN(cl)), \ 212 + regmap_reg_range(GS101_CLUSTER_NONCPU_INT_IN(cl), \ 213 + GS101_CLUSTER_NONCPU_INT_IN(cl)), \ 214 + regmap_reg_range(GS101_CLUSTER_NONCPU_DUALRAIL_CTRL_IN(cl), \ 215 + GS101_CLUSTER_NONCPU_DUALRAIL_CTRL_IN(cl)) 216 + 217 + CLUSTER_NONCPU_RANGE(0), 218 + CLUSTER_NONCPU_RANGE(1), 219 + CLUSTER_NONCPU_RANGE(2), 220 + regmap_reg_range(GS101_CLUSTER_NONCPU_INT_EN(2), 221 + GS101_CLUSTER_NONCPU_INT_DIR(2)), 222 + #undef CLUSTER_NONCPU_RANGE 223 + 224 + #define SUBBLK_RANGE(blk) \ 225 + regmap_reg_range(GS101_SUBBLK_IN(blk), GS101_SUBBLK_IN(blk)), \ 226 + regmap_reg_range(GS101_SUBBLK_INT_IN(blk), \ 227 + GS101_SUBBLK_INT_IN(blk)), \ 228 + regmap_reg_range(GS101_SUBBLK_MEMORY_IN(blk), \ 229 + GS101_SUBBLK_MEMORY_IN(blk)) 230 + 231 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_ALIVE), 232 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_AOC), 233 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_APM), 234 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CMU), 235 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_BUS0), 236 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_BUS1), 237 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_BUS2), 238 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CORE), 239 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_EH), 240 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CPUCL0), 241 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CPUCL1), 242 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CPUCL2), 243 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_G3D), 244 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_EMBEDDED_CPUCL0), 245 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_EMBEDDED_G3D), 246 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_HSI0), 247 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_HSI1), 248 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_HSI2), 249 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_DPU), 250 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_DISP), 251 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_G2D), 252 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MFC), 253 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_CSIS), 254 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_PDP), 255 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_DNS), 256 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_G3AA), 257 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_IPP), 258 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_ITP), 259 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MCSC), 260 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_GDC), 261 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_TNR), 262 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_BO), 263 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_TPU), 264 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MIF0), 265 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MIF1), 266 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MIF2), 267 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MIF3), 268 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_MISC), 269 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_PERIC0), 270 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_PERIC1), 271 + SUBBLK_RANGE(GS101_SUBBBLK_OFFSET_S2D), 272 + #undef SUBBLK_RANGE 273 + 274 + #define SUBBLK_CPU_RANGE(blk) \ 275 + regmap_reg_range(GS101_SUBBLK_CPU_IN(blk), \ 276 + GS101_SUBBLK_CPU_IN(blk)), \ 277 + regmap_reg_range(GS101_SUBBLK_CPU_INT_IN(blk), \ 278 + GS101_SUBBLK_CPU_INT_IN(blk)) 279 + 280 + SUBBLK_CPU_RANGE(GS101_SUBBBLK_CPU_OFFSET_APM), 281 + SUBBLK_CPU_RANGE(GS101_SUBBBLK_CPU_OFFSET_DBGCORE), 282 + SUBBLK_CPU_RANGE(GS101_SUBBBLK_CPU_OFFSET_SSS), 283 + #undef SUBBLK_CPU_RANGE 284 + 285 + regmap_reg_range(GS101_MIF_CONFIGURATION, GS101_MIF_CONFIGURATION), 286 + regmap_reg_range(GS101_MIF_IN, GS101_MIF_IN), 287 + regmap_reg_range(GS101_MIF_INT_IN, GS101_MIF_INT_IN), 288 + regmap_reg_range(GS101_TOP_IN, GS101_TOP_IN), 289 + regmap_reg_range(GS101_TOP_INT_IN, GS101_TOP_INT_IN), 290 + regmap_reg_range(GS101_WAKEUP2_INT_IN, GS101_WAKEUP2_INT_IN), 291 + regmap_reg_range(GS101_SYSTEM_IN, GS101_SYSTEM_IN), 292 + regmap_reg_range(GS101_SYSTEM_INT_IN, GS101_SYSTEM_INT_IN), 293 + regmap_reg_range(GS101_EINT_INT_IN, GS101_EINT_INT_IN), 294 + regmap_reg_range(GS101_EINT2_INT_IN, GS101_EINT2_INT_IN), 295 + regmap_reg_range(GS101_EINT3_INT_IN, GS101_EINT3_INT_IN), 296 + regmap_reg_range(GS101_USER_DEFINED_INT_IN, GS101_USER_DEFINED_INT_IN), 297 + regmap_reg_range(GS101_SCAN2DRAM_INT_IN, GS101_SCAN2DRAM_INT_IN), 298 + regmap_reg_range(GS101_CUSTOM_IN, GS101_CUSTOM_IN), 299 + regmap_reg_range(GS101_CUSTOM_INT_IN, GS101_CUSTOM_INT_IN), 300 + regmap_reg_range(GS101_HCU_R(0), GS101_HCU_R(3)), 301 + regmap_reg_range(GS101_HCU_SP, GS101_HCU_PC), 302 + regmap_reg_range(GS101_NMI_SRC_IN, GS101_NMI_SRC_IN), 303 + regmap_reg_range(GS101_HPM_INT_IN, GS101_HPM_INT_IN), 304 + regmap_reg_range(GS101_MEMORY_PGEN_FEEDBACK, GS101_MEMORY_PGEN_FEEDBACK), 305 + regmap_reg_range(GS101_MEMORY_SMX_FEEDBACK, GS101_MEMORY_SMX_FEEDBACK), 306 + regmap_reg_range(GS101_PMLINK_SLC_ACK, GS101_PMLINK_SLC_BUSY), 307 + regmap_reg_range(GS101_BOOTSYNC_IN, GS101_BOOTSYNC_IN), 308 + regmap_reg_range(GS101_SCAN_READY_IN, GS101_SCAN_READY_IN), 309 + regmap_reg_range(GS101_CTRL_PLL_ALV_LOCK, GS101_CTRL_PLL_ALV_LOCK), 310 + }; 311 + 312 + static const struct regmap_access_table gs101_pmu_rd_table = { 313 + .yes_ranges = gs101_pmu_registers, 314 + .n_yes_ranges = ARRAY_SIZE(gs101_pmu_registers), 315 + }; 316 + 317 + static const struct regmap_access_table gs101_pmu_wr_table = { 318 + .yes_ranges = gs101_pmu_registers, 319 + .n_yes_ranges = ARRAY_SIZE(gs101_pmu_registers), 320 + .no_ranges = gs101_pmu_ro_registers, 321 + .n_no_ranges = ARRAY_SIZE(gs101_pmu_ro_registers), 322 + }; 323 + 24 324 const struct exynos_pmu_data gs101_pmu_data = { 25 325 .pmu_secure = true, 26 326 .pmu_cpuhp = true, 327 + .rd_table = &gs101_pmu_rd_table, 328 + .wr_table = &gs101_pmu_wr_table, 27 329 }; 28 330 29 331 /* ··· 428 124 return false; 429 125 430 126 switch (reg) { 431 - case GS101_SYSIP_DAT0: 127 + case GS101_SYSIP_DAT(0): 432 128 case GS101_SYSTEM_CONFIGURATION: 433 129 return false; 434 130 default:
+335 -8
include/linux/soc/samsung/exynos-regs-pmu.h
··· 672 672 673 673 /* For Tensor GS101 */ 674 674 /* PMU ALIVE */ 675 - #define GS101_SYSIP_DAT0 (0x810) 676 - #define GS101_CPU0_INFORM (0x860) 677 - #define GS101_CPU_INFORM(cpu) \ 678 - (GS101_CPU0_INFORM + (cpu*4)) 679 - #define GS101_SYSTEM_CONFIGURATION (0x3A00) 680 - #define GS101_EINT_WAKEUP_MASK (0x3A80) 681 - #define GS101_PHY_CTRL_USB20 (0x3EB0) 682 - #define GS101_PHY_CTRL_USBDP (0x3EB4) 675 + #define GS101_OM_STAT 0x0000 676 + #define GS101_VERSION 0x0004 677 + #define GS101_PORESET_CHECK 0x0008 678 + #define GS101_OTP_STATUS 0x000c 679 + #define GS101_SYSTEM_INFO 0x0010 680 + #define GS101_IDLE_IP(n) (0x03e0 + ((n) & 3) * 4) 681 + #define GS101_IDLE_IP_MASK(n) (0x03f0 + ((n) & 3) * 4) 682 + #define GS101_SLC_CH_OFFSET(ch) (0x0400 + ((ch) & 3) * 0x10) 683 + #define GS101_DATARAM_STATE_SLC_CH(ch) (GS101_SLC_CH_OFFSET(ch) + 0x00) 684 + #define GS101_TAGRAM_STATE_SLC_CH(ch) (GS101_SLC_CH_OFFSET(ch) + 0x04) 685 + #define GS101_LRURAM_STATE_SLC_CH(ch) (GS101_SLC_CH_OFFSET(ch) + 0x08) 686 + #define GS101_PPMPURAM_STATE_SLC_CH(ch) (GS101_SLC_CH_OFFSET(ch) + 0x0c) 687 + #define GS101_DATARAM_INFORM_SCL_CH(ch) (GS101_SLC_CH_OFFSET(ch) + 0x40) 688 + #define GS101_TAGRAM_INFORM_SCL_CH(ch) (GS101_SLC_CH_OFFSET(ch) + 0x44) 689 + #define GS101_LRURAM_INFORM_SCL_CH(ch) (GS101_SLC_CH_OFFSET(ch) + 0x48) 690 + #define GS101_PPMPURAM_INFORM_SCL_CH(ch) (GS101_SLC_CH_OFFSET(ch) + 0x4c) 691 + #define GS101_INFORM0 0x0800 692 + #define GS101_INFORM1 0x0804 693 + #define GS101_INFORM2 0x0808 694 + #define GS101_INFORM3 0x080c 695 + #define GS101_SYSIP_DAT(n) (0x0810 + ((n) & 3) * 4) 696 + #define GS101_PWR_HOLD_HW_TRIP 0x0820 697 + #define GS101_PWR_HOLD_SW_TRIP 0x0824 698 + #define GS101_GSA_INFORM(n) (0x0830 + ((n) & 1) * 4) 699 + #define GS101_INFORM4 0x0840 700 + #define GS101_INFORM5 0x0844 701 + #define GS101_INFORM6 0x0848 702 + #define GS101_INFORM7 0x084c 703 + #define GS101_INFORM8 0x0850 704 + #define GS101_INFORM9 0x0854 705 + #define GS101_INFORM10 0x0858 706 + #define GS101_INFORM11 0x085c 707 + #define GS101_CPU_INFORM(cpu) (0x0860 + ((cpu) & 7) * 4) 708 + #define GS101_IROM_INFORM 0x0880 709 + #define GS101_IROM_CPU_INFORM(cpu) (0x0890 + ((cpu) & 7) * 4) 710 + #define GS101_PMU_SPARE(n) (0x0900 + ((n) & 3) * 4) 711 + #define GS101_IROM_DATA_REG(n) (0x0980 + ((n) & 3) * 4) 712 + #define GS101_IROM_PWRMODE 0x0990 713 + #define GS101_DREX_CALIBRATION(n) (0x09a0 + ((n) & 7) * 4) 714 + 715 + #define GS101_CLUSTER0_OFFSET 0x1000 716 + #define GS101_CLUSTER1_OFFSET 0x1300 717 + #define GS101_CLUSTER2_OFFSET 0x1500 718 + #define GS101_CLUSTER_CPU_OFFSET(cl, cpu) ((cl) + ((cpu) * 0x80)) 719 + #define GS101_CLUSTER_CPU_CONFIGURATION(cl, cpu) \ 720 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x00) 721 + #define GS101_CLUSTER_CPU_STATUS(cl, cpu) \ 722 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x04) 723 + #define GS101_CLUSTER_CPU_STATES(cl, cpu) \ 724 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x08) 725 + #define GS101_CLUSTER_CPU_OPTION(cl, cpu) \ 726 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x0c) 727 + #define GS101_CLUSTER_CPU_OUT(cl, cpu) \ 728 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x20) 729 + #define GS101_CLUSTER_CPU_IN(cl, cpu) \ 730 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x24) 731 + #define GS101_CLUSTER_CPU_INT_IN(cl, cpu) \ 732 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x40) 733 + #define GS101_CLUSTER_CPU_INT_EN(cl, cpu) \ 734 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x44) 735 + #define GS101_CLUSTER_CPU_INT_TYPE(cl, cpu) \ 736 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x48) 737 + #define GS101_CLUSTER_CPU_INT_DIR(cl, cpu) \ 738 + (GS101_CLUSTER_CPU_OFFSET(cl, cpu) + 0x4c) 739 + 740 + #define GS101_CLUSTER_NONCPU_OFFSET(cl) (0x1200 + ((cl) * 0x200)) 741 + #define GS101_CLUSTER_NONCPU_CONFIGURATION(cl) \ 742 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x00) 743 + #define GS101_CLUSTER_NONCPU_STATUS(cl) \ 744 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x04) 745 + #define GS101_CLUSTER_NONCPU_STATES(cl) \ 746 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x08) 747 + #define GS101_CLUSTER_NONCPU_OPTION(cl) \ 748 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x0c) 749 + #define GS101_CLUSTER_NONCPU_OUT(cl) \ 750 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x20) 751 + #define GS101_CLUSTER_NONCPU_IN(cl) \ 752 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x24) 753 + #define GS101_CLUSTER_NONCPU_INT_IN(cl) \ 754 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x40) 755 + #define GS101_CLUSTER_NONCPU_INT_EN(cl) \ 756 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x44) 757 + #define GS101_CLUSTER_NONCPU_INT_TYPE(cl) \ 758 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x48) 759 + #define GS101_CLUSTER_NONCPU_INT_DIR(cl) \ 760 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x4c) 761 + #define GS101_CLUSTER_NONCPU_DUALRAIL_CTRL_OUT(cl) \ 762 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x60) 763 + #define GS101_CLUSTER_NONCPU_DUALRAIL_POS_OUT(cl) \ 764 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x64) 765 + #define GS101_CLUSTER_NONCPU_DUALRAIL_CTRL_IN(cl) \ 766 + (GS101_CLUSTER_NONCPU_OFFSET(cl) + 0x6c) 767 + #define GS101_CLUSTER0_NONCPU_DSU_PCH \ 768 + (GS101_CLUSTER_NONCPU_OFFSET(0) + 0x80) 769 + 770 + #define GS101_SUBBBLK_OFFSET_ALIVE 0x1800 771 + #define GS101_SUBBBLK_OFFSET_AOC 0x1880 772 + #define GS101_SUBBBLK_OFFSET_APM 0x1900 773 + #define GS101_SUBBBLK_OFFSET_CMU 0x1980 774 + #define GS101_SUBBBLK_OFFSET_BUS0 0x1a00 775 + #define GS101_SUBBBLK_OFFSET_BUS1 0x1a80 776 + #define GS101_SUBBBLK_OFFSET_BUS2 0x1b00 777 + #define GS101_SUBBBLK_OFFSET_CORE 0x1b80 778 + #define GS101_SUBBBLK_OFFSET_EH 0x1c00 779 + #define GS101_SUBBBLK_OFFSET_CPUCL0 0x1c80 780 + #define GS101_SUBBBLK_OFFSET_CPUCL1 0x1d00 781 + #define GS101_SUBBBLK_OFFSET_CPUCL2 0x1d80 782 + #define GS101_SUBBBLK_OFFSET_G3D 0x1e00 783 + #define GS101_SUBBBLK_OFFSET_EMBEDDED_CPUCL0 0x1e80 784 + #define GS101_SUBBBLK_OFFSET_EMBEDDED_G3D 0x2000 785 + #define GS101_SUBBBLK_OFFSET_HSI0 0x2080 786 + #define GS101_SUBBBLK_OFFSET_HSI1 0x2100 787 + #define GS101_SUBBBLK_OFFSET_HSI2 0x2180 788 + #define GS101_SUBBBLK_OFFSET_DPU 0x2200 789 + #define GS101_SUBBBLK_OFFSET_DISP 0x2280 790 + #define GS101_SUBBBLK_OFFSET_G2D 0x2300 791 + #define GS101_SUBBBLK_OFFSET_MFC 0x2380 792 + #define GS101_SUBBBLK_OFFSET_CSIS 0x2400 793 + #define GS101_SUBBBLK_OFFSET_PDP 0x2480 794 + #define GS101_SUBBBLK_OFFSET_DNS 0x2500 795 + #define GS101_SUBBBLK_OFFSET_G3AA 0x2580 796 + #define GS101_SUBBBLK_OFFSET_IPP 0x2600 797 + #define GS101_SUBBBLK_OFFSET_ITP 0x2680 798 + #define GS101_SUBBBLK_OFFSET_MCSC 0x2700 799 + #define GS101_SUBBBLK_OFFSET_GDC 0x2780 800 + #define GS101_SUBBBLK_OFFSET_TNR 0x2800 801 + #define GS101_SUBBBLK_OFFSET_BO 0x2880 802 + #define GS101_SUBBBLK_OFFSET_TPU 0x2900 803 + #define GS101_SUBBBLK_OFFSET_MIF0 0x2980 804 + #define GS101_SUBBBLK_OFFSET_MIF1 0x2a00 805 + #define GS101_SUBBBLK_OFFSET_MIF2 0x2a80 806 + #define GS101_SUBBBLK_OFFSET_MIF3 0x2b00 807 + #define GS101_SUBBBLK_OFFSET_MISC 0x2b80 808 + #define GS101_SUBBBLK_OFFSET_PERIC0 0x2c00 809 + #define GS101_SUBBBLK_OFFSET_PERIC1 0x2c80 810 + #define GS101_SUBBBLK_OFFSET_S2D 0x2d00 811 + #define GS101_SUBBLK_CONFIGURATION(blk) ((blk) + 0x00) 812 + #define GS101_SUBBLK_STATUS(blk) ((blk) + 0x04) 813 + #define GS101_SUBBLK_STATES(blk) ((blk) + 0x08) 814 + #define GS101_SUBBLK_OPTION(blk) ((blk) + 0x0c) 815 + #define GS101_SUBBLK_CTRL(blk) ((blk) + 0x10) 816 + #define GS101_SUBBLK_OUT(blk) ((blk) + 0x20) 817 + #define GS101_SUBBLK_IN(blk) ((blk) + 0x24) 818 + #define GS101_SUBBLK_INT_IN(blk) ((blk) + 0x40) 819 + #define GS101_SUBBLK_INT_EN(blk) ((blk) + 0x44) 820 + #define GS101_SUBBLK_INT_TYPE(blk) ((blk) + 0x48) 821 + #define GS101_SUBBLK_INT_DIR(blk) ((blk) + 0x4c) 822 + #define GS101_SUBBLK_MEMORY_OUT(blk) ((blk) + 0x60) 823 + #define GS101_SUBBLK_MEMORY_IN(blk) ((blk) + 0x64) 824 + 825 + #define GS101_SUBBBLK_CPU_OFFSET_APM 0x3000 826 + #define GS101_SUBBBLK_CPU_OFFSET_DBGCORE 0x3080 827 + #define GS101_SUBBBLK_CPU_OFFSET_SSS 0x3100 828 + #define GS101_SUBBLK_CPU_CONFIGURATION(blk) ((blk) + 0x00) 829 + #define GS101_SUBBLK_CPU_STATUS(blk) ((blk) + 0x04) 830 + #define GS101_SUBBLK_CPU_STATES(blk) ((blk) + 0x08) 831 + #define GS101_SUBBLK_CPU_OPTION(blk) ((blk) + 0x0c) 832 + #define GS101_SUBBLK_CPU_OUT(blk) ((blk) + 0x20) 833 + #define GS101_SUBBLK_CPU_IN(blk) ((blk) + 0x24) 834 + #define GS101_SUBBLK_CPU_INT_IN(blk) ((blk) + 0x40) 835 + #define GS101_SUBBLK_CPU_INT_EN(blk) ((blk) + 0x44) 836 + #define GS101_SUBBLK_CPU_INT_TYPE(blk) ((blk) + 0x48) 837 + #define GS101_SUBBLK_CPU_INT_DIR(blk) ((blk) + 0x4c) 838 + 839 + #define GS101_MIF_CONFIGURATION 0x3800 840 + #define GS101_MIF_STATUS 0x3804 841 + #define GS101_MIF_STATES 0x3808 842 + #define GS101_MIF_OPTION 0x380c 843 + #define GS101_MIF_CTRL 0x3810 844 + #define GS101_MIF_OUT 0x3820 845 + #define GS101_MIF_IN 0x3824 846 + #define GS101_MIF_INT_IN 0x3840 847 + #define GS101_MIF_INT_EN 0x3844 848 + #define GS101_MIF_INT_TYPE 0x3848 849 + #define GS101_MIF_INT_DIR 0x384c 850 + #define GS101_TOP_CONFIGURATION 0x3900 851 + #define GS101_TOP_STATUS 0x3904 852 + #define GS101_TOP_STATES 0x3908 853 + #define GS101_TOP_OPTION 0x390c 854 + #define GS101_TOP_OUT 0x3920 855 + #define GS101_TOP_IN 0x3924 856 + #define GS101_TOP_INT_IN 0x3940 857 + #define GS101_TOP_INT_EN 0x3944 858 + #define GS101_TOP_INT_TYPE 0x3948 859 + #define GS101_TOP_INT_DIR 0x394c 860 + #define GS101_WAKEUP_STAT 0x3950 861 + #define GS101_WAKEUP2_STAT 0x3954 862 + #define GS101_WAKEUP2_INT_IN 0x3960 863 + #define GS101_WAKEUP2_INT_EN 0x3964 864 + #define GS101_WAKEUP2_INT_TYPE 0x3968 865 + #define GS101_WAKEUP2_INT_DIR 0x396c 866 + #define GS101_SYSTEM_CONFIGURATION 0x3a00 867 + #define GS101_SYSTEM_STATUS 0x3a04 868 + #define GS101_SYSTEM_STATES 0x3a08 869 + #define GS101_SYSTEM_OPTION 0x3a0c 870 + #define GS101_SYSTEM_CTRL 0x3a10 871 + #define GS101_SPARE_CTRL 0x3a14 872 + #define GS101_USER_DEFINED_OUT 0x3a18 873 + #define GS101_SYSTEM_OUT 0x3a20 874 + #define GS101_SYSTEM_IN 0x3a24 875 + #define GS101_SYSTEM_INT_IN 0x3a40 876 + #define GS101_SYSTEM_INT_EN 0x3a44 877 + #define GS101_SYSTEM_INT_TYPE 0x3a48 878 + #define GS101_SYSTEM_INT_DIR 0x3a4c 879 + #define GS101_EINT_INT_IN 0x3a50 880 + #define GS101_EINT_INT_EN 0x3a54 881 + #define GS101_EINT_INT_TYPE 0x3a58 882 + #define GS101_EINT_INT_DIR 0x3a5c 883 + #define GS101_EINT2_INT_IN 0x3a60 884 + #define GS101_EINT2_INT_EN 0x3a64 885 + #define GS101_EINT2_INT_TYPE 0x3a68 886 + #define GS101_EINT2_INT_DIR 0x3a6c 887 + #define GS101_EINT3_INT_IN 0x3a70 888 + #define GS101_EINT3_INT_EN 0x3a74 889 + #define GS101_EINT3_INT_TYPE 0x3a78 890 + #define GS101_EINT3_INT_DIR 0x3a7c 891 + #define GS101_EINT_WAKEUP_MASK 0x3a80 892 + #define GS101_EINT_WAKEUP_MASK2 0x3a84 893 + #define GS101_EINT_WAKEUP_MASK3 0x3a88 894 + #define GS101_USER_DEFINED_INT_IN 0x3a90 895 + #define GS101_USER_DEFINED_INT_EN 0x3a94 896 + #define GS101_USER_DEFINED_INT_TYPE 0x3a98 897 + #define GS101_USER_DEFINED_INT_DIR 0x3a9c 898 + #define GS101_SCAN2DRAM_INT_IN 0x3aa0 899 + #define GS101_SCAN2DRAM_INT_EN 0x3aa4 900 + #define GS101_SCAN2DRAM_INT_TYPE 0x3aa8 901 + #define GS101_SCAN2DRAM_INT_DIR 0x3aac 902 + #define GS101_HCU_START 0x3ab0 903 + #define GS101_CUSTOM_OUT 0x3ac0 904 + #define GS101_CUSTOM_IN 0x3ac4 905 + #define GS101_CUSTOM_INT_IN 0x3ad0 906 + #define GS101_CUSTOM_INT_EN 0x3ad4 907 + #define GS101_CUSTOM_INT_TYPE 0x3ad8 908 + #define GS101_CUSTOM_INT_DIR 0x3adc 909 + #define GS101_ACK_LAST_CPU 0x3afc 910 + #define GS101_HCU_R(n) (0x3b00 + ((n) & 3) * 4) 911 + #define GS101_HCU_SP 0x3b14 912 + #define GS101_HCU_PC 0x3b18 913 + #define GS101_PMU_RAM_CTRL 0x3b20 914 + #define GS101_APM_HCU_CTRL 0x3b24 915 + #define GS101_APM_NMI_ENABLE 0x3b30 916 + #define GS101_DBGCORE_NMI_ENABLE 0x3b34 917 + #define GS101_HCU_NMI_ENABLE 0x3b38 918 + #define GS101_PWR_HOLD_WDT_ENABLE 0x3b3c 919 + #define GS101_NMI_SRC_IN 0x3b40 920 + #define GS101_RST_STAT 0x3b44 921 + #define GS101_RST_STAT_PMU 0x3b48 922 + #define GS101_HPM_INT_IN 0x3b60 923 + #define GS101_HPM_INT_EN 0x3b64 924 + #define GS101_HPM_INT_TYPE 0x3b68 925 + #define GS101_HPM_INT_DIR 0x3b6c 926 + #define GS101_S2D_AUTH 0x3b70 927 + #define GS101_BOOT_STAT 0x3b74 928 + #define GS101_PMLINK_OUT 0x3c00 929 + #define GS101_PMLINK_AOC_OUT 0x3c04 930 + #define GS101_PMLINK_AOC_CTRL 0x3c08 931 + #define GS101_TCXO_BUF_CTRL 0x3c10 932 + #define GS101_ADD_CTRL 0x3c14 933 + #define GS101_HCU_TIMEOUT_RESET 0x3c20 934 + #define GS101_HCU_TIMEOUT_SCAN2DRAM 0x3c24 935 + #define GS101_TIMER(n) (0x3c80 + ((n) & 3) * 4) 936 + #define GS101_PPC_MIF(n) (0x3c90 + ((n) & 3) * 4) 937 + #define GS101_PPC_CORE 0x3ca0 938 + #define GS101_PPC_EH 0x3ca4 939 + #define GS101_PPC_CPUCL1_0 0x3ca8 940 + #define GS101_PPC_CPUCL1_1 0x3cac 941 + #define GS101_EXT_REGULATOR_MIF_DURATION 0x3cb0 942 + #define GS101_EXT_REGULATOR_TOP_DURATION 0x3cb4 943 + #define GS101_EXT_REGULATOR_CPUCL2_DURATION 0x3cb8 944 + #define GS101_EXT_REGULATOR_CPUCL1_DURATION 0x3cbc 945 + #define GS101_EXT_REGULATOR_G3D_DURATION 0x3cc0 946 + #define GS101_EXT_REGULATOR_TPU_DURATION 0x3cc4 947 + #define GS101_TCXO_DURATION 0x3cc8 948 + #define GS101_BURNIN_CTRL 0x3cd0 949 + #define GS101_JTAG_DBG_DET 0x3cd4 950 + #define GS101_MMC_CONWKUP_CTRL 0x3cd8 951 + #define GS101_USBDPPHY0_USBDP_WAKEUP 0x3cdc 952 + #define GS101_TMU_TOP_TRIP 0x3ce0 953 + #define GS101_TMU_SUB_TRIP 0x3ce4 954 + #define GS101_MEMORY_CEN 0x3d00 955 + #define GS101_MEMORY_PGEN 0x3d04 956 + #define GS101_MEMORY_RET 0x3d08 957 + #define GS101_MEMORY_PGEN_FEEDBACK 0x3d0c 958 + #define GS101_MEMORY_SMX 0x3d10 959 + #define GS101_MEMORY_SMX_FEEDBACK 0x3d14 960 + #define GS101_SLC_PCH_CHANNEL 0x3d20 961 + #define GS101_SLC_PCH_CB 0x3d24 962 + #define GS101_FORCE_NOMC 0x3d3c 963 + #define GS101_FORCE_BOOST 0x3d4c 964 + #define GS101_PMLINK_SLC_REQ 0x3d50 965 + #define GS101_PMLINK_SLC_ACK 0x3d54 966 + #define GS101_PMLINK_SLC_BUSY 0x3d58 967 + #define GS101_BOOTSYNC_OUT 0x3d80 968 + #define GS101_BOOTSYNC_IN 0x3d84 969 + #define GS101_SCAN_READY_OUT 0x3d88 970 + #define GS101_SCAN_READY_IN 0x3d8c 971 + #define GS101_GSA_RESTORE 0x3d90 972 + #define GS101_ALIVE_OTP_LATCH 0x3d94 973 + #define GS101_DEBUG_OVERRIDE 0x3d98 974 + #define GS101_WDT_OPTION 0x3d9c 975 + #define GS101_AOC_WDT_CFG 0x3da0 976 + #define GS101_CTRL_SECJTAG_ALIVE 0x3da4 977 + #define GS101_CTRL_DIV_PLL_ALV_DIVLOW 0x3e00 978 + #define GS101_CTRL_MUX_CLK_APM_REFSRC_AUTORESTORE 0x3e04 979 + #define GS101_CTRL_MUX_CLK_APM_REFSRC 0x3e08 980 + #define GS101_CTRL_MUX_CLK_APM_REF 0x3e0c 981 + #define GS101_CTRL_MUX_PLL_ALV_DIV4 0x3e10 982 + #define GS101_CTRL_PLL_ALV_DIV4 0x3e14 983 + #define GS101_CTRL_OSCCLK_APMGSA 0x3e18 984 + #define GS101_CTRL_BLK_AOC_CLKS 0x3e1c 985 + #define GS101_CTRL_PLL_ALV_LOCK 0x3e20 986 + #define GS101_CTRL_CLKDIV__CLKRTC 0x3e24 987 + #define GS101_CTRL_SOC32K 0x3e30 988 + #define GS101_CTRL_STM_PMU 0x3e34 989 + #define GS101_CTRL_PMU_DEBUG 0x3e38 990 + #define GS101_CTRL_DEBUG_UART 0x3e3c 991 + #define GS101_CTRL_TCK 0x3e40 992 + #define GS101_CTRL_SBU_SW_EN 0x3e44 993 + #define GS101_PAD_CTRL_CLKOUT0 0x3e80 994 + #define GS101_PAD_CTRL_CLKOUT1 0x3e84 995 + #define GS101_PAD_CTRL_APM_24MOUT_0 0x3e88 996 + #define GS101_PAD_CTRL_APM_24MOUT_1 0x3e8c 997 + #define GS101_PAD_CTRL_IO_FORCE_RETENTION 0x3e90 998 + #define GS101_PAD_CTRL_APACTIVE_n 0x3e94 999 + #define GS101_PAD_CTRL_TCXO_ON 0x3e98 1000 + #define GS101_PAD_CTRL_PWR_HOLD 0x3e9c 1001 + #define GS101_PAD_CTRL_RESETO_n 0x3ea0 1002 + #define GS101_PAD_CTRL_WRESETO_n 0x3ea4 1003 + #define GS101_PHY_CTRL_USB20 0x3eb0 1004 + #define GS101_PHY_CTRL_USBDP 0x3eb4 1005 + #define GS101_PHY_CTRL_MIPI_DCPHY_M4M4 0x3eb8 1006 + #define GS101_PHY_CTRL_MIPI_DCPHY_S4S4S4S4 0x3ebc 1007 + #define GS101_PHY_CTRL_PCIE_GEN4_0 0x3ec0 1008 + #define GS101_PHY_CTRL_PCIE_GEN4_1 0x3ec4 1009 + #define GS101_PHY_CTRL_UFS 0x3ec8 683 1010 684 1011 /* PMU INTR GEN */ 685 1012 #define GS101_GRP1_INTR_BID_UPEND (0x0108)