164cadc16SJiafei Pan /* 264cadc16SJiafei Pan * Copyright 2021 NXP 364cadc16SJiafei Pan * 464cadc16SJiafei Pan * SPDX-License-Identifier: BSD-3-Clause 564cadc16SJiafei Pan * 664cadc16SJiafei Pan */ 764cadc16SJiafei Pan 8*9616db15SJiafei Pan #include <common/debug.h> 964cadc16SJiafei Pan #include <mmio.h> 1064cadc16SJiafei Pan 1164cadc16SJiafei Pan #ifdef ERRATA_SOC_A050426 12*9616db15SJiafei Pan static void erratum_a050426(void) 1364cadc16SJiafei Pan { 1464cadc16SJiafei Pan uint32_t i, val3, val4; 1564cadc16SJiafei Pan 1664cadc16SJiafei Pan /* Enable BIST to access Internal memory locations */ 1764cadc16SJiafei Pan val3 = mmio_read_32(0x700117E60); 1864cadc16SJiafei Pan mmio_write_32(0x700117E60, (val3 | 0x80000001)); 1964cadc16SJiafei Pan val4 = mmio_read_32(0x700117E90); 2064cadc16SJiafei Pan mmio_write_32(0x700117E90, (val4 & 0xFFDFFFFF)); 2164cadc16SJiafei Pan 2264cadc16SJiafei Pan /* wriop Internal Memory.*/ 2364cadc16SJiafei Pan for (i = 0U; i < 4U; i++) { 2464cadc16SJiafei Pan mmio_write_32(0x706312000 + (i * 4), 0x55555555); 2564cadc16SJiafei Pan mmio_write_32(0x706312400 + (i * 4), 0x55555555); 2664cadc16SJiafei Pan mmio_write_32(0x706312800 + (i * 4), 0x55555555); 2764cadc16SJiafei Pan mmio_write_32(0x706314000 + (i * 4), 0x55555555); 2864cadc16SJiafei Pan mmio_write_32(0x706314400 + (i * 4), 0x55555555); 2964cadc16SJiafei Pan mmio_write_32(0x706314800 + (i * 4), 0x55555555); 3064cadc16SJiafei Pan mmio_write_32(0x706314c00 + (i * 4), 0x55555555); 3164cadc16SJiafei Pan } 3264cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 3364cadc16SJiafei Pan mmio_write_32(0x706316000 + (i * 4), 0x55555555); 3464cadc16SJiafei Pan mmio_write_32(0x706320000 + (i * 4), 0x55555555); 3564cadc16SJiafei Pan mmio_write_32(0x706320400 + (i * 4), 0x55555555); 3664cadc16SJiafei Pan } 3764cadc16SJiafei Pan for (i = 0U; i < 2U; i++) { 3864cadc16SJiafei Pan mmio_write_32(0x70640a000 + (i * 4), 0x55555555); 3964cadc16SJiafei Pan } 4064cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 4164cadc16SJiafei Pan mmio_write_32(0x706518000 + (i * 4), 0x55555555); 4264cadc16SJiafei Pan mmio_write_32(0x706519000 + (i * 4), 0x55555555); 4364cadc16SJiafei Pan } 4464cadc16SJiafei Pan for (i = 0U; i < 4U; i++) { 4564cadc16SJiafei Pan mmio_write_32(0x706522000 + (i * 4), 0x55555555); 4664cadc16SJiafei Pan mmio_write_32(0x706522800 + (i * 4), 0x55555555); 4764cadc16SJiafei Pan mmio_write_32(0x706523000 + (i * 4), 0x55555555); 4864cadc16SJiafei Pan mmio_write_32(0x706523800 + (i * 4), 0x55555555); 4964cadc16SJiafei Pan mmio_write_32(0x706524000 + (i * 4), 0x55555555); 5064cadc16SJiafei Pan mmio_write_32(0x706524800 + (i * 4), 0x55555555); 5164cadc16SJiafei Pan mmio_write_32(0x706608000 + (i * 4), 0x55555555); 5264cadc16SJiafei Pan mmio_write_32(0x706608800 + (i * 4), 0x55555555); 5364cadc16SJiafei Pan mmio_write_32(0x706609000 + (i * 4), 0x55555555); 5464cadc16SJiafei Pan mmio_write_32(0x706609800 + (i * 4), 0x55555555); 5564cadc16SJiafei Pan mmio_write_32(0x70660a000 + (i * 4), 0x55555555); 5664cadc16SJiafei Pan mmio_write_32(0x70660a800 + (i * 4), 0x55555555); 5764cadc16SJiafei Pan mmio_write_32(0x70660b000 + (i * 4), 0x55555555); 5864cadc16SJiafei Pan mmio_write_32(0x70660b800 + (i * 4), 0x55555555); 5964cadc16SJiafei Pan } 6064cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 6164cadc16SJiafei Pan mmio_write_32(0x70660c000 + (i * 4), 0x55555555); 6264cadc16SJiafei Pan mmio_write_32(0x70660c800 + (i * 4), 0x55555555); 6364cadc16SJiafei Pan } 6464cadc16SJiafei Pan for (i = 0U; i < 2U; i++) { 6564cadc16SJiafei Pan mmio_write_32(0x706718000 + (i * 4), 0x55555555); 6664cadc16SJiafei Pan mmio_write_32(0x706718800 + (i * 4), 0x55555555); 6764cadc16SJiafei Pan } 6864cadc16SJiafei Pan mmio_write_32(0x706b0a000 + (i * 4), 0x55555555); 6964cadc16SJiafei Pan 7064cadc16SJiafei Pan for (i = 0U; i < 4U; i++) { 7164cadc16SJiafei Pan mmio_write_32(0x706b0e000 + (i * 4), 0x55555555); 7264cadc16SJiafei Pan mmio_write_32(0x706b0e800 + (i * 4), 0x55555555); 7364cadc16SJiafei Pan } 7464cadc16SJiafei Pan for (i = 0U; i < 2U; i++) { 7564cadc16SJiafei Pan mmio_write_32(0x706b10000 + (i * 4), 0x55555555); 7664cadc16SJiafei Pan mmio_write_32(0x706b10400 + (i * 4), 0x55555555); 7764cadc16SJiafei Pan } 7864cadc16SJiafei Pan for (i = 0U; i < 4U; i++) { 7964cadc16SJiafei Pan mmio_write_32(0x706b14000 + (i * 4), 0x55555555); 8064cadc16SJiafei Pan mmio_write_32(0x706b14800 + (i * 4), 0x55555555); 8164cadc16SJiafei Pan mmio_write_32(0x706b15000 + (i * 4), 0x55555555); 8264cadc16SJiafei Pan mmio_write_32(0x706b15800 + (i * 4), 0x55555555); 8364cadc16SJiafei Pan } 8464cadc16SJiafei Pan mmio_write_32(0x706e12000 + (i * 4), 0x55555555); 8564cadc16SJiafei Pan 8664cadc16SJiafei Pan for (i = 0U; i < 4U; i++) { 8764cadc16SJiafei Pan mmio_write_32(0x706e14000 + (i * 4), 0x55555555); 8864cadc16SJiafei Pan mmio_write_32(0x706e14800 + (i * 4), 0x55555555); 8964cadc16SJiafei Pan } 9064cadc16SJiafei Pan for (i = 0U; i < 2U; i++) { 9164cadc16SJiafei Pan mmio_write_32(0x706e16000 + (i * 4), 0x55555555); 9264cadc16SJiafei Pan mmio_write_32(0x706e16400 + (i * 4), 0x55555555); 9364cadc16SJiafei Pan } 9464cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 9564cadc16SJiafei Pan mmio_write_32(0x706e1a000 + (i * 4), 0x55555555); 9664cadc16SJiafei Pan mmio_write_32(0x706e1a800 + (i * 4), 0x55555555); 9764cadc16SJiafei Pan mmio_write_32(0x706e1b000 + (i * 4), 0x55555555); 9864cadc16SJiafei Pan mmio_write_32(0x706e1b800 + (i * 4), 0x55555555); 9964cadc16SJiafei Pan mmio_write_32(0x706e1c000 + (i * 4), 0x55555555); 10064cadc16SJiafei Pan mmio_write_32(0x706e1c800 + (i * 4), 0x55555555); 10164cadc16SJiafei Pan mmio_write_32(0x706e1e000 + (i * 4), 0x55555555); 10264cadc16SJiafei Pan mmio_write_32(0x706e1e800 + (i * 4), 0x55555555); 10364cadc16SJiafei Pan mmio_write_32(0x706e1f000 + (i * 4), 0x55555555); 10464cadc16SJiafei Pan mmio_write_32(0x706e1f800 + (i * 4), 0x55555555); 10564cadc16SJiafei Pan mmio_write_32(0x706e20000 + (i * 4), 0x55555555); 10664cadc16SJiafei Pan mmio_write_32(0x706e20800 + (i * 4), 0x55555555); 10764cadc16SJiafei Pan } 10864cadc16SJiafei Pan for (i = 0U; i < 4U; i++) { 10964cadc16SJiafei Pan mmio_write_32(0x707108000 + (i * 4), 0x55555555); 11064cadc16SJiafei Pan mmio_write_32(0x707109000 + (i * 4), 0x55555555); 11164cadc16SJiafei Pan mmio_write_32(0x70710a000 + (i * 4), 0x55555555); 11264cadc16SJiafei Pan } 11364cadc16SJiafei Pan for (i = 0U; i < 2U; i++) { 11464cadc16SJiafei Pan mmio_write_32(0x70711c000 + (i * 4), 0x55555555); 11564cadc16SJiafei Pan mmio_write_32(0x70711c800 + (i * 4), 0x55555555); 11664cadc16SJiafei Pan mmio_write_32(0x70711d000 + (i * 4), 0x55555555); 11764cadc16SJiafei Pan mmio_write_32(0x70711d800 + (i * 4), 0x55555555); 11864cadc16SJiafei Pan mmio_write_32(0x70711e000 + (i * 4), 0x55555555); 11964cadc16SJiafei Pan } 12064cadc16SJiafei Pan for (i = 0U; i < 4U; i++) { 12164cadc16SJiafei Pan mmio_write_32(0x707120000 + (i * 4), 0x55555555); 12264cadc16SJiafei Pan mmio_write_32(0x707121000 + (i * 4), 0x55555555); 12364cadc16SJiafei Pan } 12464cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 12564cadc16SJiafei Pan mmio_write_32(0x707122000 + (i * 4), 0x55555555); 12664cadc16SJiafei Pan mmio_write_32(0x70725a000 + (i * 4), 0x55555555); 12764cadc16SJiafei Pan mmio_write_32(0x70725b000 + (i * 4), 0x55555555); 12864cadc16SJiafei Pan mmio_write_32(0x70725c000 + (i * 4), 0x55555555); 12964cadc16SJiafei Pan mmio_write_32(0x70725e000 + (i * 4), 0x55555555); 13064cadc16SJiafei Pan mmio_write_32(0x70725e400 + (i * 4), 0x55555555); 13164cadc16SJiafei Pan mmio_write_32(0x70725e800 + (i * 4), 0x55555555); 13264cadc16SJiafei Pan mmio_write_32(0x70725ec00 + (i * 4), 0x55555555); 13364cadc16SJiafei Pan mmio_write_32(0x70725f000 + (i * 4), 0x55555555); 13464cadc16SJiafei Pan mmio_write_32(0x70725f400 + (i * 4), 0x55555555); 13564cadc16SJiafei Pan mmio_write_32(0x707340000 + (i * 4), 0x55555555); 13664cadc16SJiafei Pan mmio_write_32(0x707346000 + (i * 4), 0x55555555); 13764cadc16SJiafei Pan mmio_write_32(0x707484000 + (i * 4), 0x55555555); 13864cadc16SJiafei Pan mmio_write_32(0x70748a000 + (i * 4), 0x55555555); 13964cadc16SJiafei Pan mmio_write_32(0x70748b000 + (i * 4), 0x55555555); 14064cadc16SJiafei Pan mmio_write_32(0x70748c000 + (i * 4), 0x55555555); 14164cadc16SJiafei Pan mmio_write_32(0x70748d000 + (i * 4), 0x55555555); 14264cadc16SJiafei Pan } 14364cadc16SJiafei Pan 14464cadc16SJiafei Pan /* EDMA Internal Memory.*/ 14564cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 14664cadc16SJiafei Pan mmio_write_32(0x70a208000 + (i * 4), 0x55555555); 14764cadc16SJiafei Pan mmio_write_32(0x70a208800 + (i * 4), 0x55555555); 14864cadc16SJiafei Pan mmio_write_32(0x70a209000 + (i * 4), 0x55555555); 14964cadc16SJiafei Pan mmio_write_32(0x70a209800 + (i * 4), 0x55555555); 15064cadc16SJiafei Pan } 15164cadc16SJiafei Pan 15264cadc16SJiafei Pan /* PEX1 Internal Memory.*/ 15364cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 15464cadc16SJiafei Pan mmio_write_32(0x70a508000 + (i * 4), 0x55555555); 15564cadc16SJiafei Pan } 15664cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 15764cadc16SJiafei Pan mmio_write_32(0x70a520000 + (i * 4), 0x55555555); 15864cadc16SJiafei Pan mmio_write_32(0x70a528000 + (i * 4), 0x55555555); 15964cadc16SJiafei Pan } 16064cadc16SJiafei Pan 16164cadc16SJiafei Pan /* PEX2 Internal Memory.*/ 16264cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 16364cadc16SJiafei Pan mmio_write_32(0x70a608000 + (i * 4), 0x55555555); 16464cadc16SJiafei Pan } 16564cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 16664cadc16SJiafei Pan mmio_write_32(0x70a620000 + (i * 4), 0x55555555); 16764cadc16SJiafei Pan mmio_write_32(0x70a628000 + (i * 4), 0x55555555); 16864cadc16SJiafei Pan } 16964cadc16SJiafei Pan 17064cadc16SJiafei Pan /* PEX3 Internal Memory.*/ 17164cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 17264cadc16SJiafei Pan mmio_write_32(0x70a708000 + (i * 4), 0x55555555); 17364cadc16SJiafei Pan mmio_write_32(0x70a728000 + (i * 4), 0x55555555); 17464cadc16SJiafei Pan mmio_write_32(0x70a730000 + (i * 4), 0x55555555); 17564cadc16SJiafei Pan mmio_write_32(0x70a738000 + (i * 4), 0x55555555); 17664cadc16SJiafei Pan mmio_write_32(0x70a748000 + (i * 4), 0x55555555); 17764cadc16SJiafei Pan mmio_write_32(0x70a758000 + (i * 4), 0x55555555); 17864cadc16SJiafei Pan } 17964cadc16SJiafei Pan 18064cadc16SJiafei Pan /* PEX4 Internal Memory.*/ 18164cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 18264cadc16SJiafei Pan mmio_write_32(0x70a808000 + (i * 4), 0x55555555); 18364cadc16SJiafei Pan } 18464cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 18564cadc16SJiafei Pan mmio_write_32(0x70a820000 + (i * 4), 0x55555555); 18664cadc16SJiafei Pan mmio_write_32(0x70a828000 + (i * 4), 0x55555555); 18764cadc16SJiafei Pan } 18864cadc16SJiafei Pan 18964cadc16SJiafei Pan /* PEX5 Internal Memory.*/ 19064cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 19164cadc16SJiafei Pan mmio_write_32(0x70aa08000 + (i * 4), 0x55555555); 19264cadc16SJiafei Pan mmio_write_32(0x70aa28000 + (i * 4), 0x55555555); 19364cadc16SJiafei Pan mmio_write_32(0x70aa30000 + (i * 4), 0x55555555); 19464cadc16SJiafei Pan mmio_write_32(0x70aa38000 + (i * 4), 0x55555555); 19564cadc16SJiafei Pan mmio_write_32(0x70aa48000 + (i * 4), 0x55555555); 19664cadc16SJiafei Pan mmio_write_32(0x70aa58000 + (i * 4), 0x55555555); 19764cadc16SJiafei Pan } 19864cadc16SJiafei Pan 19964cadc16SJiafei Pan /* PEX6 Internal Memory.*/ 20064cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 20164cadc16SJiafei Pan mmio_write_32(0x70ab08000 + (i * 4), 0x55555555); 20264cadc16SJiafei Pan } 20364cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 20464cadc16SJiafei Pan mmio_write_32(0x70ab20000 + (i * 4), 0x55555555); 20564cadc16SJiafei Pan mmio_write_32(0x70ab28000 + (i * 4), 0x55555555); 20664cadc16SJiafei Pan } 20764cadc16SJiafei Pan 20864cadc16SJiafei Pan /* QDMA Internal Memory.*/ 20964cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 21064cadc16SJiafei Pan mmio_write_32(0x70b008000 + (i * 4), 0x55555555); 21164cadc16SJiafei Pan mmio_write_32(0x70b00c000 + (i * 4), 0x55555555); 21264cadc16SJiafei Pan mmio_write_32(0x70b010000 + (i * 4), 0x55555555); 21364cadc16SJiafei Pan mmio_write_32(0x70b014000 + (i * 4), 0x55555555); 21464cadc16SJiafei Pan mmio_write_32(0x70b018000 + (i * 4), 0x55555555); 21564cadc16SJiafei Pan mmio_write_32(0x70b018400 + (i * 4), 0x55555555); 21664cadc16SJiafei Pan mmio_write_32(0x70b01a000 + (i * 4), 0x55555555); 21764cadc16SJiafei Pan mmio_write_32(0x70b01a400 + (i * 4), 0x55555555); 21864cadc16SJiafei Pan mmio_write_32(0x70b01c000 + (i * 4), 0x55555555); 21964cadc16SJiafei Pan mmio_write_32(0x70b01d000 + (i * 4), 0x55555555); 22064cadc16SJiafei Pan mmio_write_32(0x70b01e000 + (i * 4), 0x55555555); 22164cadc16SJiafei Pan mmio_write_32(0x70b01e800 + (i * 4), 0x55555555); 22264cadc16SJiafei Pan mmio_write_32(0x70b01f000 + (i * 4), 0x55555555); 22364cadc16SJiafei Pan mmio_write_32(0x70b01f800 + (i * 4), 0x55555555); 22464cadc16SJiafei Pan mmio_write_32(0x70b020000 + (i * 4), 0x55555555); 22564cadc16SJiafei Pan mmio_write_32(0x70b020400 + (i * 4), 0x55555555); 22664cadc16SJiafei Pan mmio_write_32(0x70b020800 + (i * 4), 0x55555555); 22764cadc16SJiafei Pan mmio_write_32(0x70b020c00 + (i * 4), 0x55555555); 22864cadc16SJiafei Pan mmio_write_32(0x70b022000 + (i * 4), 0x55555555); 22964cadc16SJiafei Pan mmio_write_32(0x70b022400 + (i * 4), 0x55555555); 23064cadc16SJiafei Pan mmio_write_32(0x70b024000 + (i * 4), 0x55555555); 23164cadc16SJiafei Pan mmio_write_32(0x70b024800 + (i * 4), 0x55555555); 23264cadc16SJiafei Pan mmio_write_32(0x70b025000 + (i * 4), 0x55555555); 23364cadc16SJiafei Pan mmio_write_32(0x70b025800 + (i * 4), 0x55555555); 23464cadc16SJiafei Pan } 23564cadc16SJiafei Pan for (i = 0U; i < 4U; i++) { 23664cadc16SJiafei Pan mmio_write_32(0x70b026000 + (i * 4), 0x55555555); 23764cadc16SJiafei Pan mmio_write_32(0x70b026200 + (i * 4), 0x55555555); 23864cadc16SJiafei Pan } 23964cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 24064cadc16SJiafei Pan mmio_write_32(0x70b028000 + (i * 4), 0x55555555); 24164cadc16SJiafei Pan mmio_write_32(0x70b028800 + (i * 4), 0x55555555); 24264cadc16SJiafei Pan mmio_write_32(0x70b029000 + (i * 4), 0x55555555); 24364cadc16SJiafei Pan mmio_write_32(0x70b029800 + (i * 4), 0x55555555); 24464cadc16SJiafei Pan } 24564cadc16SJiafei Pan 24664cadc16SJiafei Pan /* lnx1_e1000#0 Internal Memory.*/ 24764cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 24864cadc16SJiafei Pan mmio_write_32(0x70c00a000 + (i * 4), 0x55555555); 24964cadc16SJiafei Pan mmio_write_32(0x70c00a200 + (i * 4), 0x55555555); 25064cadc16SJiafei Pan mmio_write_32(0x70c00a400 + (i * 4), 0x55555555); 25164cadc16SJiafei Pan mmio_write_32(0x70c00a600 + (i * 4), 0x55555555); 25264cadc16SJiafei Pan mmio_write_32(0x70c00a800 + (i * 4), 0x55555555); 25364cadc16SJiafei Pan mmio_write_32(0x70c00aa00 + (i * 4), 0x55555555); 25464cadc16SJiafei Pan mmio_write_32(0x70c00ac00 + (i * 4), 0x55555555); 25564cadc16SJiafei Pan mmio_write_32(0x70c00ae00 + (i * 4), 0x55555555); 25664cadc16SJiafei Pan mmio_write_32(0x70c00b000 + (i * 4), 0x55555555); 25764cadc16SJiafei Pan mmio_write_32(0x70c00b200 + (i * 4), 0x55555555); 25864cadc16SJiafei Pan mmio_write_32(0x70c00b400 + (i * 4), 0x55555555); 25964cadc16SJiafei Pan mmio_write_32(0x70c00b600 + (i * 4), 0x55555555); 26064cadc16SJiafei Pan mmio_write_32(0x70c00b800 + (i * 4), 0x55555555); 26164cadc16SJiafei Pan mmio_write_32(0x70c00ba00 + (i * 4), 0x55555555); 26264cadc16SJiafei Pan mmio_write_32(0x70c00bc00 + (i * 4), 0x55555555); 26364cadc16SJiafei Pan mmio_write_32(0x70c00be00 + (i * 4), 0x55555555); 26464cadc16SJiafei Pan } 26564cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 26664cadc16SJiafei Pan mmio_write_32(0x70c00c000 + (i * 4), 0x55555555); 26764cadc16SJiafei Pan mmio_write_32(0x70c00c400 + (i * 4), 0x55555555); 26864cadc16SJiafei Pan mmio_write_32(0x70c00c800 + (i * 4), 0x55555555); 26964cadc16SJiafei Pan mmio_write_32(0x70c00cc00 + (i * 4), 0x55555555); 27064cadc16SJiafei Pan mmio_write_32(0x70c00d000 + (i * 4), 0x55555555); 27164cadc16SJiafei Pan mmio_write_32(0x70c00d400 + (i * 4), 0x55555555); 27264cadc16SJiafei Pan mmio_write_32(0x70c00d800 + (i * 4), 0x55555555); 27364cadc16SJiafei Pan mmio_write_32(0x70c00dc00 + (i * 4), 0x55555555); 27464cadc16SJiafei Pan } 27564cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 27664cadc16SJiafei Pan mmio_write_32(0x70c00e000 + (i * 4), 0x55555555); 27764cadc16SJiafei Pan mmio_write_32(0x70c00f000 + (i * 4), 0x55555555); 27864cadc16SJiafei Pan mmio_write_32(0x70c012000 + (i * 4), 0x55555555); 27964cadc16SJiafei Pan mmio_write_32(0x70c012200 + (i * 4), 0x55555555); 28064cadc16SJiafei Pan mmio_write_32(0x70c012400 + (i * 4), 0x55555555); 28164cadc16SJiafei Pan mmio_write_32(0x70c012600 + (i * 4), 0x55555555); 28264cadc16SJiafei Pan mmio_write_32(0x70c012800 + (i * 4), 0x55555555); 28364cadc16SJiafei Pan mmio_write_32(0x70c012a00 + (i * 4), 0x55555555); 28464cadc16SJiafei Pan mmio_write_32(0x70c012c00 + (i * 4), 0x55555555); 28564cadc16SJiafei Pan mmio_write_32(0x70c012e00 + (i * 4), 0x55555555); 28664cadc16SJiafei Pan mmio_write_32(0x70c013000 + (i * 4), 0x55555555); 28764cadc16SJiafei Pan mmio_write_32(0x70c013200 + (i * 4), 0x55555555); 28864cadc16SJiafei Pan mmio_write_32(0x70c013400 + (i * 4), 0x55555555); 28964cadc16SJiafei Pan mmio_write_32(0x70c013600 + (i * 4), 0x55555555); 29064cadc16SJiafei Pan mmio_write_32(0x70c013800 + (i * 4), 0x55555555); 29164cadc16SJiafei Pan mmio_write_32(0x70c013a00 + (i * 4), 0x55555555); 29264cadc16SJiafei Pan mmio_write_32(0x70c013c00 + (i * 4), 0x55555555); 29364cadc16SJiafei Pan mmio_write_32(0x70c013e00 + (i * 4), 0x55555555); 29464cadc16SJiafei Pan } 29564cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 29664cadc16SJiafei Pan mmio_write_32(0x70c014000 + (i * 4), 0x55555555); 29764cadc16SJiafei Pan mmio_write_32(0x70c014400 + (i * 4), 0x55555555); 29864cadc16SJiafei Pan mmio_write_32(0x70c014800 + (i * 4), 0x55555555); 29964cadc16SJiafei Pan mmio_write_32(0x70c014c00 + (i * 4), 0x55555555); 30064cadc16SJiafei Pan mmio_write_32(0x70c015000 + (i * 4), 0x55555555); 30164cadc16SJiafei Pan mmio_write_32(0x70c015400 + (i * 4), 0x55555555); 30264cadc16SJiafei Pan mmio_write_32(0x70c015800 + (i * 4), 0x55555555); 30364cadc16SJiafei Pan mmio_write_32(0x70c015c00 + (i * 4), 0x55555555); 30464cadc16SJiafei Pan } 30564cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 30664cadc16SJiafei Pan mmio_write_32(0x70c016000 + (i * 4), 0x55555555); 30764cadc16SJiafei Pan mmio_write_32(0x70c017000 + (i * 4), 0x55555555); 30864cadc16SJiafei Pan } 30964cadc16SJiafei Pan 31064cadc16SJiafei Pan /* lnx1_xfi Internal Memory.*/ 31164cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 31264cadc16SJiafei Pan mmio_write_32(0x70c108000 + (i * 4), 0x55555555); 31364cadc16SJiafei Pan mmio_write_32(0x70c108200 + (i * 4), 0x55555555); 31464cadc16SJiafei Pan mmio_write_32(0x70c10a000 + (i * 4), 0x55555555); 31564cadc16SJiafei Pan mmio_write_32(0x70c10a400 + (i * 4), 0x55555555); 31664cadc16SJiafei Pan } 31764cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 31864cadc16SJiafei Pan mmio_write_32(0x70c10c000 + (i * 4), 0x55555555); 31964cadc16SJiafei Pan mmio_write_32(0x70c10c400 + (i * 4), 0x55555555); 32064cadc16SJiafei Pan } 32164cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 32264cadc16SJiafei Pan mmio_write_32(0x70c10e000 + (i * 4), 0x55555555); 32364cadc16SJiafei Pan mmio_write_32(0x70c10e200 + (i * 4), 0x55555555); 32464cadc16SJiafei Pan mmio_write_32(0x70c110000 + (i * 4), 0x55555555); 32564cadc16SJiafei Pan mmio_write_32(0x70c110400 + (i * 4), 0x55555555); 32664cadc16SJiafei Pan } 32764cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 32864cadc16SJiafei Pan mmio_write_32(0x70c112000 + (i * 4), 0x55555555); 32964cadc16SJiafei Pan mmio_write_32(0x70c112400 + (i * 4), 0x55555555); 33064cadc16SJiafei Pan } 33164cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 33264cadc16SJiafei Pan mmio_write_32(0x70c114000 + (i * 4), 0x55555555); 33364cadc16SJiafei Pan mmio_write_32(0x70c114200 + (i * 4), 0x55555555); 33464cadc16SJiafei Pan mmio_write_32(0x70c116000 + (i * 4), 0x55555555); 33564cadc16SJiafei Pan mmio_write_32(0x70c116400 + (i * 4), 0x55555555); 33664cadc16SJiafei Pan } 33764cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 33864cadc16SJiafei Pan mmio_write_32(0x70c118000 + (i * 4), 0x55555555); 33964cadc16SJiafei Pan mmio_write_32(0x70c118400 + (i * 4), 0x55555555); 34064cadc16SJiafei Pan } 34164cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 34264cadc16SJiafei Pan mmio_write_32(0x70c11a000 + (i * 4), 0x55555555); 34364cadc16SJiafei Pan mmio_write_32(0x70c11a200 + (i * 4), 0x55555555); 34464cadc16SJiafei Pan mmio_write_32(0x70c11c000 + (i * 4), 0x55555555); 34564cadc16SJiafei Pan mmio_write_32(0x70c11c400 + (i * 4), 0x55555555); 34664cadc16SJiafei Pan } 34764cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 34864cadc16SJiafei Pan mmio_write_32(0x70c11e000 + (i * 4), 0x55555555); 34964cadc16SJiafei Pan mmio_write_32(0x70c11e400 + (i * 4), 0x55555555); 35064cadc16SJiafei Pan } 35164cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 35264cadc16SJiafei Pan mmio_write_32(0x70c120000 + (i * 4), 0x55555555); 35364cadc16SJiafei Pan mmio_write_32(0x70c120200 + (i * 4), 0x55555555); 35464cadc16SJiafei Pan mmio_write_32(0x70c122000 + (i * 4), 0x55555555); 35564cadc16SJiafei Pan mmio_write_32(0x70c122400 + (i * 4), 0x55555555); 35664cadc16SJiafei Pan } 35764cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 35864cadc16SJiafei Pan mmio_write_32(0x70c124000 + (i * 4), 0x55555555); 35964cadc16SJiafei Pan mmio_write_32(0x70c124400 + (i * 4), 0x55555555); 36064cadc16SJiafei Pan } 36164cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 36264cadc16SJiafei Pan mmio_write_32(0x70c126000 + (i * 4), 0x55555555); 36364cadc16SJiafei Pan mmio_write_32(0x70c126200 + (i * 4), 0x55555555); 36464cadc16SJiafei Pan mmio_write_32(0x70c128000 + (i * 4), 0x55555555); 36564cadc16SJiafei Pan mmio_write_32(0x70c128400 + (i * 4), 0x55555555); 36664cadc16SJiafei Pan } 36764cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 36864cadc16SJiafei Pan mmio_write_32(0x70c12a000 + (i * 4), 0x55555555); 36964cadc16SJiafei Pan mmio_write_32(0x70c12a400 + (i * 4), 0x55555555); 37064cadc16SJiafei Pan } 37164cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 37264cadc16SJiafei Pan mmio_write_32(0x70c12c000 + (i * 4), 0x55555555); 37364cadc16SJiafei Pan mmio_write_32(0x70c12c200 + (i * 4), 0x55555555); 37464cadc16SJiafei Pan mmio_write_32(0x70c12e000 + (i * 4), 0x55555555); 37564cadc16SJiafei Pan mmio_write_32(0x70c12e400 + (i * 4), 0x55555555); 37664cadc16SJiafei Pan } 37764cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 37864cadc16SJiafei Pan mmio_write_32(0x70c130000 + (i * 4), 0x55555555); 37964cadc16SJiafei Pan mmio_write_32(0x70c130400 + (i * 4), 0x55555555); 38064cadc16SJiafei Pan } 38164cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 38264cadc16SJiafei Pan mmio_write_32(0x70c132000 + (i * 4), 0x55555555); 38364cadc16SJiafei Pan mmio_write_32(0x70c132200 + (i * 4), 0x55555555); 38464cadc16SJiafei Pan mmio_write_32(0x70c134000 + (i * 4), 0x55555555); 38564cadc16SJiafei Pan mmio_write_32(0x70c134400 + (i * 4), 0x55555555); 38664cadc16SJiafei Pan } 38764cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 38864cadc16SJiafei Pan mmio_write_32(0x70c136000 + (i * 4), 0x55555555); 38964cadc16SJiafei Pan mmio_write_32(0x70c136400 + (i * 4), 0x55555555); 39064cadc16SJiafei Pan } 39164cadc16SJiafei Pan 39264cadc16SJiafei Pan /* lnx2_xfi Internal Memory.*/ 39364cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 39464cadc16SJiafei Pan mmio_write_32(0x70c308000 + (i * 4), 0x55555555); 39564cadc16SJiafei Pan mmio_write_32(0x70c308200 + (i * 4), 0x55555555); 39664cadc16SJiafei Pan mmio_write_32(0x70c30a000 + (i * 4), 0x55555555); 39764cadc16SJiafei Pan mmio_write_32(0x70c30a400 + (i * 4), 0x55555555); 39864cadc16SJiafei Pan } 39964cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 40064cadc16SJiafei Pan mmio_write_32(0x70c30c000 + (i * 4), 0x55555555); 40164cadc16SJiafei Pan mmio_write_32(0x70c30c400 + (i * 4), 0x55555555); 40264cadc16SJiafei Pan } 40364cadc16SJiafei Pan for (i = 0U; i < 3U; i++) { 40464cadc16SJiafei Pan mmio_write_32(0x70c30e000 + (i * 4), 0x55555555); 40564cadc16SJiafei Pan mmio_write_32(0x70c30e200 + (i * 4), 0x55555555); 40664cadc16SJiafei Pan mmio_write_32(0x70c310000 + (i * 4), 0x55555555); 40764cadc16SJiafei Pan mmio_write_32(0x70c310400 + (i * 4), 0x55555555); 40864cadc16SJiafei Pan } 40964cadc16SJiafei Pan for (i = 0U; i < 5U; i++) { 41064cadc16SJiafei Pan mmio_write_32(0x70c312000 + (i * 4), 0x55555555); 41164cadc16SJiafei Pan mmio_write_32(0x70c312400 + (i * 4), 0x55555555); 41264cadc16SJiafei Pan } 41364cadc16SJiafei Pan 41464cadc16SJiafei Pan /* Disable BIST */ 41564cadc16SJiafei Pan 41664cadc16SJiafei Pan mmio_write_32(0x700117E60, val3); 41764cadc16SJiafei Pan mmio_write_32(0x700117E90, val4); 41864cadc16SJiafei Pan } 41964cadc16SJiafei Pan #endif /* ERRATA_SOC_A050426 */ 420*9616db15SJiafei Pan 421*9616db15SJiafei Pan void soc_errata(void) 422*9616db15SJiafei Pan { 423*9616db15SJiafei Pan #ifdef ERRATA_SOC_A050426 424*9616db15SJiafei Pan INFO("SoC workaround for Errata A050426 was applied\n"); 425*9616db15SJiafei Pan erratum_a050426(); 426*9616db15SJiafei Pan #endif 427*9616db15SJiafei Pan /* 428*9616db15SJiafei Pan * The following DDR Erratas workaround are implemented in DDR driver, 429*9616db15SJiafei Pan * but print information here. 430*9616db15SJiafei Pan */ 431*9616db15SJiafei Pan #if ERRATA_DDR_A011396 432*9616db15SJiafei Pan INFO("SoC workaround for DDR Errata A011396 was applied\n"); 433*9616db15SJiafei Pan #endif 434*9616db15SJiafei Pan #if ERRATA_DDR_A050450 435*9616db15SJiafei Pan INFO("SoC workaround for DDR Errata A050450 was applied\n"); 436*9616db15SJiafei Pan #endif 437*9616db15SJiafei Pan } 438