From fc925fd15f31093251403a58f8f465fd296e23bd Mon Sep 17 00:00:00 2001 From: Hugh Cole-Baker Date: Mon, 9 Sep 2019 21:48:17 +0100 Subject: [PATCH 01/11] configs: rockpro64-rk3399: Enable CONFIG_MISC_INIT_R and ROCKCHIP_EFUSE This enables reading the cpuid from e-fuse, and deriving a static MAC address from it. Without this, the ethernet interface on the rockpro64 can't be used to boot. Signed-off-by: Hugh Cole-Baker Cc: Philipp Tomsich Reviewed-by: Kever Yang --- configs/rockpro64-rk3399_defconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig index 40ebad5abbe..22b8bc503b4 100644 --- a/configs/rockpro64-rk3399_defconfig +++ b/configs/rockpro64-rk3399_defconfig @@ -9,6 +9,7 @@ CONFIG_DEBUG_UART_BASE=0xFF1A0000 CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_DEBUG_UART=y CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb" +CONFIG_MISC_INIT_R=y # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set @@ -28,6 +29,8 @@ CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent CONFIG_ENV_IS_IN_MMC=y CONFIG_ROCKCHIP_GPIO=y CONFIG_SYS_I2C_ROCKCHIP=y +CONFIG_MISC=y +CONFIG_ROCKCHIP_EFUSE=y CONFIG_MMC_DW=y CONFIG_MMC_DW_ROCKCHIP=y CONFIG_MMC_SDHCI=y From bacad567ac59e252d8bd8f3f9a4cd3c8048781e2 Mon Sep 17 00:00:00 2001 From: Jagan Teki Date: Tue, 17 Sep 2019 11:40:36 +0530 Subject: [PATCH 02/11] rockchip: rk3288: vyasa: Drop ROCKCHIP_BROM_HELPER selection ROCKCHIP_BROM_HELPER is selected as if TPL/SPL ROCKCHIP_BACK_TO_BROM has been defined, so drop the explicit enablement for vyasa board. This change is supposed to missed during config move to other locations, and missed to drop the same. Signed-off-by: Jagan Teki Reviewed-by: Kever Yang --- arch/arm/mach-rockchip/rk3288/Kconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm/mach-rockchip/rk3288/Kconfig b/arch/arm/mach-rockchip/rk3288/Kconfig index 87e3d342f62..4ebc0792d55 100644 --- a/arch/arm/mach-rockchip/rk3288/Kconfig +++ b/arch/arm/mach-rockchip/rk3288/Kconfig @@ -104,7 +104,6 @@ config TARGET_POPMETAL_RK3288 config TARGET_VYASA_RK3288 bool "Vyasa-RK3288" select BOARD_LATE_INIT - select ROCKCHIP_BROM_HELPER select TPL help Vyasa is a RK3288-based development board with 2 USB ports, From 78efae613bbade1d366e920ba93a44cdeb06c5f6 Mon Sep 17 00:00:00 2001 From: Jagan Teki Date: Tue, 17 Sep 2019 11:40:37 +0530 Subject: [PATCH 03/11] configs: vyasa-rk3288: Fix SPL_TEXT_BASE The initial Vyasa-rk3288 TPL implementation is to reuse the SPL_TEXT_BASE for TPL and SPL as 0x0 and 0xff704000 respectively. But the below commit implements the reverse way of using TEXT_BASE's like 0xff704000 for TPL and 0x0 for SPL and which indeed update the SPL_TEXT_BASE for vyasa-rk3288 board. "rockchip: Kconfig: enable TPL support for rk3328" (sha1: 3f47db0275e0f1c1e89d8f13f8b4cdc86b1038ca) So, fix by dropping the legacy SPL_TEXT_BASE and it will reassign 0x0 by default based on Kconfig definition. Reported-by: Jagan Teki Signed-off-by: Jagan Teki Reviewed-by: Kever Yang --- configs/vyasa-rk3288_defconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/configs/vyasa-rk3288_defconfig b/configs/vyasa-rk3288_defconfig index c74c1457a7a..89921e6836c 100644 --- a/configs/vyasa-rk3288_defconfig +++ b/configs/vyasa-rk3288_defconfig @@ -15,7 +15,6 @@ CONFIG_SILENT_CONSOLE=y CONFIG_DEFAULT_FDT_FILE="rk3288-vyasa.dtb" # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y -CONFIG_SPL_TEXT_BASE=0xff704000 CONFIG_SPL_STACK_R=y CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000 CONFIG_CMD_GPIO=y From 4f24163efad8a886800a02da0dd787996d7adfa7 Mon Sep 17 00:00:00 2001 From: Jagan Teki Date: Tue, 17 Sep 2019 11:40:38 +0530 Subject: [PATCH 04/11] ram: rk3288: Initialize dram for TPL builds Few of the rk3288 boards like tinker, vyasa are using TPL, SPL bootchain so the dram initialization must needed during TPL stage. So add proper ifconstruct to satisfy both TPL, SPL and SPL-only bootchain boards. This eventually fixing TPL to SPL handoff, otherwise missing dram initilaztion at TPL stage would leads to SPL hang. Signed-off-by: Jagan Teki Reviewed-by: Kever Yang --- drivers/ram/rockchip/sdram_rk3288.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/ram/rockchip/sdram_rk3288.c b/drivers/ram/rockchip/sdram_rk3288.c index 6bb025a851a..57752540073 100644 --- a/drivers/ram/rockchip/sdram_rk3288.c +++ b/drivers/ram/rockchip/sdram_rk3288.c @@ -79,7 +79,8 @@ const int ddrconf_table[] = { #define DQS_GATE_TRAINING_ERROR_RANK0 (1 << 4) #define DQS_GATE_TRAINING_ERROR_RANK1 (2 << 4) -#ifdef CONFIG_SPL_BUILD +#if defined(CONFIG_TPL_BUILD) || \ + (!defined(CONFIG_TPL) && defined(CONFIG_SPL_BUILD)) static void copy_to_reg(u32 *dest, const u32 *src, u32 n) { int i; @@ -1035,7 +1036,8 @@ static int conv_of_platdata(struct udevice *dev) static int rk3288_dmc_probe(struct udevice *dev) { -#ifdef CONFIG_SPL_BUILD +#if defined(CONFIG_TPL_BUILD) || \ + (!defined(CONFIG_TPL) && defined(CONFIG_SPL_BUILD)) struct rk3288_sdram_params *plat = dev_get_platdata(dev); struct udevice *dev_clk; struct regmap *map; @@ -1044,7 +1046,8 @@ static int rk3288_dmc_probe(struct udevice *dev) struct dram_info *priv = dev_get_priv(dev); priv->pmu = syscon_get_first_range(ROCKCHIP_SYSCON_PMU); -#ifdef CONFIG_SPL_BUILD +#if defined(CONFIG_TPL_BUILD) || \ + (!defined(CONFIG_TPL) && defined(CONFIG_SPL_BUILD)) #if CONFIG_IS_ENABLED(OF_PLATDATA) ret = conv_of_platdata(dev); if (ret) @@ -1111,12 +1114,14 @@ U_BOOT_DRIVER(dmc_rk3288) = { .id = UCLASS_RAM, .of_match = rk3288_dmc_ids, .ops = &rk3288_dmc_ops, -#ifdef CONFIG_SPL_BUILD +#if defined(CONFIG_TPL_BUILD) || \ + (!defined(CONFIG_TPL) && defined(CONFIG_SPL_BUILD)) .ofdata_to_platdata = rk3288_dmc_ofdata_to_platdata, #endif .probe = rk3288_dmc_probe, .priv_auto_alloc_size = sizeof(struct dram_info), -#ifdef CONFIG_SPL_BUILD +#if defined(CONFIG_TPL_BUILD) || \ + (!defined(CONFIG_TPL) && defined(CONFIG_SPL_BUILD)) .platdata_auto_alloc_size = sizeof(struct rk3288_sdram_params), #endif }; From 891d4d1fcaf386d6273b61a1d07bd52162e22e38 Mon Sep 17 00:00:00 2001 From: Jagan Teki Date: Tue, 17 Sep 2019 11:40:39 +0530 Subject: [PATCH 05/11] rockchip: spi-boot-order: Trival fix to newline missing newline \n was missed in fdt_path_offset, error loop. Signed-off-by: Jagan Teki Reviewed-by: Kever Yang --- arch/arm/mach-rockchip/spl-boot-order.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/mach-rockchip/spl-boot-order.c b/arch/arm/mach-rockchip/spl-boot-order.c index c19c285c070..fa8e096426b 100644 --- a/arch/arm/mach-rockchip/spl-boot-order.c +++ b/arch/arm/mach-rockchip/spl-boot-order.c @@ -134,7 +134,7 @@ void board_boot_order(u32 *spl_boot_list) /* Try to resolve the config item (or alias) as a path */ node = fdt_path_offset(blob, conf); if (node < 0) { - debug("%s: could not find %s in FDT", __func__, conf); + debug("%s: could not find %s in FDT\n", __func__, conf); continue; } From 87d3fac2e99a8ee7c15abf4f4b378d747e23833c Mon Sep 17 00:00:00 2001 From: Jagan Teki Date: Tue, 17 Sep 2019 11:40:40 +0530 Subject: [PATCH 06/11] configs: tinker: Drop explicit SPL_TEXT SPL_TEXT_BASE is 0x0 by default, based on the kconfig definition move in below commit. "configs: move CONFIG_SPL_TEXT_BASE to Kconfig" (sha1: f89d6133eef2e068f9c33853b6584d7fcbfa9d2e) So, don't define it explicitly. Signed-off-by: Jagan Teki Reviewed-by: Kever Yang --- configs/tinker-rk3288_defconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig index 443f4d88b9a..adab1cba42c 100644 --- a/configs/tinker-rk3288_defconfig +++ b/configs/tinker-rk3288_defconfig @@ -15,7 +15,6 @@ CONFIG_CONSOLE_MUX=y CONFIG_DEFAULT_FDT_FILE="rk3288-tinker.dtb" # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y -CONFIG_SPL_TEXT_BASE=0 CONFIG_CMD_GPIO=y CONFIG_CMD_GPT=y CONFIG_CMD_I2C=y From 4bd143b57dc0cb07b553c989cc16a785642e2d0f Mon Sep 17 00:00:00 2001 From: Jagan Teki Date: Tue, 17 Sep 2019 11:40:41 +0530 Subject: [PATCH 07/11] configs: tinker: Enable SDRAM, SPL stack SPL sets up SDRAM while in its board_init_f() function, it is possible for the stack to move there before board_init_r() is reached. So it is required to reserve the stack for SDRAM, with a proper location and size otherwise any operations during SPL handoff would leads to failure. On, this particular context tinker-rk3288 SPL is failing to launch U-Boot proper on SDRAM due to lack of stack. U-Boot SPL 2019.10-rc3-00297-g5ba8b12543 (Sep 12 2019 - 08:50:36 +0530) Trying to boot from MMC1 spl: mmc init failed with error: -110 SPL: failed to boot from all boot devices ### ERROR ### Please RESET the board ### So, enable SPL_STACK_R_ADDR and it's related-config items for SDRAM, SPL stack to setup properly. Reported-by: Jagan Teki Signed-off-by: Jagan Teki Reviewed-by: Kever Yang --- configs/tinker-rk3288_defconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig index adab1cba42c..359be078acf 100644 --- a/configs/tinker-rk3288_defconfig +++ b/configs/tinker-rk3288_defconfig @@ -4,6 +4,7 @@ CONFIG_SYS_TEXT_BASE=0x01000000 CONFIG_ROCKCHIP_RK3288=y CONFIG_TARGET_TINKER_RK3288=y CONFIG_NR_DRAM_BANKS=1 +CONFIG_SPL_STACK_R_ADDR=0x80000 CONFIG_SPL_SIZE_LIMIT=307200 CONFIG_DEBUG_UART_BASE=0xff690000 CONFIG_DEBUG_UART_CLOCK=24000000 @@ -15,6 +16,8 @@ CONFIG_CONSOLE_MUX=y CONFIG_DEFAULT_FDT_FILE="rk3288-tinker.dtb" # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_SPL_STACK_R=y +CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000 CONFIG_CMD_GPIO=y CONFIG_CMD_GPT=y CONFIG_CMD_I2C=y From f810ea6acbfae0b3e61a1083cfd0665cd92d40b8 Mon Sep 17 00:00:00 2001 From: Michael Trimarchi Date: Tue, 17 Sep 2019 11:40:42 +0530 Subject: [PATCH 08/11] rockchip: rk3288-tinker: Attach missing peripherals at SPL Tinker board needs to mux all the sdmmc gpio and activate the regulator connected to bank 7. Remove all the bank that are not in use and mark them as dm,spl so-that it would initialize at SPL. Signed-off-by: Michael Trimarchi Signed-off-by: Jagan Teki Reviewed-by: Kever Yang --- arch/arm/dts/rk3288-tinker-u-boot.dtsi | 30 ++++++++++++++++++-------- configs/tinker-rk3288_defconfig | 5 +++++ 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/arch/arm/dts/rk3288-tinker-u-boot.dtsi b/arch/arm/dts/rk3288-tinker-u-boot.dtsi index 2efb309d6bd..f7f9d6dc721 100644 --- a/arch/arm/dts/rk3288-tinker-u-boot.dtsi +++ b/arch/arm/dts/rk3288-tinker-u-boot.dtsi @@ -13,20 +13,20 @@ u-boot,dm-pre-reloc; }; +&uart2_xfer { + u-boot,dm-pre-reloc; +}; + &sdmmc { - u-boot,dm-pre-reloc; + u-boot,dm-spl; }; -&emmc { - u-boot,dm-pre-reloc; +&gpio7 { + u-boot,dm-spl; }; -&gpio3 { - u-boot,dm-pre-reloc; -}; - -&gpio8 { - u-boot,dm-pre-reloc; +&vcc_sd { + u-boot,dm-spl; }; &pcfg_pull_none_drv_8ma { @@ -37,10 +37,22 @@ u-boot,dm-spl; }; +&pcfg_pull_none { + u-boot,dm-spl; +}; + +&pcfg_pull_up { + u-boot,dm-spl; +}; + &sdmmc_bus4 { u-boot,dm-spl; }; +&sdmmc_cd { + u-boot,dm-spl; +}; + &sdmmc_clk { u-boot,dm-spl; }; diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig index 359be078acf..afee09819d1 100644 --- a/configs/tinker-rk3288_defconfig +++ b/configs/tinker-rk3288_defconfig @@ -49,7 +49,10 @@ CONFIG_FASTBOOT_FLASH=y CONFIG_FASTBOOT_FLASH_MMC_DEV=0 CONFIG_FASTBOOT_CMD_OEM_FORMAT=y CONFIG_ROCKCHIP_GPIO=y +CONFIG_SPL_GPIO_SUPPORT=y CONFIG_SYS_I2C_ROCKCHIP=y +CONFIG_SPL_I2C_SUPPORT=y +CONFIG_SPL_POWER_SUPPORT=y CONFIG_MISC=y CONFIG_I2C_EEPROM=y CONFIG_MMC_DW=y @@ -64,7 +67,9 @@ CONFIG_SPL_PINCTRL=y CONFIG_DM_PMIC=y CONFIG_PMIC_RK8XX=y CONFIG_DM_REGULATOR_FIXED=y +CONFIG_SPL_DM_REGULATOR=y CONFIG_REGULATOR_RK8XX=y +CONFIG_SPL_DM_REGULATOR_FIXED=y CONFIG_PWM_ROCKCHIP=y CONFIG_RAM=y CONFIG_SPL_RAM=y From 07390d1c0e24edb26817c9cd02772690320a8f8c Mon Sep 17 00:00:00 2001 From: Jagan Teki Date: Tue, 17 Sep 2019 12:59:29 +0530 Subject: [PATCH 09/11] configs: rk3288: Increase bootm length Increase bootm length to 64MB satisfy max gunzip size, even other rockchip and know SoC are following same length check. Reported-by: Michael Trimarchi Signed-off-by: Jagan Teki Reviewed-by: Kever Yang --- include/configs/rk3288_common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h index bcda769af55..910fe588225 100644 --- a/include/configs/rk3288_common.h +++ b/include/configs/rk3288_common.h @@ -9,7 +9,7 @@ #include #include "rockchip-common.h" -#define CONFIG_SYS_BOOTM_LEN (16 << 20) /* 16MB */ +#define CONFIG_SYS_BOOTM_LEN (64 << 20) /* 64MB */ #define CONFIG_SKIP_LOWLEVEL_INIT_ONLY #define CONFIG_SYS_CBSIZE 1024 From 507477ee3df1e5e0b4336d7e3c83640db78af410 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Wed, 18 Sep 2019 17:56:41 +0800 Subject: [PATCH 10/11] rockchip: evb-rk3288: Drop explicit SPL_TEXT SPL_TEXT_BASE is 0x0 by default, based on the kconfig definition move in below commit. "configs: move CONFIG_SPL_TEXT_BASE to Kconfig" (sha1: f89d6133eef2e068f9c33853b6584d7fcbfa9d2e) So, don't define it explicitly. Signed-off-by: Kever Yang --- configs/evb-rk3288_defconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/configs/evb-rk3288_defconfig b/configs/evb-rk3288_defconfig index 405fde0c80e..8be66a600dd 100644 --- a/configs/evb-rk3288_defconfig +++ b/configs/evb-rk3288_defconfig @@ -14,7 +14,6 @@ CONFIG_SILENT_CONSOLE=y CONFIG_DEFAULT_FDT_FILE="rk3288-evb-rk808.dtb" # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y -CONFIG_SPL_TEXT_BASE=0 CONFIG_CMD_GPIO=y CONFIG_CMD_GPT=y CONFIG_CMD_I2C=y From 4a6b74a3c4d5bfe469730d6f79277b03f7687d88 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Wed, 18 Sep 2019 17:56:42 +0800 Subject: [PATCH 11/11] rockchip: config: evb-rk3288: enable SPL_STACK_R We need a new STACK in SDRAM instead of SRAM so that the EMMC controller can work properly. The EMMC/SD controller's master is not able to access SRAM area, it can only access DRAM area. Signed-off-by: Kever Yang --- configs/evb-rk3288_defconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configs/evb-rk3288_defconfig b/configs/evb-rk3288_defconfig index 8be66a600dd..7b0e908f715 100644 --- a/configs/evb-rk3288_defconfig +++ b/configs/evb-rk3288_defconfig @@ -5,6 +5,7 @@ CONFIG_ROCKCHIP_RK3288=y CONFIG_TARGET_EVB_RK3288=y CONFIG_NR_DRAM_BANKS=1 CONFIG_SPL_SIZE_LIMIT=307200 +CONFIG_SPL_STACK_R_ADDR=0x80000 CONFIG_DEBUG_UART_BASE=0xff690000 CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_DEBUG_UART=y @@ -14,6 +15,8 @@ CONFIG_SILENT_CONSOLE=y CONFIG_DEFAULT_FDT_FILE="rk3288-evb-rk808.dtb" # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_SPL_STACK_R=y +CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000 CONFIG_CMD_GPIO=y CONFIG_CMD_GPT=y CONFIG_CMD_I2C=y