[U-Boot] [PATCH 0/2] Fix QSPI boot on am43xx_idk

This series fixes bugs which were causing failures in am43xx_idk when booting from QSPI
Faiz Abbas (2): configs: Replace CONFIG_ISW_ENTRY_ADDR with CONFIG_SYS_TEXT_BASE ARM: AM43XX: Call hw_data_init() again to update *ctrl
board/ti/am43xx/board.c | 6 ++++++ configs/am43xx_evm_qspiboot_defconfig | 2 +- include/configs/am43xx_evm.h | 4 ---- 3 files changed, 7 insertions(+), 5 deletions(-)

Since 7e0ed13 ("Convert ARCH_OMAP2PLUS boards' CONFIG_SYS_TEXT_BASE to Kconfig"), a default SYS_TEXT_BASE was set for all ARCH_OMAP2PLUS devices. CONFIG_ISW_ENTRY_ADDR is used to set SYS_TEXT_BASE in qspi boot.
Simplify this by directly assigning SYS_TEXT_BASE in the defconfig.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com --- configs/am43xx_evm_qspiboot_defconfig | 2 +- include/configs/am43xx_evm.h | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/configs/am43xx_evm_qspiboot_defconfig b/configs/am43xx_evm_qspiboot_defconfig index d6a5263..0e6833e 100644 --- a/configs/am43xx_evm_qspiboot_defconfig +++ b/configs/am43xx_evm_qspiboot_defconfig @@ -2,7 +2,7 @@ CONFIG_ARM=y # CONFIG_SYS_THUMB_BUILD is not set CONFIG_ARCH_OMAP2PLUS=y CONFIG_AM43XX=y -CONFIG_ISW_ENTRY_ADDR=0x30000000 +CONFIG_SYS_TEXT_BASE=0x30000000 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,QSPI,QSPI_BOOT" CONFIG_QSPI_BOOT=y CONFIG_SYS_CONSOLE_INFO_QUIET=y diff --git a/include/configs/am43xx_evm.h b/include/configs/am43xx_evm.h index 302181b..6e2cf7b 100644 --- a/include/configs/am43xx_evm.h +++ b/include/configs/am43xx_evm.h @@ -116,9 +116,6 @@ #endif
#ifdef CONFIG_QSPI_BOOT -#ifndef CONFIG_SYS_TEXT_BASE -#define CONFIG_SYS_TEXT_BASE CONFIG_ISW_ENTRY_ADDR -#endif #define CONFIG_SYS_REDUNDAND_ENVIRONMENT #define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED #define CONFIG_ENV_SECT_SIZE (64 << 10) /* 64 KB sectors */

On Fri, Jan 19, 2018 at 03:32:47PM +0530, Faiz Abbas wrote:
Since 7e0ed13 ("Convert ARCH_OMAP2PLUS boards' CONFIG_SYS_TEXT_BASE to Kconfig"), a default SYS_TEXT_BASE was set for all ARCH_OMAP2PLUS devices. CONFIG_ISW_ENTRY_ADDR is used to set SYS_TEXT_BASE in qspi boot.
Simplify this by directly assigning SYS_TEXT_BASE in the defconfig.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com
Applied to u-boot/master, thanks!

hw_data_init() is called before relocation to initialise hardware data. Since ctrl is initialized to OMAP_SRAM_SCRATCH_SYS_CTRL in arch/arm/mach-omap2/am33xx/hw_data.c, the pointer *ctrl will not be updated during relocation and will hold a stale value.
Therefore call hw_data_init() again after relocation to reinitialize *ctrl.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com --- board/ti/am43xx/board.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c index 2c417e7..16fa818 100644 --- a/board/ti/am43xx/board.c +++ b/board/ti/am43xx/board.c @@ -580,6 +580,11 @@ int board_init(void) gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; gpmc_init();
+ /* + * Call this to initialize *ctrl again + */ + hw_data_init(); + /* Clear all important bits for DSS errata that may need to be tweaked*/ mreqprio_0 = readl(&cdev->mreqprio_0) & MREQPRIO_0_SAB_INIT1_MASK & MREQPRIO_0_SAB_INIT0_MASK;

On Fri, Jan 19, 2018 at 03:32:48PM +0530, Faiz Abbas wrote:
hw_data_init() is called before relocation to initialise hardware data. Since ctrl is initialized to OMAP_SRAM_SCRATCH_SYS_CTRL in arch/arm/mach-omap2/am33xx/hw_data.c, the pointer *ctrl will not be updated during relocation and will hold a stale value.
Therefore call hw_data_init() again after relocation to reinitialize *ctrl.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com
Applied to u-boot/master, thanks!
participants (2)
-
Faiz Abbas
-
Tom Rini