mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-28 01:51:33 +00:00
imx8qxp: mek: default enable SPL
Enable SPL for i.MX8QXP MEK, and currently use SPL FIT. The SPL enable SPL_DM to use MMC/PINCTRL/POWER DOMAIN/CLK. Note: SPL FIT could not support secure boot chain, because i.MX8/8X only support i.MX container format. This container format has not been upstreamed, so we use FIT for now. When SPL container supported, we could switch to that. Signed-off-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
caceb739ea
commit
018e3fd2d1
5 changed files with 127 additions and 3 deletions
|
@ -5,3 +5,4 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
obj-y += imx8qxp_mek.o
|
obj-y += imx8qxp_mek.o
|
||||||
|
obj-$(CONFIG_SPL_BUILD) += spl.o
|
||||||
|
|
|
@ -19,6 +19,4 @@ CONTAINER
|
||||||
/* Add scfw image with exec attribute */
|
/* Add scfw image with exec attribute */
|
||||||
IMAGE SCU mx8qx-mek-scfw-tcm.bin
|
IMAGE SCU mx8qx-mek-scfw-tcm.bin
|
||||||
/* Add ATF image with exec attribute */
|
/* Add ATF image with exec attribute */
|
||||||
IMAGE A35 bl31.bin 0x80000000
|
IMAGE A35 spl/u-boot-spl.bin 0x00100000
|
||||||
/* Add U-Boot image with load attribute */
|
|
||||||
DATA A35 u-boot-dtb.bin 0x80020000
|
|
||||||
|
|
75
board/freescale/imx8qxp_mek/spl.c
Normal file
75
board/freescale/imx8qxp_mek/spl.c
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 NXP
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <common.h>
|
||||||
|
#include <dm.h>
|
||||||
|
#include <spl.h>
|
||||||
|
#include <dm/uclass.h>
|
||||||
|
#include <dm/device.h>
|
||||||
|
#include <dm/uclass-internal.h>
|
||||||
|
#include <dm/device-internal.h>
|
||||||
|
#include <dm/lists.h>
|
||||||
|
|
||||||
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
void spl_board_init(void)
|
||||||
|
{
|
||||||
|
struct udevice *dev;
|
||||||
|
int offset;
|
||||||
|
|
||||||
|
uclass_find_first_device(UCLASS_MISC, &dev);
|
||||||
|
|
||||||
|
for (; dev; uclass_find_next_device(&dev)) {
|
||||||
|
if (device_probe(dev))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
offset = fdt_node_offset_by_compatible(gd->fdt_blob, -1, "nxp,imx8-pd");
|
||||||
|
while (offset != -FDT_ERR_NOTFOUND) {
|
||||||
|
lists_bind_fdt(gd->dm_root, offset_to_ofnode(offset),
|
||||||
|
NULL, true);
|
||||||
|
offset = fdt_node_offset_by_compatible(gd->fdt_blob, offset,
|
||||||
|
"nxp,imx8-pd");
|
||||||
|
}
|
||||||
|
|
||||||
|
uclass_find_first_device(UCLASS_POWER_DOMAIN, &dev);
|
||||||
|
|
||||||
|
for (; dev; uclass_find_next_device(&dev)) {
|
||||||
|
if (device_probe(dev))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
arch_cpu_init();
|
||||||
|
|
||||||
|
board_early_init_f();
|
||||||
|
|
||||||
|
timer_init();
|
||||||
|
|
||||||
|
preloader_console_init();
|
||||||
|
|
||||||
|
puts("Normal Boot\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_SPL_LOAD_FIT
|
||||||
|
int board_fit_config_name_match(const char *name)
|
||||||
|
{
|
||||||
|
/* Just empty function now - can't decide what to choose */
|
||||||
|
debug("%s: %s\n", __func__, name);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void board_init_f(ulong dummy)
|
||||||
|
{
|
||||||
|
/* Clear global data */
|
||||||
|
memset((void *)gd, 0, sizeof(gd_t));
|
||||||
|
|
||||||
|
/* Clear the BSS. */
|
||||||
|
memset(__bss_start, 0, __bss_end - __bss_start);
|
||||||
|
|
||||||
|
board_init_r(NULL, 0);
|
||||||
|
}
|
|
@ -1,11 +1,28 @@
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_ARCH_IMX8=y
|
CONFIG_ARCH_IMX8=y
|
||||||
CONFIG_SYS_TEXT_BASE=0x80020000
|
CONFIG_SYS_TEXT_BASE=0x80020000
|
||||||
|
CONFIG_SPL_GPIO_SUPPORT=y
|
||||||
|
CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||||
|
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||||
CONFIG_SYS_MALLOC_F_LEN=0x2000
|
CONFIG_SYS_MALLOC_F_LEN=0x2000
|
||||||
CONFIG_TARGET_IMX8QXP_MEK=y
|
CONFIG_TARGET_IMX8QXP_MEK=y
|
||||||
|
CONFIG_SPL_MMC_SUPPORT=y
|
||||||
|
CONFIG_SPL_SERIAL_SUPPORT=y
|
||||||
|
CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
|
||||||
|
CONFIG_SPL=y
|
||||||
CONFIG_NR_DRAM_BANKS=3
|
CONFIG_NR_DRAM_BANKS=3
|
||||||
|
CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
|
||||||
|
CONFIG_FIT=y
|
||||||
|
CONFIG_SPL_LOAD_FIT=y
|
||||||
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/imx8qxp_mek/imximage.cfg"
|
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/imx8qxp_mek/imximage.cfg"
|
||||||
CONFIG_BOOTDELAY=3
|
CONFIG_BOOTDELAY=3
|
||||||
|
CONFIG_LOG=y
|
||||||
|
CONFIG_SPL_BOARD_INIT=y
|
||||||
|
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||||
|
CONFIG_SPL_SEPARATE_BSS=y
|
||||||
|
CONFIG_SPL_POWER_SUPPORT=y
|
||||||
|
CONFIG_SPL_POWER_DOMAIN=y
|
||||||
|
CONFIG_SPL_WATCHDOG_SUPPORT=y
|
||||||
CONFIG_CMD_CPU=y
|
CONFIG_CMD_CPU=y
|
||||||
# CONFIG_CMD_IMPORTENV is not set
|
# CONFIG_CMD_IMPORTENV is not set
|
||||||
CONFIG_CMD_CLK=y
|
CONFIG_CMD_CLK=y
|
||||||
|
@ -18,8 +35,11 @@ CONFIG_CMD_MII=y
|
||||||
CONFIG_CMD_PING=y
|
CONFIG_CMD_PING=y
|
||||||
CONFIG_CMD_CACHE=y
|
CONFIG_CMD_CACHE=y
|
||||||
CONFIG_CMD_FAT=y
|
CONFIG_CMD_FAT=y
|
||||||
|
CONFIG_SPL_OF_CONTROL=y
|
||||||
CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8qxp-mek"
|
CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8qxp-mek"
|
||||||
CONFIG_ENV_IS_IN_MMC=y
|
CONFIG_ENV_IS_IN_MMC=y
|
||||||
|
CONFIG_SPL_DM=y
|
||||||
|
CONFIG_SPL_CLK=y
|
||||||
CONFIG_CLK_IMX8=y
|
CONFIG_CLK_IMX8=y
|
||||||
CONFIG_CPU=y
|
CONFIG_CPU=y
|
||||||
CONFIG_DM_GPIO=y
|
CONFIG_DM_GPIO=y
|
||||||
|
@ -41,12 +61,16 @@ CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
|
||||||
CONFIG_FEC_MXC=y
|
CONFIG_FEC_MXC=y
|
||||||
CONFIG_MII=y
|
CONFIG_MII=y
|
||||||
CONFIG_PINCTRL=y
|
CONFIG_PINCTRL=y
|
||||||
|
CONFIG_SPL_PINCTRL=y
|
||||||
CONFIG_PINCTRL_IMX8=y
|
CONFIG_PINCTRL_IMX8=y
|
||||||
CONFIG_POWER_DOMAIN=y
|
CONFIG_POWER_DOMAIN=y
|
||||||
CONFIG_IMX8_POWER_DOMAIN=y
|
CONFIG_IMX8_POWER_DOMAIN=y
|
||||||
CONFIG_DM_REGULATOR=y
|
CONFIG_DM_REGULATOR=y
|
||||||
|
CONFIG_SPL_DM_REGULATOR=y
|
||||||
CONFIG_DM_REGULATOR_FIXED=y
|
CONFIG_DM_REGULATOR_FIXED=y
|
||||||
CONFIG_DM_REGULATOR_GPIO=y
|
CONFIG_DM_REGULATOR_GPIO=y
|
||||||
|
CONFIG_SPL_DM_REGULATOR_GPIO=y
|
||||||
CONFIG_DM_SERIAL=y
|
CONFIG_DM_SERIAL=y
|
||||||
CONFIG_FSL_LPUART=y
|
CONFIG_FSL_LPUART=y
|
||||||
|
CONFIG_SPL_TINY_MEMSET=y
|
||||||
# CONFIG_EFI_LOADER is not set
|
# CONFIG_EFI_LOADER is not set
|
||||||
|
|
|
@ -9,6 +9,32 @@
|
||||||
#include <linux/sizes.h>
|
#include <linux/sizes.h>
|
||||||
#include <asm/arch/imx-regs.h>
|
#include <asm/arch/imx-regs.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_SPL_BUILD
|
||||||
|
#define CONFIG_SPL_TEXT_BASE 0x0
|
||||||
|
#define CONFIG_SPL_MAX_SIZE (124 * 1024)
|
||||||
|
#define CONFIG_SYS_MONITOR_LEN (1024 * 1024)
|
||||||
|
#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
|
||||||
|
#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x250
|
||||||
|
#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 0
|
||||||
|
|
||||||
|
#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv8/u-boot-spl.lds"
|
||||||
|
#define CONFIG_SPL_STACK 0x013E000
|
||||||
|
#define CONFIG_SPL_BSS_START_ADDR 0x00128000
|
||||||
|
#define CONFIG_SPL_BSS_MAX_SIZE 0x1000 /* 4 KB */
|
||||||
|
#define CONFIG_SYS_SPL_MALLOC_START 0x00120000
|
||||||
|
#define CONFIG_SYS_SPL_MALLOC_SIZE 0x3000 /* 12 KB */
|
||||||
|
#define CONFIG_SERIAL_LPUART_BASE 0x5a060000
|
||||||
|
#define CONFIG_SYS_ICACHE_OFF
|
||||||
|
#define CONFIG_SYS_DCACHE_OFF
|
||||||
|
#define CONFIG_MALLOC_F_ADDR 0x00120000
|
||||||
|
|
||||||
|
#define CONFIG_SPL_RAW_IMAGE_ARM_TRUSTED_FIRMWARE
|
||||||
|
|
||||||
|
#define CONFIG_SPL_ABORT_ON_RAW_IMAGE
|
||||||
|
|
||||||
|
#define CONFIG_OF_EMBED
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CONFIG_REMAKE_ELF
|
#define CONFIG_REMAKE_ELF
|
||||||
|
|
||||||
#define CONFIG_BOARD_EARLY_INIT_F
|
#define CONFIG_BOARD_EARLY_INIT_F
|
||||||
|
|
Loading…
Add table
Reference in a new issue