From patchwork Mon Jan 27 20:01:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240333 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:45 -0700 Subject: [PATCH v5 01/12] arm: mvebu: fix SerDes table alignment In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-2-mrjoel@lixil.net> Tested on Solidrun ClearFog Base. Table alignment was: | Lane # | Speed | Type | -------------------------------- | 0 | 3 | SATA0 | | 1 | 0 | SGMII1 | | 2 | 3 | SATA1 | | 3 | 5 | USB3 HOST1 | | 4 | 5 | USB3 HOST0 | | 5 | 4 | SGMII2 | -------------------------------- After the change, it's correctly aligned as: | Lane # | Speed | Type | -------------------------------- | 0 | 3 | SATA0 | | 1 | 0 | SGMII1 | | 2 | 5 | PCIe1 | | 3 | 5 | USB3 HOST1 | | 4 | 5 | PCIe2 | | 5 | 0 | SGMII2 | -------------------------------- Signed-off-by: Joel Johnson Reviewed-by: Stefan Roese --- v2 changes - none v3 changes - none v4 changes - none v5 changes - none --- arch/arm/mach-mvebu/serdes/a38x/high_speed_env_spec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-mvebu/serdes/a38x/high_speed_env_spec.c b/arch/arm/mach-mvebu/serdes/a38x/high_speed_env_spec.c index 33e70569bc..66409a50c0 100644 --- a/arch/arm/mach-mvebu/serdes/a38x/high_speed_env_spec.c +++ b/arch/arm/mach-mvebu/serdes/a38x/high_speed_env_spec.c @@ -1366,16 +1366,16 @@ static void print_topology_details(const struct serdes_map *serdes_map, DEBUG_INIT_S("board SerDes lanes topology details:\n"); - DEBUG_INIT_S(" | Lane # | Speed | Type |\n"); + DEBUG_INIT_S(" | Lane # | Speed | Type |\n"); DEBUG_INIT_S(" --------------------------------\n"); for (lane_num = 0; lane_num < count; lane_num++) { if (serdes_map[lane_num].serdes_type == DEFAULT_SERDES) continue; DEBUG_INIT_S(" | "); DEBUG_INIT_D(hws_get_physical_serdes_num(lane_num), 1); - DEBUG_INIT_S(" | "); + DEBUG_INIT_S(" | "); DEBUG_INIT_D(serdes_map[lane_num].serdes_speed, 2); - DEBUG_INIT_S(" | "); + DEBUG_INIT_S(" | "); DEBUG_INIT_S((char *) serdes_type_to_string[serdes_map[lane_num]. serdes_type]); From patchwork Mon Jan 27 20:01:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240332 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:46 -0700 Subject: [PATCH v5 02/12] arm: mvebu: solidrun: remove hardcoded DTS MAC address In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-3-mrjoel@lixil.net> Using a consistent hardcoded MAC address from the DTS file causes issues when using multiple devices on the same network segment. Instead rely on environment configuration or random generation. Signed-off-by: Joel Johnson Reviewed-by: Stefan Roese --- v2 changes: - none v3 changes: - none v4 changes: - none v5 changes: - none --- arch/arm/dts/armada-38x-solidrun-microsom.dtsi | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm/dts/armada-38x-solidrun-microsom.dtsi b/arch/arm/dts/armada-38x-solidrun-microsom.dtsi index a322a28c21..9bbeafc53b 100644 --- a/arch/arm/dts/armada-38x-solidrun-microsom.dtsi +++ b/arch/arm/dts/armada-38x-solidrun-microsom.dtsi @@ -39,7 +39,6 @@ ð0 { /* ethernet at 70000 */ - mac-address = [00 50 43 02 02 01]; pinctrl-0 = <&ge0_rgmii_pins>; pinctrl-names = "default"; phy = <&phy_dedicated>; From patchwork Mon Jan 27 20:01:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240330 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:47 -0700 Subject: [PATCH v5 03/12] arm: mvebu: clearfog: use Pro name by default In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-4-mrjoel@lixil.net> Make the board version printed indicate the Pro variant default. Also adjust static name casing to match what is expected for EEPROM product name to share string constants. Reviewed-by: Stefan Roese --- v4 changes: - newly added v5 changes: - none Signed-off-by: Joel Johnson --- board/solidrun/clearfog/clearfog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c index e268ef55a2..9b31902c70 100644 --- a/board/solidrun/clearfog/clearfog.c +++ b/board/solidrun/clearfog/clearfog.c @@ -170,7 +170,7 @@ int board_init(void) int checkboard(void) { - char *board = "ClearFog"; + char *board = "Clearfog Pro"; cf_read_tlv_data(); if (strlen(cf_tlv_data.tlv_product_name[0]) > 0) From patchwork Mon Jan 27 20:01:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240329 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:48 -0700 Subject: [PATCH v5 04/12] arm: mvebu: clearfog: initial ClearFog Base variant In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-5-mrjoel@lixil.net> Add a unique entry for ClearFog Base variant, reflected in the board name and adjusted SerDes topology. Signed-off-by: Joel Johnson --- v2 changes: - reworked based on Baruch's run-time TLV EEPROM detection series v3 changes: - rebased on mvebu merged run-time TLV EEPROM detection series - minor update to help test regarding runtime detection failures v4 changes: - use runtime static config adjust instead of #ifdef in cases where hardware EEPROM detection fails or is disabled in build SPL size change for defconfig increases 36 bytes (122893 to 122929) SPL size change for defconfig+Base increases 60 bytes (122893 to 122953) - add placeholder support for EEPROM based Clearfog Pro, based on initial name confirmation from Baruch. I wanted to include the check at least in the patch for review to indicate expected usage to ensure that a Clearfog Pro EEPROM device boots correctly even if the image is built with Base static configuration. If there are other prerelease concerns and this should be added separately later, I'd be fine with that too. - Note that this approach *does not* currently provide any mechanism for EEPROM detected boards to have their SFP speed changed or switch between PCIE/SATA signalling. I'm assuming that will be done based on hardware detection, but confirmation/acceptance in review would be appreciated so it can be revisited if needed. v5 changes: - only make Base variant adjustment based on runtime configuration --- arch/arm/mach-mvebu/Kconfig | 2 ++ board/solidrun/clearfog/Kconfig | 18 ++++++++++++++++++ board/solidrun/clearfog/clearfog.c | 29 +++++++++++++++++++++++------ 3 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 board/solidrun/clearfog/Kconfig diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig index bc5eaa5a76..161dee937f 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig @@ -280,4 +280,6 @@ config SECURED_MODE_CSK_INDEX default 0 depends on SECURED_MODE_IMAGE +source "board/solidrun/clearfog/Kconfig" + endif diff --git a/board/solidrun/clearfog/Kconfig b/board/solidrun/clearfog/Kconfig new file mode 100644 index 0000000000..936d5918f8 --- /dev/null +++ b/board/solidrun/clearfog/Kconfig @@ -0,0 +1,18 @@ +menu "ClearFog configuration" + depends on TARGET_CLEARFOG + +config TARGET_CLEARFOG_BASE + bool "Use ClearFog Base static configuration" + help + Use the ClearFog Base as the static configuration instead of the + default which uses the ClearFog Pro. + + Runtime board detection is always attempted and used if available. The + static configuration is used as a fallback in cases where runtime + detection is disabled, is not available in hardware, or otherwise fails. + + Only newer revisions of the ClearFog product line support runtime + detection via additional EEPROM hardware. This option enables selecting + the Base variant for older hardware revisions. + +endmenu diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c index 9b31902c70..c873d00905 100644 --- a/board/solidrun/clearfog/clearfog.c +++ b/board/solidrun/clearfog/clearfog.c @@ -42,6 +42,7 @@ static void cf_read_tlv_data(void) read_tlv_data(&cf_tlv_data); } +/* The starting board_serdes_map reflects original Clearfog Pro usage */ static struct serdes_map board_serdes_map[] = { {SATA0, SERDES_SPEED_3_GBPS, SERDES_DEFAULT_MODE, 0, 0}, {SGMII1, SERDES_SPEED_1_25_GBPS, SERDES_DEFAULT_MODE, 0, 0}, @@ -51,6 +52,13 @@ static struct serdes_map board_serdes_map[] = { {SGMII2, SERDES_SPEED_1_25_GBPS, SERDES_DEFAULT_MODE, 0, 0}, }; +void config_cfbase_serdes_map(void) +{ + board_serdes_map[4].serdes_type = USB3_HOST0; + board_serdes_map[4].serdes_speed = SERDES_SPEED_5_GBPS; + board_serdes_map[4].serdes_mode = SERDES_DEFAULT_MODE; +} + int hws_board_topology_load(struct serdes_map **serdes_map_array, u8 *count) { cf_read_tlv_data(); @@ -59,12 +67,17 @@ int hws_board_topology_load(struct serdes_map **serdes_map_array, u8 *count) board_serdes_map[0].serdes_type = PEX0; board_serdes_map[0].serdes_speed = SERDES_SPEED_5_GBPS; board_serdes_map[0].serdes_mode = PEX_ROOT_COMPLEX_X1; - } - - if (sr_product_is(&cf_tlv_data, "Clearfog Base")) { - board_serdes_map[4].serdes_type = USB3_HOST0; - board_serdes_map[4].serdes_speed = SERDES_SPEED_5_GBPS; - board_serdes_map[4].serdes_mode = SERDES_DEFAULT_MODE; + } else if (sr_product_is(&cf_tlv_data, "Clearfog Pro")) { + /* handle recognized product as noop, no adjustment required */ + } else if (sr_product_is(&cf_tlv_data, "Clearfog Base")) { + config_cfbase_serdes_map(); + } else if (IS_ENABLED(CONFIG_TARGET_CLEARFOG_BASE)) { + /* + * Fallback to static default. Runtime detection failed, + * hardware support is not present, EEPROM is corrupt, + * or an unrecognized product name is present. + */ + config_cfbase_serdes_map(); } *serdes_map_array = board_serdes_map; @@ -171,6 +184,8 @@ int board_init(void) int checkboard(void) { char *board = "Clearfog Pro"; + if (IS_ENABLED(CONFIG_TARGET_CLEARFOG_BASE)) + board = "Clearfog Base"; cf_read_tlv_data(); if (strlen(cf_tlv_data.tlv_product_name[0]) > 0) @@ -200,6 +215,8 @@ int board_late_init(void) env_set("fdtfile", "armada-385-clearfog-gtr-s4.dtb"); else if (sr_product_is(&cf_tlv_data, "Clearfog GTR L8")) env_set("fdtfile", "armada-385-clearfog-gtr-l8.dtb"); + else if (IS_ENABLED(CONFIG_TARGET_CLEARFOG_BASE)) + env_set("fdtfile", "armada-388-clearfog-base.dtb"); return 0; } From patchwork Mon Jan 27 20:01:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240334 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:49 -0700 Subject: [PATCH v5 05/12] arm: mvebu: clearfog: Add option for 2.5 Gbps SFP In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-6-mrjoel@lixil.net> While newer Linux kernels provide autoconfiguration of SFP, provide an option for setting in U-Boot Kconfig for use prior to booting. Signed-off-by: Joel Johnson Reviewed-by: Stefan Roese --- v2 changes: - fixed help indentation v3 changes: - none v4 changes: - adjust static SerDes configuration at runtime instead of #ifdef v5 changes: - make independent of runtime detection --- board/solidrun/clearfog/Kconfig | 7 +++++++ board/solidrun/clearfog/clearfog.c | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/board/solidrun/clearfog/Kconfig b/board/solidrun/clearfog/Kconfig index 936d5918f8..c910e17093 100644 --- a/board/solidrun/clearfog/Kconfig +++ b/board/solidrun/clearfog/Kconfig @@ -15,4 +15,11 @@ config TARGET_CLEARFOG_BASE detection via additional EEPROM hardware. This option enables selecting the Base variant for older hardware revisions. +config CLEARFOG_SFP_25GB + bool "Enable 2.5 Gbps mode for SFP" + help + Set the SFP module connection to support 2.5 Gbps transfer speed for the + SGMII connection (requires a supporting SFP). By default, transfer speed + of 1.25 Gbps is used, suitable for a more common 1 Gbps SFP module. + endmenu diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c index c873d00905..064ce4e520 100644 --- a/board/solidrun/clearfog/clearfog.c +++ b/board/solidrun/clearfog/clearfog.c @@ -63,6 +63,11 @@ int hws_board_topology_load(struct serdes_map **serdes_map_array, u8 *count) { cf_read_tlv_data(); + /* Apply build configuration options before runtime configuration */ + if (IS_ENABLED(CONFIG_CLEARFOG_SFP_25GB)) + board_serdes_map[5].serdes_speed = SERDES_SPEED_3_125_GBPS; + + /* Apply runtime detection changes */ if (sr_product_is(&cf_tlv_data, "Clearfog GTR")) { board_serdes_map[0].serdes_type = PEX0; board_serdes_map[0].serdes_speed = SERDES_SPEED_5_GBPS; From patchwork Mon Jan 27 20:01:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240331 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:50 -0700 Subject: [PATCH v5 06/12] arm: mvebu: clearfog: Add SATA mode flags In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-7-mrjoel@lixil.net> The mPCIe slots on ClearFog Pro and ClearFog Base may be alternately configured for SATA usage. Signed-off-by: Joel Johnson Reviewed-by: Stefan Roese --- v2 changes: - fixed help indentation v3 changes: - none v4 changes: - adjust static SerDes configuration at runtime instead of #ifdef - add setting of swap_rx for SATA (as yet untested on hardware) v5 changes: - make independent of runtime detection --- board/solidrun/clearfog/Kconfig | 17 +++++++++++++++++ board/solidrun/clearfog/clearfog.c | 15 +++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/board/solidrun/clearfog/Kconfig b/board/solidrun/clearfog/Kconfig index c910e17093..44224d903d 100644 --- a/board/solidrun/clearfog/Kconfig +++ b/board/solidrun/clearfog/Kconfig @@ -15,6 +15,23 @@ config TARGET_CLEARFOG_BASE detection via additional EEPROM hardware. This option enables selecting the Base variant for older hardware revisions. +config CLEARFOG_CON3_SATA + bool "Use CON3 slot in SATA mode" + help + Use the CON3 port with SATA protocol instead of the default PCIe. + The ClearFog port allows usage of either mSATA or miniPCIe + modules, but the desired protocol must be configured at build + time since it affects the SerDes topology layout. + +config CLEARFOG_CON2_SATA + bool "Use CON2 slot in SATA mode" + depends on !TARGET_CLEARFOG_BASE + help + Use the CON2 port with SATA protocol instead of the default PCIe. + The ClearFog port allows usage of either mSATA or miniPCIe + modules, but the desired protocol must be configured at build + time since it affects the SerDes topology layout. + config CLEARFOG_SFP_25GB bool "Enable 2.5 Gbps mode for SFP" help diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c index 064ce4e520..f650e2b40e 100644 --- a/board/solidrun/clearfog/clearfog.c +++ b/board/solidrun/clearfog/clearfog.c @@ -67,6 +67,21 @@ int hws_board_topology_load(struct serdes_map **serdes_map_array, u8 *count) if (IS_ENABLED(CONFIG_CLEARFOG_SFP_25GB)) board_serdes_map[5].serdes_speed = SERDES_SPEED_3_125_GBPS; + if (IS_ENABLED(CONFIG_CLEARFOG_CON2_SATA) && + !IS_ENABLED(CONFIG_TARGET_CLEARFOG_BASE)) { + board_serdes_map[4].serdes_type = SATA2; + board_serdes_map[4].serdes_speed = SERDES_SPEED_3_GBPS; + board_serdes_map[4].serdes_mode = SERDES_DEFAULT_MODE; + board_serdes_map[4].swap_rx = 1; + } + + if (IS_ENABLED(CONFIG_CLEARFOG_CON3_SATA)) { + board_serdes_map[2].serdes_type = SATA1; + board_serdes_map[2].serdes_speed = SERDES_SPEED_3_GBPS; + board_serdes_map[2].serdes_mode = SERDES_DEFAULT_MODE; + board_serdes_map[2].swap_rx = 1; + } + /* Apply runtime detection changes */ if (sr_product_is(&cf_tlv_data, "Clearfog GTR")) { board_serdes_map[0].serdes_type = PEX0; From patchwork Mon Jan 27 20:01:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240336 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:51 -0700 Subject: [PATCH v5 07/12] arm: mvebu: clearfog: Unify DT selection paths In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-8-mrjoel@lixil.net> Unify the location of DT selection into board_late_init instead of split between detection and static configuration paths. Reviewed-by: Stefan Roese --- v2 changes - newly added in V2 series based on run-time rebasing v3 changes - none v4 changes - separate change to explicit pro DT into separate commit v5 changes - none Signed-off-by: Joel Johnson --- board/solidrun/clearfog/clearfog.c | 2 ++ include/configs/clearfog.h | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c index f650e2b40e..4170fd4775 100644 --- a/board/solidrun/clearfog/clearfog.c +++ b/board/solidrun/clearfog/clearfog.c @@ -237,6 +237,8 @@ int board_late_init(void) env_set("fdtfile", "armada-385-clearfog-gtr-l8.dtb"); else if (IS_ENABLED(CONFIG_TARGET_CLEARFOG_BASE)) env_set("fdtfile", "armada-388-clearfog-base.dtb"); + else + env_set("fdtfile", "armada-388-clearfog.dtb"); return 0; } diff --git a/include/configs/clearfog.h b/include/configs/clearfog.h index 633187d86f..6ca0474461 100644 --- a/include/configs/clearfog.h +++ b/include/configs/clearfog.h @@ -134,7 +134,6 @@ #define CONFIG_EXTRA_ENV_SETTINGS \ RELOCATION_LIMITS_ENV_SETTINGS \ LOAD_ADDRESS_ENV_SETTINGS \ - "fdtfile=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \ "console=ttyS0,115200\0" \ BOOTENV From patchwork Mon Jan 27 20:01:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240335 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:52 -0700 Subject: [PATCH v5 08/12] arm: mvebu: clearfog: add SPI offsets In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-9-mrjoel@lixil.net> Add reasonable default SPI offsets and ENV size when configured to boot from SPI flash. Signed-off-by: Joel Johnson Reviewed-by: Stefan Roese --- v2 changes: - none v3 changes: - none v4 changes: - none v5 changes: - none There was some reasonable concern raised about duplicating config entries within a board specific config file rather than making board specific configurations within defconfig. This seems to offer a more board localized mechanism to provide platform defaults for core values. As mentioned in the review, this usage seems to match the Kconfig documented intended usage. As noted at https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html: "Default values are not limited to the menu entry where they are defined. This means the default can be defined somewhere else or be overridden by an earlier definition." Given that there is some dependency variability with these values I prefer keeping them as Kconfig values, but defer to maintainers. Notably, for the ENV values in this and a later commit, I'm using a pattern already in used several other board configs. --- board/solidrun/clearfog/Kconfig | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/board/solidrun/clearfog/Kconfig b/board/solidrun/clearfog/Kconfig index 44224d903d..ea9c419472 100644 --- a/board/solidrun/clearfog/Kconfig +++ b/board/solidrun/clearfog/Kconfig @@ -39,4 +39,16 @@ config CLEARFOG_SFP_25GB SGMII connection (requires a supporting SFP). By default, transfer speed of 1.25 Gbps is used, suitable for a more common 1 Gbps SFP module. +config ENV_SECT_SIZE + hex "Environment Sector-Size" + # Use SPI flash erase block size of 4 KiB + default 0x1000 if MVEBU_SPL_BOOT_DEVICE_SPI + # Use optimistic 64 KiB erase block, will vary between actual media + default 0x10000 if MVEBU_SPL_BOOT_DEVICE_MMC + +config SYS_SPI_U_BOOT_OFFS + hex "address of u-boot payload in SPI flash" + default 0x20000 + depends on MVEBU_SPL_BOOT_DEVICE_SPI + endmenu From patchwork Mon Jan 27 20:01:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240340 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:53 -0700 Subject: [PATCH v5 09/12] arm: mvebu: enable working default boot support In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-10-mrjoel@lixil.net> With the move to driver model usage, ensure that the required driver support for SPI and MMC booting is available in SPL. Tested on SolidRun ClearFog devices. Signed-off-by: Joel Johnson Reviewed-by: Stefan Roese --- v2 changes: - change "select" for ENV_IS_IN_X to "imply" to allow disabling the default env location and configuring a different one if desired - remove SPL_DM_GPIO from defconfig, only include if needed for MMC booting v3 changes: - none v4 changes: - none v5 changes: - none --- arch/arm/mach-mvebu/Kconfig | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig index 161dee937f..32191e7157 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig @@ -235,9 +235,19 @@ choice config MVEBU_SPL_BOOT_DEVICE_SPI bool "SPI NOR flash" + imply ENV_IS_IN_SPI_FLASH + select SPL_DM_SPI + select SPL_MTD_SUPPORT + select SPL_SPI_FLASH_SUPPORT + select SPL_SPI_LOAD + select SPL_SPI_SUPPORT config MVEBU_SPL_BOOT_DEVICE_MMC bool "SDIO/MMC card" + imply ENV_IS_IN_MMC + # GPIO required for SD card presence detection line + select SPL_DM_GPIO + select SPL_DM_MMC select SPL_LIBDISK_SUPPORT config MVEBU_SPL_BOOT_DEVICE_SATA From patchwork Mon Jan 27 20:01:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240338 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:54 -0700 Subject: [PATCH v5 10/12] arm: mvebu: clearfog: move ENV params to Kconfig In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-11-mrjoel@lixil.net> Migrate the values for ENV_SIZE and ENV_OFFSET into board specific Kconfig defaults so they're more accessible for configuration. Reviewed-by: Stefan Roese --- v2 changes: - none v3 changes: - none v4 changes: - none v5 changes: - none Signed-off-by: Joel Johnson --- board/solidrun/clearfog/Kconfig | 8 ++++++++ configs/clearfog_defconfig | 2 -- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/board/solidrun/clearfog/Kconfig b/board/solidrun/clearfog/Kconfig index ea9c419472..e8c3f53d84 100644 --- a/board/solidrun/clearfog/Kconfig +++ b/board/solidrun/clearfog/Kconfig @@ -39,6 +39,14 @@ config CLEARFOG_SFP_25GB SGMII connection (requires a supporting SFP). By default, transfer speed of 1.25 Gbps is used, suitable for a more common 1 Gbps SFP module. +config ENV_SIZE + hex "Environment Size" + default 0x10000 + +config ENV_OFFSET + hex "Environment offset" + default 0xF0000 + config ENV_SECT_SIZE hex "Environment Sector-Size" # Use SPI flash erase block size of 4 KiB diff --git a/configs/clearfog_defconfig b/configs/clearfog_defconfig index c938448c30..6db8b8acf6 100644 --- a/configs/clearfog_defconfig +++ b/configs/clearfog_defconfig @@ -9,8 +9,6 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_SYS_MALLOC_F_LEN=0x2000 CONFIG_TARGET_CLEARFOG=y CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC=y -CONFIG_ENV_SIZE=0x10000 -CONFIG_ENV_OFFSET=0xF0000 CONFIG_DM_GPIO=y CONFIG_SPL_MMC_SUPPORT=y CONFIG_SPL_SERIAL_SUPPORT=y From patchwork Mon Jan 27 20:01:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240339 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:55 -0700 Subject: [PATCH v5 11/12] arm: mvebu: clearfog: don't always use SPL MMC In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-12-mrjoel@lixil.net> Move MMC booting assuptions from defconfig to Kconfig which includes as needed based on dependent options. Signed-off-by: Joel Johnson Reviewed-by: Stefan Roese --- v2 changes: - rebased on master to use Baruch's dynamic MMC/SD offset logic - update description, will revisit removal of CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC in separate future path if a more viable option is identified v3 changes: - none v4 changes: - none v5 changes: - none --- arch/arm/mach-mvebu/Kconfig | 1 + configs/clearfog_defconfig | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig index 32191e7157..4b381a2936 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig @@ -249,6 +249,7 @@ config MVEBU_SPL_BOOT_DEVICE_MMC select SPL_DM_GPIO select SPL_DM_MMC select SPL_LIBDISK_SUPPORT + select SPL_MMC_SUPPORT config MVEBU_SPL_BOOT_DEVICE_SATA bool "SATA" diff --git a/configs/clearfog_defconfig b/configs/clearfog_defconfig index 6db8b8acf6..601b1997ed 100644 --- a/configs/clearfog_defconfig +++ b/configs/clearfog_defconfig @@ -10,7 +10,6 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000 CONFIG_TARGET_CLEARFOG=y CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC=y CONFIG_DM_GPIO=y -CONFIG_SPL_MMC_SUPPORT=y CONFIG_SPL_SERIAL_SUPPORT=y CONFIG_NR_DRAM_BANKS=2 CONFIG_SPL=y @@ -42,7 +41,6 @@ CONFIG_CMD_CACHE=y CONFIG_CMD_TIME=y # CONFIG_SPL_PARTITION_UUIDS is not set CONFIG_DEFAULT_DEVICE_TREE="armada-388-clearfog" -CONFIG_ENV_IS_IN_MMC=y CONFIG_NET_RANDOM_ETHADDR=y CONFIG_SPL_OF_TRANSLATE=y CONFIG_AHCI_MVEBU=y From patchwork Mon Jan 27 20:01:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Johnson X-Patchwork-Id: 240337 List-Id: U-Boot discussion From: mrjoel at lixil.net (Joel Johnson) Date: Mon, 27 Jan 2020 13:01:56 -0700 Subject: [PATCH v5 12/12] arm: mvebu: clearfog: Use Pro DT by default In-Reply-To: <20200127200156.15173-1-mrjoel@lixil.net> References: <20200127200156.15173-1-mrjoel@lixil.net> Message-ID: <20200127200156.15173-13-mrjoel@lixil.net> Switch to explicitly using the Pro variant DT, which has been available since Linux 4.11. Reviewed-by: Stefan Roese --- v4 changes: - new v5 changes: - none I separated out this change to the end of the series since it drew questioning on prior review. I'd still advocate for making the change, since especially with the additions of static variants and runtime detection, it becomes easier from within a booted kernel to identify the type and version of U-Boot image installed. Without making this change, it becomes less direct to determine an actual Pro vs. Base, vs old U-Boot image maybe supporting some hybrid variant configuration. Even in the Linux kernel adding of the Pro DTS, it is indicated that it was meant for backwards compatibility. Except for cases where checking is done directly against the product name from userspace, I don't see downsides even from a compatibility perspective for not making this change. In cases where checking *is* done from userspace, the broadening of the Clearfog product line would seem to mean that userspace checking should be flagged as needing to be udpated as well (or glob/regex matched as needed). Signed-off-by: Joel Johnson --- board/solidrun/clearfog/clearfog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c index 4170fd4775..c31cfcb242 100644 --- a/board/solidrun/clearfog/clearfog.c +++ b/board/solidrun/clearfog/clearfog.c @@ -238,7 +238,7 @@ int board_late_init(void) else if (IS_ENABLED(CONFIG_TARGET_CLEARFOG_BASE)) env_set("fdtfile", "armada-388-clearfog-base.dtb"); else - env_set("fdtfile", "armada-388-clearfog.dtb"); + env_set("fdtfile", "armada-388-clearfog-pro.dtb"); return 0; }