diff options
author | Mourad Goumrhar <Mourad.Goumrhar@se.com> | 2019-11-08 11:34:27 +0100 |
---|---|---|
committer | Ryan Harkin <ryan.harkin@linaro.org> | 2020-07-24 18:02:33 +0100 |
commit | 193a1d7381585280dd00ee8db504186f58ade6f3 (patch) | |
tree | 006984cd908908f2953325c49d33365c60dc3bba | |
parent | 25eb01dbf10fd218999080bb6c33658090b55f4b (diff) |
RZN1: reg_auth: refactor system register access authorization
Refactor the code by moving the list of register auth
to an external header file in RZN1 platform directory.
Use the list as a blacklist to allow everything by default
and only explicitly block critical registers.
Signed-off-by: Mourad Goumrhar <Mourad.Goumrhar@se.com>
Change-Id: Ib0a7ffe10c3516a72d6cdcb9abef37484f2dd6ae
-rw-r--r-- | core/arch/arm/plat-rzn1/rzn1_regauth.h | 280 | ||||
-rw-r--r-- | core/arch/arm/sm/sm.c | 278 |
2 files changed, 294 insertions, 264 deletions
diff --git a/core/arch/arm/plat-rzn1/rzn1_regauth.h b/core/arch/arm/plat-rzn1/rzn1_regauth.h new file mode 100644 index 00000000..3c308c45 --- /dev/null +++ b/core/arch/arm/plat-rzn1/rzn1_regauth.h @@ -0,0 +1,280 @@ +#ifndef _RZN1_REGAUTH_H +#define _RZN1_REGAUTH_H + + +typedef const struct { + unsigned long paddr; + unsigned long rmask; + unsigned long wmask; +} regauth_t; + +static regauth_t regauth[] = { + // This list must be sorted by paddr + /* OTP */ + { .paddr=0x40007000, .rmask=0UL, .wmask=0UL }, /* OTPWCTRL */ + /* System Controller */ + { .paddr=0x4000C064, .rmask=0xFFFFFFFF, .wmask=0xFFFFFFE0 }, /* PWRCTRL_DDRC */ + { .paddr=0x4000C204, .rmask=0x0UL, .wmask=0x0UL }, /* BOOTADDR */ + /* DDR CTRL */ + { .paddr=0x4000D16C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_91 */ + { .paddr=0x4000D170, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_92 */ + { .paddr=0x4000D174, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_93 */ + { .paddr=0x4000D178, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_94 */ + { .paddr=0x4000D17C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_95 */ + { .paddr=0x4000D180, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_96 */ + { .paddr=0x4000D184, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_97 */ + { .paddr=0x4000D188, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_98 */ + { .paddr=0x4000D18C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_99 */ + { .paddr=0x4000D190, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_100 */ + { .paddr=0x4000D194, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_101 */ + { .paddr=0x4000D198, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_102 */ + { .paddr=0x4000D19C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_103 */ + { .paddr=0x4000D1A0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_104 */ + { .paddr=0x4000D1A4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_105 */ + { .paddr=0x4000D1A8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_106 */ + { .paddr=0x4000D1AC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_107 */ + { .paddr=0x4000D1B0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_108 */ + { .paddr=0x4000D1B4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_109 */ + { .paddr=0x4000D1B8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_110 */ + { .paddr=0x4000D1BC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_111 */ + { .paddr=0x4000D1C0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_112 */ + { .paddr=0x4000D1C4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_113 */ + { .paddr=0x4000D1C8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_114 */ + { .paddr=0x4000D1CC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_115 */ + { .paddr=0x4000D1D0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_116 */ + { .paddr=0x4000D1D4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_117 */ + { .paddr=0x4000D1D8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_118 */ + { .paddr=0x4000D1DC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_119 */ + { .paddr=0x4000D1E0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_120 */ + { .paddr=0x4000D1E4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_121 */ + { .paddr=0x4000D1E8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_122 */ + { .paddr=0x4000D1EC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_123 */ + { .paddr=0x4000D1F0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_124 */ + { .paddr=0x4000D1F4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_125 */ + { .paddr=0x4000D1F8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_126 */ + { .paddr=0x4000D1FC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_127 */ + { .paddr=0x4000D200, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_128 */ + { .paddr=0x4000D204, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_129 */ + { .paddr=0x4000D208, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_130 */ + { .paddr=0x4000D20C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_131 */ + { .paddr=0x4000D210, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_132 */ + { .paddr=0x4000D214, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_133 */ + { .paddr=0x4000D218, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_134 */ + { .paddr=0x4000D21C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_135 */ + { .paddr=0x4000D220, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_136 */ + { .paddr=0x4000D224, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_137 */ + { .paddr=0x4000D228, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_138 */ + { .paddr=0x4000D22C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_139 */ + { .paddr=0x4000D230, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_140 */ + { .paddr=0x4000D234, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_141 */ + { .paddr=0x4000D238, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_142 */ + { .paddr=0x4000D23C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_143 */ + { .paddr=0x4000D240, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_144 */ + { .paddr=0x4000D244, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_145 */ + { .paddr=0x4000D248, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_146 */ + { .paddr=0x4000D24C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_147 */ + { .paddr=0x4000D250, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_148 */ + { .paddr=0x4000D254, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_149 */ + { .paddr=0x4000D258, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_150 */ + { .paddr=0x4000D25C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_151 */ + { .paddr=0x4000D260, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_152 */ + { .paddr=0x4000D264, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_153 */ + { .paddr=0x4000D268, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_154 */ + { .paddr=0x4000D26C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_155 */ + { .paddr=0x4000D270, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_156 */ + { .paddr=0x4000D274, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_157 */ + { .paddr=0x4000D278, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_158 */ + { .paddr=0x4000D27C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_159 */ + { .paddr=0x4000D280, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_160 */ + { .paddr=0x4000D284, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_161 */ + { .paddr=0x4000D288, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_162 */ + { .paddr=0x4000D28C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_163 */ + { .paddr=0x4000D290, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_164 */ + { .paddr=0x4000D294, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_165 */ + { .paddr=0x4000D298, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_166 */ + { .paddr=0x4000D29C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_167 */ + { .paddr=0x4000D2A0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_168 */ + { .paddr=0x4000D2A4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_169 */ + { .paddr=0x4000D2A8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_170 */ + { .paddr=0x4000D2AC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_171 */ + { .paddr=0x4000D2B0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_172 */ + { .paddr=0x4000D2B4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_173 */ + { .paddr=0x4000D2B8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_174 */ + { .paddr=0x4000D2BC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_175 */ + { .paddr=0x4000D2C0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_176 */ + { .paddr=0x4000D2C4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_177 */ + { .paddr=0x4000D2C8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_178 */ + { .paddr=0x4000D2CC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_179 */ + { .paddr=0x4000D2D0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_180 */ + { .paddr=0x4000D2D4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_181 */ + { .paddr=0x4000D2D8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_182 */ + { .paddr=0x4000D2DC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_183 */ + { .paddr=0x4000D2E0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_184 */ + { .paddr=0x4000D2E4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_185 */ + { .paddr=0x4000D2E8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_186 */ + { .paddr=0x4000D2EC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_187 */ + { .paddr=0x4000D2F0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_188 */ + { .paddr=0x4000D2F4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_189 */ + { .paddr=0x4000D2F8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_190 */ + { .paddr=0x4000D2FC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_191 */ + { .paddr=0x4000D300, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_192 */ + { .paddr=0x4000D304, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_193 */ + { .paddr=0x4000D308, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_194 */ + { .paddr=0x4000D30C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_195 */ + { .paddr=0x4000D310, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_196 */ + { .paddr=0x4000D314, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_197 */ + { .paddr=0x4000D318, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_198 */ + { .paddr=0x4000D31C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_199 */ + { .paddr=0x4000D320, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_200 */ + { .paddr=0x4000D324, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_201 */ + { .paddr=0x4000D328, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_202 */ + { .paddr=0x4000D32C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_203 */ + { .paddr=0x4000D330, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_204 */ + { .paddr=0x4000D334, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_205 */ + { .paddr=0x4000D338, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_206 */ + { .paddr=0x4000D33C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_207 */ + { .paddr=0x4000D340, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_208 */ + { .paddr=0x4000D344, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_209 */ + { .paddr=0x4000D348, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_210 */ + { .paddr=0x4000D34C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_211 */ + { .paddr=0x4000D350, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_212 */ + { .paddr=0x4000D354, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_213 */ + { .paddr=0x4000D358, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_214 */ + { .paddr=0x4000D35C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_215 */ + { .paddr=0x4000D360, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_216 */ + { .paddr=0x4000D364, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_217 */ + { .paddr=0x4000D368, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_218 */ + { .paddr=0x4000D36C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_219 */ + { .paddr=0x4000D370, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_220 */ + { .paddr=0x4000D374, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_221 */ + { .paddr=0x4000D378, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_222 */ + { .paddr=0x4000D37C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_223 */ + { .paddr=0x4000D380, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_224 */ + { .paddr=0x4000D384, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_225 */ + { .paddr=0x4000D388, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_226 */ + { .paddr=0x4000D38C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_227 */ + { .paddr=0x4000D390, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_228 */ + { .paddr=0x4000D394, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_229 */ + { .paddr=0x4000D398, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_230 */ + { .paddr=0x4000D39C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_231 */ + { .paddr=0x4000D3A0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_232 */ + { .paddr=0x4000D3A4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_233 */ + { .paddr=0x4000D3A8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_234 */ + { .paddr=0x4000D3AC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_235 */ + { .paddr=0x4000D3B0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_236 */ + { .paddr=0x4000D3B4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_237 */ + { .paddr=0x4000D3B8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_238 */ + { .paddr=0x4000D3BC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_239 */ + { .paddr=0x4000D3C0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_240 */ + { .paddr=0x4000D3C4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_241 */ + { .paddr=0x4000D3C8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_242 */ + { .paddr=0x4000D3CC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_243 */ + { .paddr=0x4000D3D0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_244 */ + { .paddr=0x4000D3D4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_245 */ + { .paddr=0x4000D3D8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_246 */ + { .paddr=0x4000D3DC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_247 */ + { .paddr=0x4000D3E0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_248 */ + { .paddr=0x4000D3E4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_249 */ + { .paddr=0x4000D3E8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_250 */ + { .paddr=0x4000D3EC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_251 */ + { .paddr=0x4000D3F0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_252 */ + { .paddr=0x4000D3F4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_253 */ + { .paddr=0x4000D3F8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_254 */ + { .paddr=0x4000D3FC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_255 */ + { .paddr=0x4000D400, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_256 */ + { .paddr=0x4000D404, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_257 */ + { .paddr=0x4000D408, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_258 */ + { .paddr=0x4000D40C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_259 */ + { .paddr=0x4000D410, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_260 */ + { .paddr=0x4000D414, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_261 */ + { .paddr=0x4000D418, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_262 */ + { .paddr=0x4000D41C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_263 */ + { .paddr=0x4000D420, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_264 */ + { .paddr=0x4000D424, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_265 */ + { .paddr=0x4000D428, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_266 */ + { .paddr=0x4000D42C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_267 */ + { .paddr=0x4000D430, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_268 */ + { .paddr=0x4000D434, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_269 */ + { .paddr=0x4000D438, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_270 */ + { .paddr=0x4000D43C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_271 */ + { .paddr=0x4000D440, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_272 */ + { .paddr=0x4000D444, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_273 */ + { .paddr=0x4000D448, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_274 */ + { .paddr=0x4000D44C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_275 */ + { .paddr=0x4000D450, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_276 */ + { .paddr=0x4000D454, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_277 */ + { .paddr=0x4000D458, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_278 */ + { .paddr=0x4000D45C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_279 */ + { .paddr=0x4000D460, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_280 */ + { .paddr=0x4000D464, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_281 */ + { .paddr=0x4000D468, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_282 */ + { .paddr=0x4000D46C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_283 */ + { .paddr=0x4000D470, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_284 */ + { .paddr=0x4000D474, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_285 */ + { .paddr=0x4000D478, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_286 */ + { .paddr=0x4000D47C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_287 */ + { .paddr=0x4000D480, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_288 */ + { .paddr=0x4000D484, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_289 */ + { .paddr=0x4000D488, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_290 */ + { .paddr=0x4000D48C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_291 */ + { .paddr=0x4000D490, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_292 */ + { .paddr=0x4000D494, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_293 */ + { .paddr=0x4000D498, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_294 */ + { .paddr=0x4000D49C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_295 */ + { .paddr=0x4000D4A0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_296 */ + { .paddr=0x4000D4A4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_297 */ + { .paddr=0x4000D4A8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_298 */ + { .paddr=0x4000D4AC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_299 */ + { .paddr=0x4000D4B0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_300 */ + { .paddr=0x4000D4B4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_301 */ + { .paddr=0x4000D4B8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_302 */ + { .paddr=0x4000D4BC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_303 */ + { .paddr=0x4000D4C0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_304 */ + { .paddr=0x4000D4C4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_305 */ + { .paddr=0x4000D4C8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_306 */ + { .paddr=0x4000D4CC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_307 */ + { .paddr=0x4000D4D0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_308 */ + { .paddr=0x4000D4D4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_309 */ + { .paddr=0x4000D4D8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_310 */ + { .paddr=0x4000D4DC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_311 */ + { .paddr=0x4000D4E0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_312 */ + { .paddr=0x4000D4E4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_313 */ + { .paddr=0x4000D4E8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_314 */ + { .paddr=0x4000D4EC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_315 */ + { .paddr=0x4000D4F0, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_316 */ + { .paddr=0x4000D4F4, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_317 */ + { .paddr=0x4000D4F8, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_318 */ + { .paddr=0x4000D4FC, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_319 */ + { .paddr=0x4000D500, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_320 */ + { .paddr=0x4000D504, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_321 */ + { .paddr=0x4000D508, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_322 */ + { .paddr=0x4000D50C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_323 */ + { .paddr=0x4000D510, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_324 */ + { .paddr=0x4000D514, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_325 */ + { .paddr=0x4000D518, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_326 */ + { .paddr=0x4000D51C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_327 */ + { .paddr=0x4000D520, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_328 */ + { .paddr=0x4000D524, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_329 */ + { .paddr=0x4000D528, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_330 */ + { .paddr=0x4000D52C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_331 */ + { .paddr=0x4000D530, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_332 */ + { .paddr=0x4000D534, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_333 */ + { .paddr=0x4000D538, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_334 */ + { .paddr=0x4000D53C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_335 */ + { .paddr=0x4000D540, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_336 */ + { .paddr=0x4000D544, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_337 */ + { .paddr=0x4000D548, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_338 */ + { .paddr=0x4000D54C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_339 */ + { .paddr=0x4000D550, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_340 */ + { .paddr=0x4000D554, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_341 */ + { .paddr=0x4000D558, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_342 */ + { .paddr=0x4000D55C, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_343 */ + { .paddr=0x4000D560, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_344 */ + { .paddr=0x4000D564, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_345 */ + { .paddr=0x4000D568, .rmask=0x0UL, .wmask=0x0UL }, /* DDR_CTL_346 */ + { .paddr=0x4000E000, .rmask=~0UL, .wmask=0xFFFFFFFE }, /* UNCCTRL */ + { .paddr=0x4000E004, .rmask=~0UL, .wmask=0xFFFFFFFE }, /* DLLCTRL */ +}; + + +#endif /* _RZN1_REGAUTH_H */ diff --git a/core/arch/arm/sm/sm.c b/core/arch/arm/sm/sm.c index 9fd5430e..6b08d767 100644 --- a/core/arch/arm/sm/sm.c +++ b/core/arch/arm/sm/sm.c @@ -16,256 +16,11 @@ #include "sm_private.h" #include <console.h> #include <mm/core_memprot.h> +#include <rzn1_regauth.h> #define OEM_SVC_PUTC 0x83000001 #define OEM_SVC_SYSREG 0x83000010 -typedef const struct { - unsigned long paddr; - unsigned long rmask; - unsigned long wmask; -} regauth_t; - -static regauth_t regauth[] = { - // This list must be sorted by paddr - { .paddr=0x4000c000, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_CFG_USB - { .paddr=0x4000c008, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_CFG_SDIO0 - { .paddr=0x4000c00c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_SDIO0 - { .paddr=0x4000c010, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_PWRSTAT_SDIO0 - { .paddr=0x4000c01c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_USB - { .paddr=0x4000c020, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_PWRSTAT_USB - { .paddr=0x4000c024, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_CRYPTO - { .paddr=0x4000c02c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_MSEBI - { .paddr=0x4000c034, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG0_0 - { .paddr=0x4000c03c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG0_1 - { .paddr=0x4000c040, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG1_FW1 - { .paddr=0x4000c044, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG1_FW2 - { .paddr=0x4000c048, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PGEXT2_PR6DIV - { .paddr=0x4000c04c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_DMA - { .paddr=0x4000c050, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_NFLASH - { .paddr=0x4000c054, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_QSPI0 - { .paddr=0x4000c05c, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_PWRSTAT_NFLASH - { .paddr=0x4000c060, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_PWRSTAT_QSPI0 - { .paddr=0x4000c064, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_PWRCTRL_DDRC - { .paddr=0x4000c068, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_EETH - { .paddr=0x4000c06c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_MAC0 - { .paddr=0x4000c070, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_MAC1 - { .paddr=0x4000c074, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_PWRSTAT_DDRC - { .paddr=0x4000c07c, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_PWRSTAT_MAC1 - { .paddr=0x4000c080, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_ECAT - { .paddr=0x4000c084, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_SERCOS - { .paddr=0x4000c090, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_HSR - { .paddr=0x4000c094, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_SWITCHDIV - { .paddr=0x4000c0a0, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_CFG_DMAMUX - { .paddr=0x4000c0c0, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_USBSTAT - { .paddr=0x4000c0c4, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_CFG_SDIO1 - { .paddr=0x4000c0c8, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_SDIO1 - { .paddr=0x4000c0e0, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_OPPDIV - { .paddr=0x4000c0e4, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_CA7DIV - { .paddr=0x4000c0e8, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG2_25MHZ - { .paddr=0x4000c0ec, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG1_PR2 - { .paddr=0x4000c0f0, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG3_48MHZ - { .paddr=0x4000c0f4, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG4_FW - { .paddr=0x4000c0f8, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG1_PR2DIV - { .paddr=0x4000c0fc, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG1_PR3 - { .paddr=0x4000c100, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG1_PR3DIV - { .paddr=0x4000c104, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG1_PR4 - { .paddr=0x4000c108, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG1_PR4DIV - { .paddr=0x4000c10c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG4_PR1 - { .paddr=0x4000c110, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG4_PR1DIV - { .paddr=0x4000c114, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PGEXT2_PR6 - { .paddr=0x4000c118, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG5_PR5 - { .paddr=0x4000c11c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG5_PR5DIV - { .paddr=0x4000c120, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_RSTEN - { .paddr=0x4000c124, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_QSPI0DIV - { .paddr=0x4000c128, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_SDIO0DIV - { .paddr=0x4000c12c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_SDIO1DIV - { .paddr=0x4000c130, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_SWITCH - { .paddr=0x4000c134, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG0_ADCDIV - { .paddr=0x4000c138, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG0_I2CDIV - { .paddr=0x4000c13c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG0_UARTDIV - { .paddr=0x4000c140, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_RTC - { .paddr=0x4000c148, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_NFLASHDIV - { .paddr=0x4000c150, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_PG0_MOTORDIV - { .paddr=0x4000c154, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_ROM - { .paddr=0x4000c15c, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_PWRSTAT_PG2_25MHZ - { .paddr=0x4000c160, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_PWRSTAT_PG3_48MHZ - { .paddr=0x4000c174, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_CM3 - { .paddr=0x4000c184, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_RINCTRL - { .paddr=0x4000c188, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_SWITCHCTRL - { .paddr=0x4000c18c, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_HWRTOS - { .paddr=0x4000c190, .rmask=~0UL, .wmask=~0UL }, // RZN1_SYSCTRL_REG_PWRCTRL_HWRTOS_MDCDIV - { .paddr=0x4000c19c, .rmask=~0UL, .wmask=0 }, // RZN1_SYSCTRL_REG_VERSION - { .paddr=0x40060000, .rmask=~0UL, .wmask=~0UL }, // UART0 - { .paddr=0x40060004, .rmask=~0UL, .wmask=~0UL }, // UART0 - { .paddr=0x40060008, .rmask=~0UL, .wmask=~0UL }, // UART0 - { .paddr=0x4006000c, .rmask=~0UL, .wmask=~0UL }, // UART0 - { .paddr=0x40060010, .rmask=~0UL, .wmask=~0UL }, // UART0 - { .paddr=0x40064000, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064004, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064010, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064014, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064018, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x4006401c, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064020, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x4006402c, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064030, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064034, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064038, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x4006403c, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064040, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064054, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064060, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x4006406c, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064070, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064074, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064078, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x4006407c, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40064080, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x4006409c, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x400640f4, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x400640f8, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x400640fc, .rmask=~0UL, .wmask=~0UL }, // I2C1 - { .paddr=0x40067000, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067004, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006700c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067028, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067034, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067038, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006703c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067040, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067044, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067048, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006704c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067050, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067058, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006705c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067060, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067064, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067068, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006706c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067070, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067074, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067078, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006708c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067090, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067094, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067098, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006709c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670a0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670a4, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670a8, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670ac, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670b0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670b4, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670b8, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670bc, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670c0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670c4, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670c8, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670cc, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670d0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670d4, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670d8, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670dc, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670e0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670e4, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670e8, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670ec, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670f0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670f8, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400670fc, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067100, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067104, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067108, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006710c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067110, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067114, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067118, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006711c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067120, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067124, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067128, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006712c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067130, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067134, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067138, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006713c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067140, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067144, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067148, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006714c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067150, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067154, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067158, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006715c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067160, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067164, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067168, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006716c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067170, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067174, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067178, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006717c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067180, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067184, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067188, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006718c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067190, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067194, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067198, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006719c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671a0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671b4, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671b8, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671bc, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671c0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671c4, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671c8, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671cc, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671d0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671dc, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671e0, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671e4, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671e8, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x400671fc, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067200, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067204, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067208, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006720c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067210, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067214, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067218, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006721c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067220, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067224, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067228, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006722c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067230, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067234, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067238, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006723c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067240, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067244, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006724c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067250, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067254, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067258, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006725c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067260, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067264, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067268, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006726c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067270, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067274, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067278, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x4006727c, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067280, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067284, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067288, .rmask=~0UL, .wmask=~0UL }, // PINMUX - { .paddr=0x40067400, .rmask=~0UL, .wmask=~0UL }, // PINMUX lock -}; - static regauth_t *get_regauth(unsigned long paddr) { unsigned int min = 0; @@ -285,36 +40,31 @@ static uint32_t oem_sysreg (unsigned long addr, unsigned long mask, uint32_t *pv regauth_t *auth; volatile unsigned long *reg; - // Handle unknown registers + // Allow registers not in the list if ( !(auth = get_regauth(addr)) ) { - if ( 1 ) { // Troubleshoot code - static regauth_t pass = {.rmask = ~0UL,.wmask = ~0UL}; - auth = &pass; - DMSG("Allow %s access to unknown register at 0x%lx", mask ? "write" : "read ", addr); - } else { - return 1; - } + static regauth_t pass = {.rmask = ~0UL,.wmask = ~0UL}; + auth = &pass; } // Sanity check reg = (unsigned long*)core_mmu_get_va(addr, MEM_AREA_IO_SEC); - if ( mask & ~auth->wmask ) { - DMSG("Blocking write of 0x%lx to register 0x%lx (0x%lx)", *pvalue, addr, *reg); - } // Perform allowed operations if (mask) { // Write mask &= auth->wmask; - //if (mask) { DMSG("Write @%lx value 0x%lx",addr,*pvalue); } - if ( mask == ~0UL ) { // Full write + if ( mask == 0UL ) { // Bits to write are protected + DMSG("Blocking write of 0x%x to register 0x%lx (0x%lx)", *pvalue, addr, *reg); + } else if ( mask == ~0UL ) { // Full write *reg = *pvalue; - } else - if (mask) { // Partial write with read ahead - *reg = *pvalue = ( *reg & ~mask ) | ( *pvalue & mask ); + } else { // Partial write with read ahead + *reg = ( *reg & ~mask ) | ( *pvalue & mask ); } } else { // Read - *pvalue = *reg & auth->rmask; - //DMSG("Read @%lx value 0x%lx",addr,*pvalue); + if ( auth->rmask == 0UL ) { + DMSG("Blocking read of register 0x%lx (0x%lx)", addr, *reg); + } else { + *pvalue = *reg & auth->rmask; + } } return 0; } |