xref: /rk3399_ARM-atf/plat/nxp/common/soc_errata/errata.c (revision 9616db154b0be0abe27f7d267482772b54c88664)
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