From 8b83b53a8d5fa3c2a6ab6a979399b1c285af9bea Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Thu, 26 May 2022 13:46:32 -0400 Subject: [PATCH] imx7: Update CONFIG_SPL_STACK defaults in Kconfig Update the Kconfig entry to have the correct defaults for i.MX7 platforms, and move the existing large comment from imx7_spl.h to doc/imx/common/imx7.txt so that it's not lost. Signed-off-by: Tom Rini --- common/spl/Kconfig | 3 ++- configs/cl-som-imx7_defconfig | 2 -- configs/imx7_cm_defconfig | 2 -- configs/pico-dwarf-imx7d_defconfig | 2 -- configs/pico-hobbit-imx7d_defconfig | 2 -- configs/pico-imx7d_bl33_defconfig | 2 -- configs/pico-imx7d_defconfig | 2 -- configs/pico-nymph-imx7d_defconfig | 2 -- configs/pico-pi-imx7d_defconfig | 2 -- doc/imx/common/imx7.txt | 23 +++++++++++++++++++++++ include/configs/imx7_spl.h | 23 ----------------------- 11 files changed, 25 insertions(+), 40 deletions(-) create mode 100644 doc/imx/common/imx7.txt diff --git a/common/spl/Kconfig b/common/spl/Kconfig index 173c7e0202..8f3985d612 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -360,7 +360,7 @@ config TPL_SYS_MALLOC_SIMPLE config SPL_SHARES_INIT_SP_ADDR bool "SPL and U-Boot use the same initial stack pointer location" depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK - default n if ARCH_SUNXI || ARCH_MX6 + default n if ARCH_SUNXI || ARCH_MX6 || ARCH_MX7 default y help In many cases, we can use the same initial stack pointer address for @@ -371,6 +371,7 @@ config SPL_STACK hex "Initial stack pointer location" depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK depends on !SPL_SHARES_INIT_SP_ADDR + default 0x946bb8 if ARCH_MX7 default 0x93ffb8 if ARCH_MX6 && MX6_OCRAM_256KB default 0x91ffb8 if ARCH_MX6 && !MX6_OCRAM_256KB help diff --git a/configs/cl-som-imx7_defconfig b/configs/cl-som-imx7_defconfig index 67b70d9523..af7fb37afc 100644 --- a/configs/cl-som-imx7_defconfig +++ b/configs/cl-som-imx7_defconfig @@ -28,8 +28,6 @@ CONFIG_BOARD_LATE_INIT=y CONFIG_SPL_MAX_SIZE=0xe000 CONFIG_SPL_BSS_MAX_SIZE=0x100000 CONFIG_SPL_BOARD_INIT=y -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -CONFIG_SPL_STACK=0x946bb8 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x80 CONFIG_SPL_I2C=y CONFIG_SPL_SPI_LOAD=y diff --git a/configs/imx7_cm_defconfig b/configs/imx7_cm_defconfig index 8b05ee2f6d..351d47fe55 100644 --- a/configs/imx7_cm_defconfig +++ b/configs/imx7_cm_defconfig @@ -26,8 +26,6 @@ CONFIG_DEFAULT_FDT_FILE="ask" # CONFIG_BOARD_EARLY_INIT_F is not set CONFIG_SPL_MAX_SIZE=0xe000 CONFIG_SPL_BSS_MAX_SIZE=0x100000 -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -CONFIG_SPL_STACK=0x946bb8 CONFIG_SPL_I2C=y CONFIG_SPL_USB_HOST=y CONFIG_SPL_USB_GADGET=y diff --git a/configs/pico-dwarf-imx7d_defconfig b/configs/pico-dwarf-imx7d_defconfig index e1d0e3438d..00067d2e46 100644 --- a/configs/pico-dwarf-imx7d_defconfig +++ b/configs/pico-dwarf-imx7d_defconfig @@ -27,8 +27,6 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx7d-pico-dwarf.dtb" CONFIG_SPL_MAX_SIZE=0xe000 CONFIG_SPL_BSS_MAX_SIZE=0x100000 -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -CONFIG_SPL_STACK=0x946bb8 CONFIG_SPL_I2C=y CONFIG_SPL_USB_HOST=y CONFIG_SPL_USB_GADGET=y diff --git a/configs/pico-hobbit-imx7d_defconfig b/configs/pico-hobbit-imx7d_defconfig index 4ccbcf90a6..64c2ca4b18 100644 --- a/configs/pico-hobbit-imx7d_defconfig +++ b/configs/pico-hobbit-imx7d_defconfig @@ -27,8 +27,6 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx7d-pico-hobbit.dtb" CONFIG_SPL_MAX_SIZE=0xe000 CONFIG_SPL_BSS_MAX_SIZE=0x100000 -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -CONFIG_SPL_STACK=0x946bb8 CONFIG_SPL_I2C=y CONFIG_SPL_USB_HOST=y CONFIG_SPL_USB_GADGET=y diff --git a/configs/pico-imx7d_bl33_defconfig b/configs/pico-imx7d_bl33_defconfig index 3d342d7818..d13336d054 100644 --- a/configs/pico-imx7d_bl33_defconfig +++ b/configs/pico-imx7d_bl33_defconfig @@ -28,8 +28,6 @@ CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="run distro_bootcmd" CONFIG_SPL_MAX_SIZE=0xe000 CONFIG_SPL_BSS_MAX_SIZE=0x100000 -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -CONFIG_SPL_STACK=0x946bb8 CONFIG_SPL_I2C=y CONFIG_SPL_USB_HOST=y CONFIG_SPL_USB_GADGET=y diff --git a/configs/pico-imx7d_defconfig b/configs/pico-imx7d_defconfig index df57fa1332..a6ee5cebfe 100644 --- a/configs/pico-imx7d_defconfig +++ b/configs/pico-imx7d_defconfig @@ -27,8 +27,6 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" CONFIG_DEFAULT_FDT_FILE="ask" CONFIG_SPL_MAX_SIZE=0xe000 CONFIG_SPL_BSS_MAX_SIZE=0x100000 -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -CONFIG_SPL_STACK=0x946bb8 CONFIG_SPL_I2C=y CONFIG_SPL_USB_HOST=y CONFIG_SPL_USB_GADGET=y diff --git a/configs/pico-nymph-imx7d_defconfig b/configs/pico-nymph-imx7d_defconfig index e1d0e3438d..00067d2e46 100644 --- a/configs/pico-nymph-imx7d_defconfig +++ b/configs/pico-nymph-imx7d_defconfig @@ -27,8 +27,6 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx7d-pico-dwarf.dtb" CONFIG_SPL_MAX_SIZE=0xe000 CONFIG_SPL_BSS_MAX_SIZE=0x100000 -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -CONFIG_SPL_STACK=0x946bb8 CONFIG_SPL_I2C=y CONFIG_SPL_USB_HOST=y CONFIG_SPL_USB_GADGET=y diff --git a/configs/pico-pi-imx7d_defconfig b/configs/pico-pi-imx7d_defconfig index c799968944..b74b2582cb 100644 --- a/configs/pico-pi-imx7d_defconfig +++ b/configs/pico-pi-imx7d_defconfig @@ -27,8 +27,6 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx7d-pico-pi.dtb" CONFIG_SPL_MAX_SIZE=0xe000 CONFIG_SPL_BSS_MAX_SIZE=0x100000 -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -CONFIG_SPL_STACK=0x946bb8 CONFIG_SPL_I2C=y CONFIG_SPL_USB_HOST=y CONFIG_SPL_USB_GADGET=y diff --git a/doc/imx/common/imx7.txt b/doc/imx/common/imx7.txt new file mode 100644 index 0000000000..b9db10341a --- /dev/null +++ b/doc/imx/common/imx7.txt @@ -0,0 +1,23 @@ +U-Boot for Freescale i.MX7 + +SPL Stack size and location notes +--------------------------------- +See figure 6-22 in i.MX 7Dual/Solo Reference manuals: + - IMX7D/S OCRAM free area RAM (OCRAM) is from 0x00910000 to + 0x00946C00. + - Set the stack at the end of the free area section, at 0x00946BB8. + - The BOOT ROM loads what they consider the firmware image + which consists of a 4K header in front of us that contains the IVT, DCD + and some padding. However, the manual also states that the ROM uses the + OCRAM_EPCD and OCRAM_PXP areas for itself. While the SPL is free to use + this range for stack and malloc, the SPL itself must fit below 0x920000, + or the image will be truncated in at least some boot modes like USB SDP. + Thus our max size is really 0x00920000 - 0x00912000. If necessary, + CONFIG_SPL_TEXT_BASE could be moved to 0x00911000 to gain 4KB of space + for the SPL, but 56KB should be more than enough for the SPL. + - Pad SPL to 68KB (4KB header + 56KB max size + 8KB extra padding) + The extra padding could be removed, but this value was used historically + based on an incorrect CONFIG_SPL_MAX_SIZE definition. + This allows to write the SPL/U-Boot combination generated with + u-boot-with-spl.imx directly to a boot media (given that boot media specific + offset is configured properly). diff --git a/include/configs/imx7_spl.h b/include/configs/imx7_spl.h index 019ed5e203..9fe0dbdfe9 100644 --- a/include/configs/imx7_spl.h +++ b/include/configs/imx7_spl.h @@ -11,29 +11,6 @@ #define __IMX7_SPL_CONFIG_H #ifdef CONFIG_SPL -/* - * see figure 6-22 in i.MX 7Dual/Solo Reference manuals: - * - IMX7D/S OCRAM free area RAM (OCRAM) is from 0x00910000 to - * 0x00946C00. - * - Set the stack at the end of the free area section, at 0x00946BB8. - * - The BOOT ROM loads what they consider the firmware image - * which consists of a 4K header in front of us that contains the IVT, DCD - * and some padding. However, the manual also states that the ROM uses the - * OCRAM_EPCD and OCRAM_PXP areas for itself. While the SPL is free to use - * this range for stack and malloc, the SPL itself must fit below 0x920000, - * or the image will be truncated in at least some boot modes like USB SDP. - * Thus our max size is really 0x00920000 - 0x00912000. If necessary, - * CONFIG_SPL_TEXT_BASE could be moved to 0x00911000 to gain 4KB of space - * for the SPL, but 56KB should be more than enough for the SPL. - */ -/* - * Pad SPL to 68KB (4KB header + 56KB max size + 8KB extra padding) - * The extra padding could be removed, but this value was used historically - * based on an incorrect CONFIG_SPL_MAX_SIZE definition. - * This allows to write the SPL/U-Boot combination generated with - * u-boot-with-spl.imx directly to a boot media (given that boot media specific - * offset is configured properly). - */ /* MMC support */ #if defined(CONFIG_SPL_MMC) -- 2.39.5