1 /* 2 * Copyright 2021 NXP 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #include <mmio.h> 9 10 #ifdef ERRATA_SOC_A050426 11 void erratum_a050426(void) 12 { 13 uint32_t i, val3, val4; 14 15 /* Enable BIST to access Internal memory locations */ 16 val3 = mmio_read_32(0x700117E60); 17 mmio_write_32(0x700117E60, (val3 | 0x80000001)); 18 val4 = mmio_read_32(0x700117E90); 19 mmio_write_32(0x700117E90, (val4 & 0xFFDFFFFF)); 20 21 /* wriop Internal Memory.*/ 22 for (i = 0U; i < 4U; i++) { 23 mmio_write_32(0x706312000 + (i * 4), 0x55555555); 24 mmio_write_32(0x706312400 + (i * 4), 0x55555555); 25 mmio_write_32(0x706312800 + (i * 4), 0x55555555); 26 mmio_write_32(0x706314000 + (i * 4), 0x55555555); 27 mmio_write_32(0x706314400 + (i * 4), 0x55555555); 28 mmio_write_32(0x706314800 + (i * 4), 0x55555555); 29 mmio_write_32(0x706314c00 + (i * 4), 0x55555555); 30 } 31 for (i = 0U; i < 3U; i++) { 32 mmio_write_32(0x706316000 + (i * 4), 0x55555555); 33 mmio_write_32(0x706320000 + (i * 4), 0x55555555); 34 mmio_write_32(0x706320400 + (i * 4), 0x55555555); 35 } 36 for (i = 0U; i < 2U; i++) { 37 mmio_write_32(0x70640a000 + (i * 4), 0x55555555); 38 } 39 for (i = 0U; i < 3U; i++) { 40 mmio_write_32(0x706518000 + (i * 4), 0x55555555); 41 mmio_write_32(0x706519000 + (i * 4), 0x55555555); 42 } 43 for (i = 0U; i < 4U; i++) { 44 mmio_write_32(0x706522000 + (i * 4), 0x55555555); 45 mmio_write_32(0x706522800 + (i * 4), 0x55555555); 46 mmio_write_32(0x706523000 + (i * 4), 0x55555555); 47 mmio_write_32(0x706523800 + (i * 4), 0x55555555); 48 mmio_write_32(0x706524000 + (i * 4), 0x55555555); 49 mmio_write_32(0x706524800 + (i * 4), 0x55555555); 50 mmio_write_32(0x706608000 + (i * 4), 0x55555555); 51 mmio_write_32(0x706608800 + (i * 4), 0x55555555); 52 mmio_write_32(0x706609000 + (i * 4), 0x55555555); 53 mmio_write_32(0x706609800 + (i * 4), 0x55555555); 54 mmio_write_32(0x70660a000 + (i * 4), 0x55555555); 55 mmio_write_32(0x70660a800 + (i * 4), 0x55555555); 56 mmio_write_32(0x70660b000 + (i * 4), 0x55555555); 57 mmio_write_32(0x70660b800 + (i * 4), 0x55555555); 58 } 59 for (i = 0U; i < 3U; i++) { 60 mmio_write_32(0x70660c000 + (i * 4), 0x55555555); 61 mmio_write_32(0x70660c800 + (i * 4), 0x55555555); 62 } 63 for (i = 0U; i < 2U; i++) { 64 mmio_write_32(0x706718000 + (i * 4), 0x55555555); 65 mmio_write_32(0x706718800 + (i * 4), 0x55555555); 66 } 67 mmio_write_32(0x706b0a000 + (i * 4), 0x55555555); 68 69 for (i = 0U; i < 4U; i++) { 70 mmio_write_32(0x706b0e000 + (i * 4), 0x55555555); 71 mmio_write_32(0x706b0e800 + (i * 4), 0x55555555); 72 } 73 for (i = 0U; i < 2U; i++) { 74 mmio_write_32(0x706b10000 + (i * 4), 0x55555555); 75 mmio_write_32(0x706b10400 + (i * 4), 0x55555555); 76 } 77 for (i = 0U; i < 4U; i++) { 78 mmio_write_32(0x706b14000 + (i * 4), 0x55555555); 79 mmio_write_32(0x706b14800 + (i * 4), 0x55555555); 80 mmio_write_32(0x706b15000 + (i * 4), 0x55555555); 81 mmio_write_32(0x706b15800 + (i * 4), 0x55555555); 82 } 83 mmio_write_32(0x706e12000 + (i * 4), 0x55555555); 84 85 for (i = 0U; i < 4U; i++) { 86 mmio_write_32(0x706e14000 + (i * 4), 0x55555555); 87 mmio_write_32(0x706e14800 + (i * 4), 0x55555555); 88 } 89 for (i = 0U; i < 2U; i++) { 90 mmio_write_32(0x706e16000 + (i * 4), 0x55555555); 91 mmio_write_32(0x706e16400 + (i * 4), 0x55555555); 92 } 93 for (i = 0U; i < 3U; i++) { 94 mmio_write_32(0x706e1a000 + (i * 4), 0x55555555); 95 mmio_write_32(0x706e1a800 + (i * 4), 0x55555555); 96 mmio_write_32(0x706e1b000 + (i * 4), 0x55555555); 97 mmio_write_32(0x706e1b800 + (i * 4), 0x55555555); 98 mmio_write_32(0x706e1c000 + (i * 4), 0x55555555); 99 mmio_write_32(0x706e1c800 + (i * 4), 0x55555555); 100 mmio_write_32(0x706e1e000 + (i * 4), 0x55555555); 101 mmio_write_32(0x706e1e800 + (i * 4), 0x55555555); 102 mmio_write_32(0x706e1f000 + (i * 4), 0x55555555); 103 mmio_write_32(0x706e1f800 + (i * 4), 0x55555555); 104 mmio_write_32(0x706e20000 + (i * 4), 0x55555555); 105 mmio_write_32(0x706e20800 + (i * 4), 0x55555555); 106 } 107 for (i = 0U; i < 4U; i++) { 108 mmio_write_32(0x707108000 + (i * 4), 0x55555555); 109 mmio_write_32(0x707109000 + (i * 4), 0x55555555); 110 mmio_write_32(0x70710a000 + (i * 4), 0x55555555); 111 } 112 for (i = 0U; i < 2U; i++) { 113 mmio_write_32(0x70711c000 + (i * 4), 0x55555555); 114 mmio_write_32(0x70711c800 + (i * 4), 0x55555555); 115 mmio_write_32(0x70711d000 + (i * 4), 0x55555555); 116 mmio_write_32(0x70711d800 + (i * 4), 0x55555555); 117 mmio_write_32(0x70711e000 + (i * 4), 0x55555555); 118 } 119 for (i = 0U; i < 4U; i++) { 120 mmio_write_32(0x707120000 + (i * 4), 0x55555555); 121 mmio_write_32(0x707121000 + (i * 4), 0x55555555); 122 } 123 for (i = 0U; i < 3U; i++) { 124 mmio_write_32(0x707122000 + (i * 4), 0x55555555); 125 mmio_write_32(0x70725a000 + (i * 4), 0x55555555); 126 mmio_write_32(0x70725b000 + (i * 4), 0x55555555); 127 mmio_write_32(0x70725c000 + (i * 4), 0x55555555); 128 mmio_write_32(0x70725e000 + (i * 4), 0x55555555); 129 mmio_write_32(0x70725e400 + (i * 4), 0x55555555); 130 mmio_write_32(0x70725e800 + (i * 4), 0x55555555); 131 mmio_write_32(0x70725ec00 + (i * 4), 0x55555555); 132 mmio_write_32(0x70725f000 + (i * 4), 0x55555555); 133 mmio_write_32(0x70725f400 + (i * 4), 0x55555555); 134 mmio_write_32(0x707340000 + (i * 4), 0x55555555); 135 mmio_write_32(0x707346000 + (i * 4), 0x55555555); 136 mmio_write_32(0x707484000 + (i * 4), 0x55555555); 137 mmio_write_32(0x70748a000 + (i * 4), 0x55555555); 138 mmio_write_32(0x70748b000 + (i * 4), 0x55555555); 139 mmio_write_32(0x70748c000 + (i * 4), 0x55555555); 140 mmio_write_32(0x70748d000 + (i * 4), 0x55555555); 141 } 142 143 /* EDMA Internal Memory.*/ 144 for (i = 0U; i < 5U; i++) { 145 mmio_write_32(0x70a208000 + (i * 4), 0x55555555); 146 mmio_write_32(0x70a208800 + (i * 4), 0x55555555); 147 mmio_write_32(0x70a209000 + (i * 4), 0x55555555); 148 mmio_write_32(0x70a209800 + (i * 4), 0x55555555); 149 } 150 151 /* PEX1 Internal Memory.*/ 152 for (i = 0U; i < 3U; i++) { 153 mmio_write_32(0x70a508000 + (i * 4), 0x55555555); 154 } 155 for (i = 0U; i < 5U; i++) { 156 mmio_write_32(0x70a520000 + (i * 4), 0x55555555); 157 mmio_write_32(0x70a528000 + (i * 4), 0x55555555); 158 } 159 160 /* PEX2 Internal Memory.*/ 161 for (i = 0U; i < 3U; i++) { 162 mmio_write_32(0x70a608000 + (i * 4), 0x55555555); 163 } 164 for (i = 0U; i < 5U; i++) { 165 mmio_write_32(0x70a620000 + (i * 4), 0x55555555); 166 mmio_write_32(0x70a628000 + (i * 4), 0x55555555); 167 } 168 169 /* PEX3 Internal Memory.*/ 170 for (i = 0U; i < 5U; i++) { 171 mmio_write_32(0x70a708000 + (i * 4), 0x55555555); 172 mmio_write_32(0x70a728000 + (i * 4), 0x55555555); 173 mmio_write_32(0x70a730000 + (i * 4), 0x55555555); 174 mmio_write_32(0x70a738000 + (i * 4), 0x55555555); 175 mmio_write_32(0x70a748000 + (i * 4), 0x55555555); 176 mmio_write_32(0x70a758000 + (i * 4), 0x55555555); 177 } 178 179 /* PEX4 Internal Memory.*/ 180 for (i = 0U; i < 3U; i++) { 181 mmio_write_32(0x70a808000 + (i * 4), 0x55555555); 182 } 183 for (i = 0U; i < 5U; i++) { 184 mmio_write_32(0x70a820000 + (i * 4), 0x55555555); 185 mmio_write_32(0x70a828000 + (i * 4), 0x55555555); 186 } 187 188 /* PEX5 Internal Memory.*/ 189 for (i = 0U; i < 5U; i++) { 190 mmio_write_32(0x70aa08000 + (i * 4), 0x55555555); 191 mmio_write_32(0x70aa28000 + (i * 4), 0x55555555); 192 mmio_write_32(0x70aa30000 + (i * 4), 0x55555555); 193 mmio_write_32(0x70aa38000 + (i * 4), 0x55555555); 194 mmio_write_32(0x70aa48000 + (i * 4), 0x55555555); 195 mmio_write_32(0x70aa58000 + (i * 4), 0x55555555); 196 } 197 198 /* PEX6 Internal Memory.*/ 199 for (i = 0U; i < 3U; i++) { 200 mmio_write_32(0x70ab08000 + (i * 4), 0x55555555); 201 } 202 for (i = 0U; i < 5U; i++) { 203 mmio_write_32(0x70ab20000 + (i * 4), 0x55555555); 204 mmio_write_32(0x70ab28000 + (i * 4), 0x55555555); 205 } 206 207 /* QDMA Internal Memory.*/ 208 for (i = 0U; i < 5U; i++) { 209 mmio_write_32(0x70b008000 + (i * 4), 0x55555555); 210 mmio_write_32(0x70b00c000 + (i * 4), 0x55555555); 211 mmio_write_32(0x70b010000 + (i * 4), 0x55555555); 212 mmio_write_32(0x70b014000 + (i * 4), 0x55555555); 213 mmio_write_32(0x70b018000 + (i * 4), 0x55555555); 214 mmio_write_32(0x70b018400 + (i * 4), 0x55555555); 215 mmio_write_32(0x70b01a000 + (i * 4), 0x55555555); 216 mmio_write_32(0x70b01a400 + (i * 4), 0x55555555); 217 mmio_write_32(0x70b01c000 + (i * 4), 0x55555555); 218 mmio_write_32(0x70b01d000 + (i * 4), 0x55555555); 219 mmio_write_32(0x70b01e000 + (i * 4), 0x55555555); 220 mmio_write_32(0x70b01e800 + (i * 4), 0x55555555); 221 mmio_write_32(0x70b01f000 + (i * 4), 0x55555555); 222 mmio_write_32(0x70b01f800 + (i * 4), 0x55555555); 223 mmio_write_32(0x70b020000 + (i * 4), 0x55555555); 224 mmio_write_32(0x70b020400 + (i * 4), 0x55555555); 225 mmio_write_32(0x70b020800 + (i * 4), 0x55555555); 226 mmio_write_32(0x70b020c00 + (i * 4), 0x55555555); 227 mmio_write_32(0x70b022000 + (i * 4), 0x55555555); 228 mmio_write_32(0x70b022400 + (i * 4), 0x55555555); 229 mmio_write_32(0x70b024000 + (i * 4), 0x55555555); 230 mmio_write_32(0x70b024800 + (i * 4), 0x55555555); 231 mmio_write_32(0x70b025000 + (i * 4), 0x55555555); 232 mmio_write_32(0x70b025800 + (i * 4), 0x55555555); 233 } 234 for (i = 0U; i < 4U; i++) { 235 mmio_write_32(0x70b026000 + (i * 4), 0x55555555); 236 mmio_write_32(0x70b026200 + (i * 4), 0x55555555); 237 } 238 for (i = 0U; i < 5U; i++) { 239 mmio_write_32(0x70b028000 + (i * 4), 0x55555555); 240 mmio_write_32(0x70b028800 + (i * 4), 0x55555555); 241 mmio_write_32(0x70b029000 + (i * 4), 0x55555555); 242 mmio_write_32(0x70b029800 + (i * 4), 0x55555555); 243 } 244 245 /* lnx1_e1000#0 Internal Memory.*/ 246 for (i = 0U; i < 3U; i++) { 247 mmio_write_32(0x70c00a000 + (i * 4), 0x55555555); 248 mmio_write_32(0x70c00a200 + (i * 4), 0x55555555); 249 mmio_write_32(0x70c00a400 + (i * 4), 0x55555555); 250 mmio_write_32(0x70c00a600 + (i * 4), 0x55555555); 251 mmio_write_32(0x70c00a800 + (i * 4), 0x55555555); 252 mmio_write_32(0x70c00aa00 + (i * 4), 0x55555555); 253 mmio_write_32(0x70c00ac00 + (i * 4), 0x55555555); 254 mmio_write_32(0x70c00ae00 + (i * 4), 0x55555555); 255 mmio_write_32(0x70c00b000 + (i * 4), 0x55555555); 256 mmio_write_32(0x70c00b200 + (i * 4), 0x55555555); 257 mmio_write_32(0x70c00b400 + (i * 4), 0x55555555); 258 mmio_write_32(0x70c00b600 + (i * 4), 0x55555555); 259 mmio_write_32(0x70c00b800 + (i * 4), 0x55555555); 260 mmio_write_32(0x70c00ba00 + (i * 4), 0x55555555); 261 mmio_write_32(0x70c00bc00 + (i * 4), 0x55555555); 262 mmio_write_32(0x70c00be00 + (i * 4), 0x55555555); 263 } 264 for (i = 0U; i < 5U; i++) { 265 mmio_write_32(0x70c00c000 + (i * 4), 0x55555555); 266 mmio_write_32(0x70c00c400 + (i * 4), 0x55555555); 267 mmio_write_32(0x70c00c800 + (i * 4), 0x55555555); 268 mmio_write_32(0x70c00cc00 + (i * 4), 0x55555555); 269 mmio_write_32(0x70c00d000 + (i * 4), 0x55555555); 270 mmio_write_32(0x70c00d400 + (i * 4), 0x55555555); 271 mmio_write_32(0x70c00d800 + (i * 4), 0x55555555); 272 mmio_write_32(0x70c00dc00 + (i * 4), 0x55555555); 273 } 274 for (i = 0U; i < 3U; i++) { 275 mmio_write_32(0x70c00e000 + (i * 4), 0x55555555); 276 mmio_write_32(0x70c00f000 + (i * 4), 0x55555555); 277 mmio_write_32(0x70c012000 + (i * 4), 0x55555555); 278 mmio_write_32(0x70c012200 + (i * 4), 0x55555555); 279 mmio_write_32(0x70c012400 + (i * 4), 0x55555555); 280 mmio_write_32(0x70c012600 + (i * 4), 0x55555555); 281 mmio_write_32(0x70c012800 + (i * 4), 0x55555555); 282 mmio_write_32(0x70c012a00 + (i * 4), 0x55555555); 283 mmio_write_32(0x70c012c00 + (i * 4), 0x55555555); 284 mmio_write_32(0x70c012e00 + (i * 4), 0x55555555); 285 mmio_write_32(0x70c013000 + (i * 4), 0x55555555); 286 mmio_write_32(0x70c013200 + (i * 4), 0x55555555); 287 mmio_write_32(0x70c013400 + (i * 4), 0x55555555); 288 mmio_write_32(0x70c013600 + (i * 4), 0x55555555); 289 mmio_write_32(0x70c013800 + (i * 4), 0x55555555); 290 mmio_write_32(0x70c013a00 + (i * 4), 0x55555555); 291 mmio_write_32(0x70c013c00 + (i * 4), 0x55555555); 292 mmio_write_32(0x70c013e00 + (i * 4), 0x55555555); 293 } 294 for (i = 0U; i < 5U; i++) { 295 mmio_write_32(0x70c014000 + (i * 4), 0x55555555); 296 mmio_write_32(0x70c014400 + (i * 4), 0x55555555); 297 mmio_write_32(0x70c014800 + (i * 4), 0x55555555); 298 mmio_write_32(0x70c014c00 + (i * 4), 0x55555555); 299 mmio_write_32(0x70c015000 + (i * 4), 0x55555555); 300 mmio_write_32(0x70c015400 + (i * 4), 0x55555555); 301 mmio_write_32(0x70c015800 + (i * 4), 0x55555555); 302 mmio_write_32(0x70c015c00 + (i * 4), 0x55555555); 303 } 304 for (i = 0U; i < 3U; i++) { 305 mmio_write_32(0x70c016000 + (i * 4), 0x55555555); 306 mmio_write_32(0x70c017000 + (i * 4), 0x55555555); 307 } 308 309 /* lnx1_xfi Internal Memory.*/ 310 for (i = 0U; i < 3U; i++) { 311 mmio_write_32(0x70c108000 + (i * 4), 0x55555555); 312 mmio_write_32(0x70c108200 + (i * 4), 0x55555555); 313 mmio_write_32(0x70c10a000 + (i * 4), 0x55555555); 314 mmio_write_32(0x70c10a400 + (i * 4), 0x55555555); 315 } 316 for (i = 0U; i < 5U; i++) { 317 mmio_write_32(0x70c10c000 + (i * 4), 0x55555555); 318 mmio_write_32(0x70c10c400 + (i * 4), 0x55555555); 319 } 320 for (i = 0U; i < 3U; i++) { 321 mmio_write_32(0x70c10e000 + (i * 4), 0x55555555); 322 mmio_write_32(0x70c10e200 + (i * 4), 0x55555555); 323 mmio_write_32(0x70c110000 + (i * 4), 0x55555555); 324 mmio_write_32(0x70c110400 + (i * 4), 0x55555555); 325 } 326 for (i = 0U; i < 5U; i++) { 327 mmio_write_32(0x70c112000 + (i * 4), 0x55555555); 328 mmio_write_32(0x70c112400 + (i * 4), 0x55555555); 329 } 330 for (i = 0U; i < 3U; i++) { 331 mmio_write_32(0x70c114000 + (i * 4), 0x55555555); 332 mmio_write_32(0x70c114200 + (i * 4), 0x55555555); 333 mmio_write_32(0x70c116000 + (i * 4), 0x55555555); 334 mmio_write_32(0x70c116400 + (i * 4), 0x55555555); 335 } 336 for (i = 0U; i < 5U; i++) { 337 mmio_write_32(0x70c118000 + (i * 4), 0x55555555); 338 mmio_write_32(0x70c118400 + (i * 4), 0x55555555); 339 } 340 for (i = 0U; i < 3U; i++) { 341 mmio_write_32(0x70c11a000 + (i * 4), 0x55555555); 342 mmio_write_32(0x70c11a200 + (i * 4), 0x55555555); 343 mmio_write_32(0x70c11c000 + (i * 4), 0x55555555); 344 mmio_write_32(0x70c11c400 + (i * 4), 0x55555555); 345 } 346 for (i = 0U; i < 5U; i++) { 347 mmio_write_32(0x70c11e000 + (i * 4), 0x55555555); 348 mmio_write_32(0x70c11e400 + (i * 4), 0x55555555); 349 } 350 for (i = 0U; i < 3U; i++) { 351 mmio_write_32(0x70c120000 + (i * 4), 0x55555555); 352 mmio_write_32(0x70c120200 + (i * 4), 0x55555555); 353 mmio_write_32(0x70c122000 + (i * 4), 0x55555555); 354 mmio_write_32(0x70c122400 + (i * 4), 0x55555555); 355 } 356 for (i = 0U; i < 5U; i++) { 357 mmio_write_32(0x70c124000 + (i * 4), 0x55555555); 358 mmio_write_32(0x70c124400 + (i * 4), 0x55555555); 359 } 360 for (i = 0U; i < 3U; i++) { 361 mmio_write_32(0x70c126000 + (i * 4), 0x55555555); 362 mmio_write_32(0x70c126200 + (i * 4), 0x55555555); 363 mmio_write_32(0x70c128000 + (i * 4), 0x55555555); 364 mmio_write_32(0x70c128400 + (i * 4), 0x55555555); 365 } 366 for (i = 0U; i < 5U; i++) { 367 mmio_write_32(0x70c12a000 + (i * 4), 0x55555555); 368 mmio_write_32(0x70c12a400 + (i * 4), 0x55555555); 369 } 370 for (i = 0U; i < 3U; i++) { 371 mmio_write_32(0x70c12c000 + (i * 4), 0x55555555); 372 mmio_write_32(0x70c12c200 + (i * 4), 0x55555555); 373 mmio_write_32(0x70c12e000 + (i * 4), 0x55555555); 374 mmio_write_32(0x70c12e400 + (i * 4), 0x55555555); 375 } 376 for (i = 0U; i < 5U; i++) { 377 mmio_write_32(0x70c130000 + (i * 4), 0x55555555); 378 mmio_write_32(0x70c130400 + (i * 4), 0x55555555); 379 } 380 for (i = 0U; i < 3U; i++) { 381 mmio_write_32(0x70c132000 + (i * 4), 0x55555555); 382 mmio_write_32(0x70c132200 + (i * 4), 0x55555555); 383 mmio_write_32(0x70c134000 + (i * 4), 0x55555555); 384 mmio_write_32(0x70c134400 + (i * 4), 0x55555555); 385 } 386 for (i = 0U; i < 5U; i++) { 387 mmio_write_32(0x70c136000 + (i * 4), 0x55555555); 388 mmio_write_32(0x70c136400 + (i * 4), 0x55555555); 389 } 390 391 /* lnx2_xfi Internal Memory.*/ 392 for (i = 0U; i < 3U; i++) { 393 mmio_write_32(0x70c308000 + (i * 4), 0x55555555); 394 mmio_write_32(0x70c308200 + (i * 4), 0x55555555); 395 mmio_write_32(0x70c30a000 + (i * 4), 0x55555555); 396 mmio_write_32(0x70c30a400 + (i * 4), 0x55555555); 397 } 398 for (i = 0U; i < 5U; i++) { 399 mmio_write_32(0x70c30c000 + (i * 4), 0x55555555); 400 mmio_write_32(0x70c30c400 + (i * 4), 0x55555555); 401 } 402 for (i = 0U; i < 3U; i++) { 403 mmio_write_32(0x70c30e000 + (i * 4), 0x55555555); 404 mmio_write_32(0x70c30e200 + (i * 4), 0x55555555); 405 mmio_write_32(0x70c310000 + (i * 4), 0x55555555); 406 mmio_write_32(0x70c310400 + (i * 4), 0x55555555); 407 } 408 for (i = 0U; i < 5U; i++) { 409 mmio_write_32(0x70c312000 + (i * 4), 0x55555555); 410 mmio_write_32(0x70c312400 + (i * 4), 0x55555555); 411 } 412 413 /* Disable BIST */ 414 415 mmio_write_32(0x700117E60, val3); 416 mmio_write_32(0x700117E90, val4); 417 } 418 #endif /* ERRATA_SOC_A050426 */ 419