19f3183d2SMingkai Hu /* 2e809e747SPriyanka Jain * Copyright 2017 NXP 39f3183d2SMingkai Hu * Copyright 2015 Freescale Semiconductor 49f3183d2SMingkai Hu * 59f3183d2SMingkai Hu * SPDX-License-Identifier: GPL-2.0+ 69f3183d2SMingkai Hu */ 79f3183d2SMingkai Hu 89f3183d2SMingkai Hu #ifndef _ASM_ARMV8_FSL_LAYERSCAPE_SOC_H_ 99f3183d2SMingkai Hu #define _ASM_ARMV8_FSL_LAYERSCAPE_SOC_H_ 109f3183d2SMingkai Hu 11457e51cfSSimon Glass #ifndef __ASSEMBLY__ 12457e51cfSSimon Glass #include <linux/types.h> 13457e51cfSSimon Glass #ifdef CONFIG_FSL_LSCH2 14457e51cfSSimon Glass #include <asm/arch/immap_lsch2.h> 15457e51cfSSimon Glass #endif 16457e51cfSSimon Glass #ifdef CONFIG_FSL_LSCH3 17457e51cfSSimon Glass #include <asm/arch/immap_lsch3.h> 18457e51cfSSimon Glass #endif 19457e51cfSSimon Glass #endif 20457e51cfSSimon Glass 219f3183d2SMingkai Hu #ifdef CONFIG_SYS_FSL_CCSR_GUR_LE 229f3183d2SMingkai Hu #define gur_in32(a) in_le32(a) 239f3183d2SMingkai Hu #define gur_out32(a, v) out_le32(a, v) 249f3183d2SMingkai Hu #elif defined(CONFIG_SYS_FSL_CCSR_GUR_BE) 259f3183d2SMingkai Hu #define gur_in32(a) in_be32(a) 269f3183d2SMingkai Hu #define gur_out32(a, v) out_be32(a, v) 279f3183d2SMingkai Hu #endif 289f3183d2SMingkai Hu 299f3183d2SMingkai Hu #ifdef CONFIG_SYS_FSL_CCSR_SCFG_LE 309f3183d2SMingkai Hu #define scfg_in32(a) in_le32(a) 319f3183d2SMingkai Hu #define scfg_out32(a, v) out_le32(a, v) 329f3183d2SMingkai Hu #elif defined(CONFIG_SYS_FSL_CCSR_SCFG_BE) 339f3183d2SMingkai Hu #define scfg_in32(a) in_be32(a) 349f3183d2SMingkai Hu #define scfg_out32(a, v) out_be32(a, v) 359f3183d2SMingkai Hu #endif 369f3183d2SMingkai Hu 37af523a0dSMingkai Hu #ifdef CONFIG_SYS_FSL_PEX_LUT_LE 38af523a0dSMingkai Hu #define pex_lut_in32(a) in_le32(a) 39af523a0dSMingkai Hu #define pex_lut_out32(a, v) out_le32(a, v) 40af523a0dSMingkai Hu #elif defined(CONFIG_SYS_FSL_PEX_LUT_BE) 41af523a0dSMingkai Hu #define pex_lut_in32(a) in_be32(a) 42af523a0dSMingkai Hu #define pex_lut_out32(a, v) out_be32(a, v) 43af523a0dSMingkai Hu #endif 44f6b96ff6SPriyanka Jain #ifndef __ASSEMBLY__ 459f3183d2SMingkai Hu struct cpu_type { 469f3183d2SMingkai Hu char name[15]; 479f3183d2SMingkai Hu u32 soc_ver; 489f3183d2SMingkai Hu u32 num_cores; 499f3183d2SMingkai Hu }; 509f3183d2SMingkai Hu 519f3183d2SMingkai Hu #define CPU_TYPE_ENTRY(n, v, nc) \ 529f3183d2SMingkai Hu { .name = #n, .soc_ver = SVR_##v, .num_cores = (nc)} 53f6b96ff6SPriyanka Jain #endif 549f3183d2SMingkai Hu #define SVR_WO_E 0xFFFFFE 5549cdce16SPrabhakar Kushwaha #define SVR_LS1012A 0x870400 5649cdce16SPrabhakar Kushwaha #define SVR_LS1043A 0x879200 5749cdce16SPrabhakar Kushwaha #define SVR_LS1023A 0x879208 58b528b937SMingkai Hu #define SVR_LS1046A 0x870700 59b528b937SMingkai Hu #define SVR_LS1026A 0x870708 6049cdce16SPrabhakar Kushwaha #define SVR_LS2045A 0x870120 6149cdce16SPrabhakar Kushwaha #define SVR_LS2080A 0x870110 6249cdce16SPrabhakar Kushwaha #define SVR_LS2085A 0x870100 6349cdce16SPrabhakar Kushwaha #define SVR_LS2040A 0x870130 649ae836cdSPriyanka Jain #define SVR_LS2088A 0x870900 659ae836cdSPriyanka Jain #define SVR_LS2084A 0x870910 669ae836cdSPriyanka Jain #define SVR_LS2048A 0x870920 679ae836cdSPriyanka Jain #define SVR_LS2044A 0x870930 68ec8a7d77SSantan Kumar #define SVR_LS2081A 0x870918 69ec8a7d77SSantan Kumar #define SVR_LS2041A 0x870914 709f3183d2SMingkai Hu 719f3183d2SMingkai Hu #define SVR_MAJ(svr) (((svr) >> 4) & 0xf) 729f3183d2SMingkai Hu #define SVR_MIN(svr) (((svr) >> 0) & 0xf) 73fa18ed76SWenbin Song #define SVR_REV(svr) (((svr) >> 0) & 0xff) 749f3183d2SMingkai Hu #define SVR_SOC_VER(svr) (((svr) >> 8) & SVR_WO_E) 759f3183d2SMingkai Hu #define IS_E_PROCESSOR(svr) (!((svr >> 8) & 0x1)) 766fb522dcSSriram Dash #define IS_SVR_REV(svr, maj, min) \ 776fb522dcSSriram Dash ((SVR_MAJ(svr) == (maj)) && (SVR_MIN(svr) == (min))) 78*739cab17SWenbin song #define SVR_DEV(svr) ((svr) >> 8) 79*739cab17SWenbin song #define IS_SVR_DEV(svr, dev) (((svr) >> 16) == (dev)) 809f3183d2SMingkai Hu 81989c5f0aSTang Yuantian /* ahci port register default value */ 82989c5f0aSTang Yuantian #define AHCI_PORT_PHY_1_CFG 0xa003fffe 83989c5f0aSTang Yuantian #define AHCI_PORT_TRANS_CFG 0x08000029 844de6ce15STang Yuantian #define AHCI_PORT_AXICC_CFG 0x3fffffff 85989c5f0aSTang Yuantian 86f6b96ff6SPriyanka Jain #ifndef __ASSEMBLY__ 87989c5f0aSTang Yuantian /* AHCI (sata) register map */ 88989c5f0aSTang Yuantian struct ccsr_ahci { 89989c5f0aSTang Yuantian u32 res1[0xa4/4]; /* 0x0 - 0xa4 */ 90989c5f0aSTang Yuantian u32 pcfg; /* port config */ 91989c5f0aSTang Yuantian u32 ppcfg; /* port phy1 config */ 92989c5f0aSTang Yuantian u32 pp2c; /* port phy2 config */ 93989c5f0aSTang Yuantian u32 pp3c; /* port phy3 config */ 94989c5f0aSTang Yuantian u32 pp4c; /* port phy4 config */ 95989c5f0aSTang Yuantian u32 pp5c; /* port phy5 config */ 96989c5f0aSTang Yuantian u32 axicc; /* AXI cache control */ 97989c5f0aSTang Yuantian u32 paxic; /* port AXI config */ 98989c5f0aSTang Yuantian u32 axipc; /* AXI PROT control */ 99989c5f0aSTang Yuantian u32 ptc; /* port Trans Config */ 100989c5f0aSTang Yuantian u32 pts; /* port Trans Status */ 101989c5f0aSTang Yuantian u32 plc; /* port link config */ 102989c5f0aSTang Yuantian u32 plc1; /* port link config1 */ 103989c5f0aSTang Yuantian u32 plc2; /* port link config2 */ 104989c5f0aSTang Yuantian u32 pls; /* port link status */ 105989c5f0aSTang Yuantian u32 pls1; /* port link status1 */ 106989c5f0aSTang Yuantian u32 pcmdc; /* port CMD config */ 107989c5f0aSTang Yuantian u32 ppcs; /* port phy control status */ 108989c5f0aSTang Yuantian u32 pberr; /* port 0/1 BIST error */ 109989c5f0aSTang Yuantian u32 cmds; /* port 0/1 CMD status error */ 110989c5f0aSTang Yuantian }; 111989c5f0aSTang Yuantian 1128281c58fSMingkai Hu #ifdef CONFIG_FSL_LSCH3 1139f3183d2SMingkai Hu void fsl_lsch3_early_init_f(void); 1148281c58fSMingkai Hu #elif defined(CONFIG_FSL_LSCH2) 1158281c58fSMingkai Hu void fsl_lsch2_early_init_f(void); 116031acdbaSHou Zhiqiang int setup_chip_volt(void); 117031acdbaSHou Zhiqiang /* Setup core vdd in unit mV */ 118031acdbaSHou Zhiqiang int board_setup_core_volt(u32 vdd); 1198281c58fSMingkai Hu #endif 1208281c58fSMingkai Hu 1219f3183d2SMingkai Hu void cpu_name(char *name); 122b4017364SPrabhakar Kushwaha #ifdef CONFIG_SYS_FSL_ERRATUM_A009635 123b4017364SPrabhakar Kushwaha void erratum_a009635(void); 124b4017364SPrabhakar Kushwaha #endif 1253c1d218aSYork Sun 126b392a6d4SHou Zhiqiang #ifdef CONFIG_SYS_FSL_ERRATUM_A010315 127b392a6d4SHou Zhiqiang void erratum_a010315(void); 128b392a6d4SHou Zhiqiang #endif 129b392a6d4SHou Zhiqiang 1303c1d218aSYork Sun bool soc_has_dp_ddr(void); 1313c1d218aSYork Sun bool soc_has_aiop(void); 132f6b96ff6SPriyanka Jain #endif 133457e51cfSSimon Glass 1349f3183d2SMingkai Hu #endif /* _ASM_ARMV8_FSL_LAYERSCAPE_SOC_H_ */ 135