/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright 2017 NXP * Copyright (C) 2014 Freescale Semiconductor */ #ifndef __LS2_COMMON_H #define __LS2_COMMON_H #include #include /* Link Definitions */ /* We need architecture specific misc initializations */ /* Link Definitions */ #define CFG_SYS_DDR_SDRAM_BASE 0x80000000UL #define CFG_SYS_FSL_DDR_SDRAM_BASE_PHY 0 #define CFG_SYS_SDRAM_BASE CFG_SYS_DDR_SDRAM_BASE #define CFG_SYS_DDR_BLOCK2_BASE 0x8080000000ULL /* * SMP Definitinos */ #define CPU_RELEASE_ADDR secondary_boot_addr /* * This is not an accurate number. It is used in start.S. The frequency * will be udpated later when get_bus_freq(0) is available. */ /* GPIO */ /* I2C */ /* Serial Port */ #define CFG_SYS_NS16550_CLK (get_serial_clock()) /* * During booting, IFC is mapped at the region of 0x30000000. * But this region is limited to 256MB. To accommodate NOR, promjet * and FPGA. This region is divided as below: * 0x30000000 - 0x37ffffff : 128MB : NOR flash * 0x38000000 - 0x3BFFFFFF : 64MB : Promjet * 0x3C000000 - 0x40000000 : 64MB : FPGA etc * * To accommodate bigger NOR flash and other devices, we will map IFC * chip selects to as below: * 0x5_1000_0000..0x5_1fff_ffff Memory Hole * 0x5_2000_0000..0x5_3fff_ffff IFC CSx (FPGA, NAND and others 512MB) * 0x5_4000_0000..0x5_7fff_ffff ASIC or others 1GB * 0x5_8000_0000..0x5_bfff_ffff IFC CS0 1GB (NOR/Promjet) * 0x5_C000_0000..0x5_ffff_ffff IFC CS1 1GB (NOR/Promjet) * * For e.g. NOR flash at CS0 will be mapped to 0x580000000 after relocation. * CFG_SYS_FLASH_BASE has the final address (core view) * CFG_SYS_FLASH_BASE_PHYS has the final address (IFC view) * CFG_SYS_FLASH_BASE_PHYS_EARLY has the temporary IFC address * CONFIG_TEXT_BASE is linked to 0x30000000 for booting */ #define CFG_SYS_FLASH_BASE 0x580000000ULL #define CFG_SYS_FLASH_BASE_PHYS 0x80000000 #define CFG_SYS_FLASH_BASE_PHYS_EARLY 0x00000000 #define CFG_SYS_FLASH1_BASE_PHYS 0xC0000000 #define CFG_SYS_FLASH1_BASE_PHYS_EARLY 0x8000000 #ifndef __ASSEMBLY__ unsigned long long get_qixis_addr(void); #endif #define QIXIS_BASE get_qixis_addr() #define QIXIS_BASE_PHYS 0x20000000 #define QIXIS_BASE_PHYS_EARLY 0xC000000 #define QIXIS_STAT_PRES1 0xb #define QIXIS_SDID_MASK 0x07 #define QIXIS_ESDHC_NO_ADAPTER 0x7 #define CFG_SYS_NAND_BASE 0x530000000ULL #define CFG_SYS_NAND_BASE_PHYS 0x30000000 /* MC firmware */ /* TODO Actual DPL max length needs to be confirmed with the MC FW team */ #define CFG_SYS_LS_MC_DPC_MAX_LENGTH 0x20000 #define CFG_SYS_LS_MC_DRAM_DPC_OFFSET 0x00F00000 #define CFG_SYS_LS_MC_DPL_MAX_LENGTH 0x20000 #define CFG_SYS_LS_MC_DRAM_DPL_OFFSET 0x00F20000 /* For LS2085A */ #define CFG_SYS_LS_MC_AIOP_IMG_MAX_LENGTH 0x200000 #define CFG_SYS_LS_MC_DRAM_AIOP_IMG_OFFSET 0x07000000 /* * Carve out a DDR region which will not be used by u-boot/Linux * * It will be used by MC and Debug Server. The MC region must be * 512MB aligned, so the min size to hide is 512MB. */ #ifdef CONFIG_FSL_MC_ENET #define CFG_SYS_LS_MC_DRAM_BLOCK_MIN_SIZE (128UL * 1024 * 1024) #endif /* Miscellaneous configurable options */ /* Physical Memory Map */ /* fixme: these need to be checked against the board */ #define HWCONFIG_BUFFER_SIZE 128 /* Initial environment variables */ #define CONFIG_EXTRA_ENV_SETTINGS \ "hwconfig=fsl_ddr:bank_intlv=auto\0" \ "loadaddr=0x80100000\0" \ "kernel_addr=0x100000\0" \ "ramdisk_addr=0x800000\0" \ "ramdisk_size=0x2000000\0" \ "fdt_high=0xa0000000\0" \ "initrd_high=0xffffffffffffffff\0" \ "kernel_start=0x581000000\0" \ "kernel_load=0xa0000000\0" \ "kernel_size=0x2800000\0" \ "console=ttyAMA0,38400n8\0" \ "mcinitcmd=fsl_mc start mc 0x580a00000" \ " 0x580e00000 \0" #ifdef CONFIG_NAND_BOOT #define CFG_SYS_NAND_U_BOOT_DST 0x80400000 #define CFG_SYS_NAND_U_BOOT_START CFG_SYS_NAND_U_BOOT_DST #endif #include #endif /* __LS2_COMMON_H */