mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 07:04:28 +00:00
imx: imxrt1050-evk: Add support for SPI flash booting
Add support for booting the imxrt1050-evk from spi. Add imximage config and the ability for SPL to boot from NOR. Enable binman in Kconfig and device tree for imxrt* as it is used to prepend fspi_header.bin to SPL and u-boot.img. Signed-off-by: Jesse Taube <Mr.Bossman075@gmail.com>
This commit is contained in:
parent
bb9d6c7f4f
commit
7079eeb72f
11 changed files with 207 additions and 6 deletions
|
@ -5,6 +5,10 @@
|
|||
*/
|
||||
|
||||
/ {
|
||||
binman: binman {
|
||||
multiple-images;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootph-pre-ram;
|
||||
};
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
#include "imxrt1050-pinfunc.h"
|
||||
|
||||
/ {
|
||||
binman: binman {
|
||||
multiple-images;
|
||||
};
|
||||
|
||||
aliases {
|
||||
display0 = &lcdif;
|
||||
usbphy0 = &usbphy1;
|
||||
|
@ -113,6 +117,33 @@
|
|||
};
|
||||
};
|
||||
|
||||
&binman {
|
||||
#ifdef CONFIG_FSPI_CONF_HEADER
|
||||
imx-boot {
|
||||
filename = "flash.bin";
|
||||
pad-byte = <0x00>;
|
||||
|
||||
fspi_conf_block {
|
||||
filename = CONFIG_FSPI_CONF_FILE;
|
||||
type = "blob-ext";
|
||||
offset = <0x0>;
|
||||
};
|
||||
|
||||
spl {
|
||||
filename = "SPL";
|
||||
offset = <0x1000>;
|
||||
type = "blob-ext";
|
||||
};
|
||||
|
||||
binman_uboot: uboot {
|
||||
filename = "u-boot.img";
|
||||
offset = <0x10000>;
|
||||
type = "blob-ext";
|
||||
};
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
&osc {
|
||||
bootph-pre-ram;
|
||||
};
|
||||
|
|
|
@ -6,6 +6,10 @@
|
|||
*/
|
||||
|
||||
/ {
|
||||
binman: binman {
|
||||
multiple-images;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootph-pre-ram;
|
||||
};
|
||||
|
|
|
@ -2,6 +2,7 @@ if ARCH_IMXRT
|
|||
|
||||
config IMXRT
|
||||
bool
|
||||
select BINMAN
|
||||
select SYS_FSL_ERRATUM_ESDHC135
|
||||
|
||||
config IMXRT1020
|
||||
|
|
|
@ -4,3 +4,4 @@ S: Maintained
|
|||
F: board/freescale/imxrt1050-evk
|
||||
F: include/configs/imxrt1050-evk.h
|
||||
F: configs/imxrt1050-evk_defconfig
|
||||
F: configs/imxrt1050-evk_fspi_defconfig
|
||||
|
|
41
board/freescale/imxrt1050-evk/imximage-nor.cfg
Normal file
41
board/freescale/imxrt1050-evk/imximage-nor.cfg
Normal file
|
@ -0,0 +1,41 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Copyright (C) 2024
|
||||
* Author(s): Jesse Taube <Mr.Bossman075@gmail.com>
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
/* image version */
|
||||
|
||||
IMAGE_VERSION 2
|
||||
|
||||
/*
|
||||
* Boot Device : one of
|
||||
* spi/sd/nand/onenand, qspi/nor
|
||||
*/
|
||||
|
||||
BOOT_FROM nor
|
||||
|
||||
/*
|
||||
* Device Configuration Data (DCD)
|
||||
*
|
||||
* Each entry must have the format:
|
||||
* Addr-type Address Value
|
||||
*
|
||||
* where:
|
||||
* Addr-type register length (1,2 or 4 bytes)
|
||||
* Address absolute address of the register
|
||||
* value value to be stored in the register
|
||||
*/
|
||||
|
||||
/*
|
||||
* 0x400AC044 is used to configure the flexram.
|
||||
* Unfortunately setting all to OCRAM only works for MMC
|
||||
* and setting all to DTCM only works for FLEXSPI NOR.
|
||||
* This configuration fortunately works for both SPI and MMC.
|
||||
*/
|
||||
/* Set first two banks FlexRAM as OCRAM(01b) and the rest to DTCM(10b) */
|
||||
DATA 4 0x400AC044 0x55aaaaaa
|
||||
/* Use FLEXRAM_BANK_CFG to config FlexRAM */
|
||||
SET_BIT 4 0x400AC040 0x4
|
|
@ -29,7 +29,13 @@ BOOT_FROM sd
|
|||
* value value to be stored in the register
|
||||
*/
|
||||
|
||||
/* Set all FlexRAM as OCRAM(01b) */
|
||||
DATA 4 0x400AC044 0x55555555
|
||||
/*
|
||||
* 0x400AC044 is used to configure the flexram.
|
||||
* Unfortunately setting all to OCRAM only works for MMC
|
||||
* and setting all to DTCM only works for FLEXSPI NOR.
|
||||
* This configuration fortunately works for both SPI and MMC.
|
||||
*/
|
||||
/* Set first two banks FlexRAM as OCRAM(01b) and the rest to DTCM(10b) */
|
||||
DATA 4 0x400AC044 0x55aaaaaa
|
||||
/* Use FLEXRAM_BANK_CFG to config FlexRAM */
|
||||
SET_BIT 4 0x400AC040 0x4
|
||||
|
|
|
@ -68,7 +68,12 @@ void spl_board_init(void)
|
|||
|
||||
u32 spl_boot_device(void)
|
||||
{
|
||||
return BOOT_DEVICE_MMC1;
|
||||
/* There is no way to find the boot device so look if there is a valid IVT in RAM for MMC */
|
||||
u32 nor_ivt = *(u32 *)(CONFIG_SYS_LOAD_ADDR - 0xC00);
|
||||
|
||||
if (nor_ivt == 0x402000d1)
|
||||
return BOOT_DEVICE_MMC1;
|
||||
return BOOT_DEVICE_NOR;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -10,21 +10,22 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
|||
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
CONFIG_NR_DRAM_BANKS=1
|
||||
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
|
||||
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x20280000
|
||||
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x20020000
|
||||
CONFIG_ENV_OFFSET=0x80000
|
||||
CONFIG_DM_GPIO=y
|
||||
CONFIG_DEFAULT_DEVICE_TREE="imxrt1050-evk"
|
||||
CONFIG_SPL_TEXT_BASE=0x20209000
|
||||
CONFIG_SPL_TEXT_BASE=0x20002000
|
||||
CONFIG_TARGET_IMXRT1050_EVK=y
|
||||
CONFIG_SPL_MMC=y
|
||||
CONFIG_SPL_SERIAL=y
|
||||
CONFIG_SPL_SIZE_LIMIT=0x20000
|
||||
CONFIG_SPL=y
|
||||
CONFIG_SYS_LOAD_ADDR=0x20209000
|
||||
CONFIG_SYS_LOAD_ADDR=0x20002000
|
||||
CONFIG_HAVE_SYS_UBOOT_START=y
|
||||
CONFIG_SYS_UBOOT_START=0x800023FD
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_SD_BOOT=y
|
||||
CONFIG_SPI_BOOT=y
|
||||
# CONFIG_USE_BOOTCOMMAND is not set
|
||||
CONFIG_SYS_CBSIZE=256
|
||||
CONFIG_SYS_PBSIZE=276
|
||||
|
@ -36,6 +37,7 @@ CONFIG_SPL_BOARD_INIT=y
|
|||
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x100
|
||||
CONFIG_SPL_NOR_SUPPORT=y
|
||||
# CONFIG_BOOTM_NETBSD is not set
|
||||
# CONFIG_BOOTM_PLAN9 is not set
|
||||
# CONFIG_BOOTM_RTEMS is not set
|
||||
|
|
100
configs/imxrt1050-evk_fspi_defconfig
Normal file
100
configs/imxrt1050-evk_fspi_defconfig
Normal file
|
@ -0,0 +1,100 @@
|
|||
CONFIG_ARM=y
|
||||
CONFIG_SYS_DCACHE_OFF=y
|
||||
# CONFIG_SPL_SYS_DCACHE_OFF is not set
|
||||
CONFIG_ARCH_IMXRT=y
|
||||
CONFIG_TEXT_BASE=0x80002000
|
||||
CONFIG_SYS_MALLOC_LEN=0x40000
|
||||
CONFIG_SYS_MALLOC_F_LEN=0x8000
|
||||
CONFIG_SPL_GPIO=y
|
||||
CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
CONFIG_NR_DRAM_BANKS=1
|
||||
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
|
||||
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x20020000
|
||||
CONFIG_ENV_OFFSET=0x80000
|
||||
CONFIG_IMX_CONFIG="board/freescale/imxrt1050-evk/imximage-nor.cfg"
|
||||
CONFIG_DM_GPIO=y
|
||||
CONFIG_DEFAULT_DEVICE_TREE="imxrt1050-evk"
|
||||
CONFIG_SPL_TEXT_BASE=0x20002000
|
||||
CONFIG_TARGET_IMXRT1050_EVK=y
|
||||
CONFIG_SPL_MMC=y
|
||||
CONFIG_SPL_SERIAL=y
|
||||
CONFIG_SPL_SIZE_LIMIT=0x20000
|
||||
CONFIG_SPL=y
|
||||
CONFIG_SYS_LOAD_ADDR=0x20002000
|
||||
CONFIG_HAVE_SYS_UBOOT_START=y
|
||||
CONFIG_SYS_UBOOT_START=0x800023FD
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_SD_BOOT=y
|
||||
CONFIG_SPI_BOOT=y
|
||||
# CONFIG_USE_BOOTCOMMAND is not set
|
||||
CONFIG_SYS_CBSIZE=256
|
||||
CONFIG_SYS_PBSIZE=276
|
||||
CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_SPL_NO_BSS_LIMIT=y
|
||||
CONFIG_SPL_BOARD_INIT=y
|
||||
# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
|
||||
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x100
|
||||
CONFIG_SPL_NOR_SUPPORT=y
|
||||
# CONFIG_BOOTM_NETBSD is not set
|
||||
# CONFIG_BOOTM_PLAN9 is not set
|
||||
# CONFIG_BOOTM_RTEMS is not set
|
||||
# CONFIG_BOOTM_VXWORKS is not set
|
||||
CONFIG_CMD_USB=y
|
||||
# CONFIG_CMD_MII is not set
|
||||
# CONFIG_SPL_DOS_PARTITION is not set
|
||||
# CONFIG_ISO_PARTITION is not set
|
||||
# CONFIG_EFI_PARTITION is not set
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_SPL_OF_CONTROL=y
|
||||
CONFIG_ENV_IS_NOWHERE=y
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
|
||||
CONFIG_TFTP_BLOCKSIZE=512
|
||||
CONFIG_SPL_DM=y
|
||||
CONFIG_SPL_DM_SEQ_ALIAS=y
|
||||
# CONFIG_OF_TRANSLATE is not set
|
||||
CONFIG_SPL_CLK_IMXRT1050=y
|
||||
CONFIG_CLK_IMXRT1050=y
|
||||
# CONFIG_SPL_DM_GPIO is not set
|
||||
CONFIG_MXC_GPIO=y
|
||||
# CONFIG_INPUT is not set
|
||||
CONFIG_FSL_USDHC=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_SPL_PINCTRL=y
|
||||
CONFIG_PINCTRL_IMXRT=y
|
||||
CONFIG_RAM=y
|
||||
CONFIG_SPL_RAM=y
|
||||
CONFIG_IMXRT_SDRAM=y
|
||||
CONFIG_FSL_LPUART=y
|
||||
CONFIG_TIMER=y
|
||||
CONFIG_SPL_TIMER=y
|
||||
CONFIG_IMX_GPT_TIMER=y
|
||||
CONFIG_USB=y
|
||||
# CONFIG_SPL_DM_USB is not set
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_BACKLIGHT_GPIO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_VIDEO_MXS=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
CONFIG_BMP_16BPP=y
|
||||
CONFIG_SHA1=y
|
||||
CONFIG_SHA256=y
|
||||
CONFIG_HEXDUMP=y
|
||||
CONFIG_FSPI_CONF_HEADER=y
|
||||
CONFIG_FSPI_CONF_FILE="fspi_header.bin"
|
||||
CONFIG_READ_CLK_SOURCE=0x03
|
||||
CONFIG_DEVICE_TYPE=0x00
|
||||
CONFIG_FLASH_PAD_TYPE=0x08
|
||||
CONFIG_SERIAL_CLK_FREQUENCY=0x07
|
||||
CONFIG_FSPI_COL_ADDR_W=0x03
|
||||
CONFIG_FSPI_CONTROLLER_MISC=0x00000059
|
||||
CONFIG_FSPI_FLASH_A1_SIZE=0x04000000
|
||||
CONFIG_LUT_SEQUENCE="0xa0, 0x87, 0x18, 0x8b, 0x10, 0x8f, 0x06, 0xb3, 0x04, 0xa7"
|
|
@ -25,4 +25,10 @@
|
|||
"stderr=serial,vidconsole\0"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Address of U-Boot for SPI NOR boot
|
||||
*/
|
||||
|
||||
#define CFG_SYS_UBOOT_BASE 0x60010000
|
||||
|
||||
#endif /* __IMXRT1050_EVK_H */
|
||||
|
|
Loading…
Reference in a new issue