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 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 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 } 165*e77224e2SYork Sun 166*e77224e2SYork Sun void init_final_memctl_regs(void) 167*e77224e2SYork Sun { 168*e77224e2SYork Sun #ifdef CONFIG_SYS_CSPR0_FINAL 169*e77224e2SYork Sun set_ifc_cspr(IFC_CS0, CONFIG_SYS_CSPR0_FINAL); 170*e77224e2SYork Sun #endif 171*e77224e2SYork Sun } 172