xref: /rk3399_rockchip-uboot/drivers/misc/fsl_ifc.c (revision b939689c7b87773c44275a578ffc8674a867e39d)
10b66513bSYork Sun /*
20b66513bSYork Sun  * Copyright 2010-2011 Freescale Semiconductor, Inc.
30b66513bSYork Sun  * Author: Dipen Dudhat <dipen.dudhat@freescale.com>
40b66513bSYork Sun  *
50b66513bSYork Sun  * SPDX-License-Identifier:	GPL-2.0+
60b66513bSYork Sun  */
70b66513bSYork Sun 
80b66513bSYork Sun #include <common.h>
90b66513bSYork Sun #include <fsl_ifc.h>
100b66513bSYork Sun 
print_ifc_regs(void)110b66513bSYork Sun void print_ifc_regs(void)
120b66513bSYork Sun {
130b66513bSYork Sun 	int i, j;
140b66513bSYork Sun 
150b66513bSYork Sun 	printf("IFC Controller Registers\n");
160b66513bSYork Sun 	for (i = 0; i < CONFIG_SYS_FSL_IFC_BANK_COUNT; i++) {
170b66513bSYork Sun 		printf("CSPR%d:0x%08X\tAMASK%d:0x%08X\tCSOR%d:0x%08X\n",
180b66513bSYork Sun 			i, get_ifc_cspr(i), i, get_ifc_amask(i),
190b66513bSYork Sun 			i, get_ifc_csor(i));
200b66513bSYork Sun 		for (j = 0; j < 4; j++)
210b66513bSYork Sun 			printf("IFC_FTIM%d:0x%08X\n", j, get_ifc_ftim(i, j));
220b66513bSYork Sun 	}
230b66513bSYork Sun }
240b66513bSYork Sun 
init_early_memctl_regs(void)250b66513bSYork Sun void init_early_memctl_regs(void)
260b66513bSYork Sun {
270b66513bSYork Sun #if defined(CONFIG_SYS_CSPR0) && defined(CONFIG_SYS_CSOR0)
280b66513bSYork Sun 	set_ifc_ftim(IFC_CS0, IFC_FTIM0, CONFIG_SYS_CS0_FTIM0);
290b66513bSYork Sun 	set_ifc_ftim(IFC_CS0, IFC_FTIM1, CONFIG_SYS_CS0_FTIM1);
300b66513bSYork Sun 	set_ifc_ftim(IFC_CS0, IFC_FTIM2, CONFIG_SYS_CS0_FTIM2);
310b66513bSYork Sun 	set_ifc_ftim(IFC_CS0, IFC_FTIM3, CONFIG_SYS_CS0_FTIM3);
320b66513bSYork Sun 
330b66513bSYork Sun #ifndef CONFIG_A003399_NOR_WORKAROUND
340b66513bSYork Sun #ifdef CONFIG_SYS_CSPR0_EXT
350b66513bSYork Sun 	set_ifc_cspr_ext(IFC_CS0, CONFIG_SYS_CSPR0_EXT);
360b66513bSYork Sun #endif
3777fdd6d1STom Rini #ifdef CONFIG_SYS_CSOR0_EXT
3877fdd6d1STom Rini 	set_ifc_csor_ext(IFC_CS0, CONFIG_SYS_CSOR0_EXT);
3977fdd6d1STom Rini #endif
400b66513bSYork Sun 	set_ifc_cspr(IFC_CS0, CONFIG_SYS_CSPR0);
410b66513bSYork Sun 	set_ifc_amask(IFC_CS0, CONFIG_SYS_AMASK0);
420b66513bSYork Sun 	set_ifc_csor(IFC_CS0, CONFIG_SYS_CSOR0);
430b66513bSYork Sun #endif
440b66513bSYork Sun #endif
450b66513bSYork Sun 
460b66513bSYork Sun #ifdef CONFIG_SYS_CSPR1_EXT
470b66513bSYork Sun 	set_ifc_cspr_ext(IFC_CS1, CONFIG_SYS_CSPR1_EXT);
480b66513bSYork Sun #endif
4977fdd6d1STom Rini #ifdef CONFIG_SYS_CSOR1_EXT
5077fdd6d1STom Rini 	set_ifc_csor_ext(IFC_CS1, CONFIG_SYS_CSOR1_EXT);
5177fdd6d1STom Rini #endif
520b66513bSYork Sun #if defined(CONFIG_SYS_CSPR1) && defined(CONFIG_SYS_CSOR1)
530b66513bSYork Sun 	set_ifc_ftim(IFC_CS1, IFC_FTIM0, CONFIG_SYS_CS1_FTIM0);
540b66513bSYork Sun 	set_ifc_ftim(IFC_CS1, IFC_FTIM1, CONFIG_SYS_CS1_FTIM1);
550b66513bSYork Sun 	set_ifc_ftim(IFC_CS1, IFC_FTIM2, CONFIG_SYS_CS1_FTIM2);
560b66513bSYork Sun 	set_ifc_ftim(IFC_CS1, IFC_FTIM3, CONFIG_SYS_CS1_FTIM3);
570b66513bSYork Sun 
580b66513bSYork Sun 	set_ifc_csor(IFC_CS1, CONFIG_SYS_CSOR1);
590b66513bSYork Sun 	set_ifc_amask(IFC_CS1, CONFIG_SYS_AMASK1);
600b66513bSYork Sun 	set_ifc_cspr(IFC_CS1, CONFIG_SYS_CSPR1);
610b66513bSYork Sun #endif
620b66513bSYork Sun 
630b66513bSYork Sun #ifdef CONFIG_SYS_CSPR2_EXT
640b66513bSYork Sun 	set_ifc_cspr_ext(IFC_CS2, CONFIG_SYS_CSPR2_EXT);
650b66513bSYork Sun #endif
6677fdd6d1STom Rini #ifdef CONFIG_SYS_CSOR2_EXT
6777fdd6d1STom Rini 	set_ifc_csor_ext(IFC_CS2, CONFIG_SYS_CSOR2_EXT);
6877fdd6d1STom Rini #endif
690b66513bSYork Sun #if defined(CONFIG_SYS_CSPR2) && defined(CONFIG_SYS_CSOR2)
700b66513bSYork Sun 	set_ifc_ftim(IFC_CS2, IFC_FTIM0, CONFIG_SYS_CS2_FTIM0);
710b66513bSYork Sun 	set_ifc_ftim(IFC_CS2, IFC_FTIM1, CONFIG_SYS_CS2_FTIM1);
720b66513bSYork Sun 	set_ifc_ftim(IFC_CS2, IFC_FTIM2, CONFIG_SYS_CS2_FTIM2);
730b66513bSYork Sun 	set_ifc_ftim(IFC_CS2, IFC_FTIM3, CONFIG_SYS_CS2_FTIM3);
740b66513bSYork Sun 
750b66513bSYork Sun 	set_ifc_csor(IFC_CS2, CONFIG_SYS_CSOR2);
760b66513bSYork Sun 	set_ifc_amask(IFC_CS2, CONFIG_SYS_AMASK2);
770b66513bSYork Sun 	set_ifc_cspr(IFC_CS2, CONFIG_SYS_CSPR2);
780b66513bSYork Sun #endif
790b66513bSYork Sun 
800b66513bSYork Sun #ifdef CONFIG_SYS_CSPR3_EXT
810b66513bSYork Sun 	set_ifc_cspr_ext(IFC_CS3, CONFIG_SYS_CSPR3_EXT);
820b66513bSYork Sun #endif
8377fdd6d1STom Rini #ifdef CONFIG_SYS_CSOR3_EXT
8477fdd6d1STom Rini 	set_ifc_csor_ext(IFC_CS3, CONFIG_SYS_CSOR3_EXT);
8577fdd6d1STom Rini #endif
860b66513bSYork Sun #if defined(CONFIG_SYS_CSPR3) && defined(CONFIG_SYS_CSOR3)
870b66513bSYork Sun 	set_ifc_ftim(IFC_CS3, IFC_FTIM0, CONFIG_SYS_CS3_FTIM0);
880b66513bSYork Sun 	set_ifc_ftim(IFC_CS3, IFC_FTIM1, CONFIG_SYS_CS3_FTIM1);
890b66513bSYork Sun 	set_ifc_ftim(IFC_CS3, IFC_FTIM2, CONFIG_SYS_CS3_FTIM2);
900b66513bSYork Sun 	set_ifc_ftim(IFC_CS3, IFC_FTIM3, CONFIG_SYS_CS3_FTIM3);
910b66513bSYork Sun 
920b66513bSYork Sun 	set_ifc_cspr(IFC_CS3, CONFIG_SYS_CSPR3);
930b66513bSYork Sun 	set_ifc_amask(IFC_CS3, CONFIG_SYS_AMASK3);
940b66513bSYork Sun 	set_ifc_csor(IFC_CS3, CONFIG_SYS_CSOR3);
950b66513bSYork Sun #endif
960b66513bSYork Sun 
970b66513bSYork Sun #ifdef CONFIG_SYS_CSPR4_EXT
980b66513bSYork Sun 	set_ifc_cspr_ext(IFC_CS4, CONFIG_SYS_CSPR4_EXT);
990b66513bSYork Sun #endif
10077fdd6d1STom Rini #ifdef CONFIG_SYS_CSOR4_EXT
10177fdd6d1STom Rini 	set_ifc_csor_ext(IFC_CS4, CONFIG_SYS_CSOR4_EXT);
10277fdd6d1STom Rini #endif
1030b66513bSYork Sun #if defined(CONFIG_SYS_CSPR4) && defined(CONFIG_SYS_CSOR4)
1040b66513bSYork Sun 	set_ifc_ftim(IFC_CS4, IFC_FTIM0, CONFIG_SYS_CS4_FTIM0);
1050b66513bSYork Sun 	set_ifc_ftim(IFC_CS4, IFC_FTIM1, CONFIG_SYS_CS4_FTIM1);
1060b66513bSYork Sun 	set_ifc_ftim(IFC_CS4, IFC_FTIM2, CONFIG_SYS_CS4_FTIM2);
1070b66513bSYork Sun 	set_ifc_ftim(IFC_CS4, IFC_FTIM3, CONFIG_SYS_CS4_FTIM3);
1080b66513bSYork Sun 
1090b66513bSYork Sun 	set_ifc_cspr(IFC_CS4, CONFIG_SYS_CSPR4);
1100b66513bSYork Sun 	set_ifc_amask(IFC_CS4, CONFIG_SYS_AMASK4);
1110b66513bSYork Sun 	set_ifc_csor(IFC_CS4, CONFIG_SYS_CSOR4);
1120b66513bSYork Sun #endif
1130b66513bSYork Sun 
1140b66513bSYork Sun #ifdef CONFIG_SYS_CSPR5_EXT
1150b66513bSYork Sun 	set_ifc_cspr_ext(IFC_CS5, CONFIG_SYS_CSPR5_EXT);
1160b66513bSYork Sun #endif
11777fdd6d1STom Rini #ifdef CONFIG_SYS_CSOR5_EXT
11877fdd6d1STom Rini 	set_ifc_csor_ext(IFC_CS5, CONFIG_SYS_CSOR5_EXT);
11977fdd6d1STom Rini #endif
1200b66513bSYork Sun #if defined(CONFIG_SYS_CSPR5) && defined(CONFIG_SYS_CSOR5)
1210b66513bSYork Sun 	set_ifc_ftim(IFC_CS5, IFC_FTIM0, CONFIG_SYS_CS5_FTIM0);
1220b66513bSYork Sun 	set_ifc_ftim(IFC_CS5, IFC_FTIM1, CONFIG_SYS_CS5_FTIM1);
1230b66513bSYork Sun 	set_ifc_ftim(IFC_CS5, IFC_FTIM2, CONFIG_SYS_CS5_FTIM2);
1240b66513bSYork Sun 	set_ifc_ftim(IFC_CS5, IFC_FTIM3, CONFIG_SYS_CS5_FTIM3);
1250b66513bSYork Sun 
1260b66513bSYork Sun 	set_ifc_cspr(IFC_CS5, CONFIG_SYS_CSPR5);
1270b66513bSYork Sun 	set_ifc_amask(IFC_CS5, CONFIG_SYS_AMASK5);
1280b66513bSYork Sun 	set_ifc_csor(IFC_CS5, CONFIG_SYS_CSOR5);
1290b66513bSYork Sun #endif
1300b66513bSYork Sun 
1310b66513bSYork Sun #ifdef CONFIG_SYS_CSPR6_EXT
1320b66513bSYork Sun 	set_ifc_cspr_ext(IFC_CS6, CONFIG_SYS_CSPR6_EXT);
1330b66513bSYork Sun #endif
13477fdd6d1STom Rini #ifdef CONFIG_SYS_CSOR6_EXT
13577fdd6d1STom Rini 	set_ifc_csor_ext(IFC_CS6, CONFIG_SYS_CSOR6_EXT);
13677fdd6d1STom Rini #endif
1370b66513bSYork Sun #if defined(CONFIG_SYS_CSPR6) && defined(CONFIG_SYS_CSOR6)
1380b66513bSYork Sun 	set_ifc_ftim(IFC_CS6, IFC_FTIM0, CONFIG_SYS_CS6_FTIM0);
1390b66513bSYork Sun 	set_ifc_ftim(IFC_CS6, IFC_FTIM1, CONFIG_SYS_CS6_FTIM1);
1400b66513bSYork Sun 	set_ifc_ftim(IFC_CS6, IFC_FTIM2, CONFIG_SYS_CS6_FTIM2);
1410b66513bSYork Sun 	set_ifc_ftim(IFC_CS6, IFC_FTIM3, CONFIG_SYS_CS6_FTIM3);
1420b66513bSYork Sun 
1430b66513bSYork Sun 	set_ifc_cspr(IFC_CS6, CONFIG_SYS_CSPR6);
1440b66513bSYork Sun 	set_ifc_amask(IFC_CS6, CONFIG_SYS_AMASK6);
1450b66513bSYork Sun 	set_ifc_csor(IFC_CS6, CONFIG_SYS_CSOR6);
1460b66513bSYork Sun #endif
1470b66513bSYork Sun 
1480b66513bSYork Sun #ifdef CONFIG_SYS_CSPR7_EXT
1490b66513bSYork Sun 	set_ifc_cspr_ext(IFC_CS7, CONFIG_SYS_CSPR7_EXT);
1500b66513bSYork Sun #endif
15177fdd6d1STom Rini #ifdef CONFIG_SYS_CSOR7_EXT
15277fdd6d1STom Rini 	set_ifc_csor_ext(IFC_CS7, CONFIG_SYS_CSOR7_EXT);
15377fdd6d1STom Rini #endif
1540b66513bSYork Sun #if defined(CONFIG_SYS_CSPR7) && defined(CONFIG_SYS_CSOR7)
1550b66513bSYork Sun 	set_ifc_ftim(IFC_CS7, IFC_FTIM0, CONFIG_SYS_CS7_FTIM0);
1560b66513bSYork Sun 	set_ifc_ftim(IFC_CS7, IFC_FTIM1, CONFIG_SYS_CS7_FTIM1);
1570b66513bSYork Sun 	set_ifc_ftim(IFC_CS7, IFC_FTIM2, CONFIG_SYS_CS7_FTIM2);
1580b66513bSYork Sun 	set_ifc_ftim(IFC_CS7, IFC_FTIM3, CONFIG_SYS_CS7_FTIM3);
1590b66513bSYork Sun 
1600b66513bSYork Sun 	set_ifc_cspr(IFC_CS7, CONFIG_SYS_CSPR7);
1610b66513bSYork Sun 	set_ifc_amask(IFC_CS7, CONFIG_SYS_AMASK7);
1620b66513bSYork Sun 	set_ifc_csor(IFC_CS7, CONFIG_SYS_CSOR7);
1630b66513bSYork Sun #endif
1640b66513bSYork Sun }
165e77224e2SYork Sun 
init_final_memctl_regs(void)166e77224e2SYork Sun void init_final_memctl_regs(void)
167e77224e2SYork Sun {
168e77224e2SYork Sun #ifdef CONFIG_SYS_CSPR0_FINAL
169e77224e2SYork Sun 	set_ifc_cspr(IFC_CS0, CONFIG_SYS_CSPR0_FINAL);
170e77224e2SYork Sun #endif
171*b2d5ac59SScott Wood #ifdef CONFIG_SYS_AMASK0_FINAL
172*b2d5ac59SScott Wood 	set_ifc_amask(IFC_CS0, CONFIG_SYS_AMASK0);
173*b2d5ac59SScott Wood #endif
17445bc6fd1SPrabhakar Kushwaha #ifdef CONFIG_SYS_CSPR1_FINAL
17545bc6fd1SPrabhakar Kushwaha 	set_ifc_cspr(IFC_CS1, CONFIG_SYS_CSPR1_FINAL);
17645bc6fd1SPrabhakar Kushwaha #endif
17745bc6fd1SPrabhakar Kushwaha #ifdef CONFIG_SYS_AMASK1_FINAL
17845bc6fd1SPrabhakar Kushwaha 	set_ifc_amask(IFC_CS1, CONFIG_SYS_AMASK1_FINAL);
17945bc6fd1SPrabhakar Kushwaha #endif
180*b2d5ac59SScott Wood #ifdef CONFIG_SYS_CSPR2_FINAL
181*b2d5ac59SScott Wood 	set_ifc_cspr(IFC_CS2, CONFIG_SYS_CSPR2_FINAL);
182*b2d5ac59SScott Wood #endif
183*b2d5ac59SScott Wood #ifdef CONFIG_SYS_AMASK2_FINAL
184*b2d5ac59SScott Wood 	set_ifc_amask(IFC_CS2, CONFIG_SYS_AMASK2);
185*b2d5ac59SScott Wood #endif
18645bc6fd1SPrabhakar Kushwaha #ifdef CONFIG_SYS_CSPR3_FINAL
18745bc6fd1SPrabhakar Kushwaha 	set_ifc_cspr(IFC_CS3, CONFIG_SYS_CSPR3_FINAL);
18845bc6fd1SPrabhakar Kushwaha #endif
189*b2d5ac59SScott Wood #ifdef CONFIG_SYS_AMASK3_FINAL
190*b2d5ac59SScott Wood 	set_ifc_amask(IFC_CS3, CONFIG_SYS_AMASK3);
191*b2d5ac59SScott Wood #endif
192e77224e2SYork Sun }
193