From 72bb66caad5ac79294c92cb1ca115942b59080e1 Mon Sep 17 00:00:00 2001 From: Andre Heider Date: Sat, 2 Nov 2019 13:14:08 +0100 Subject: uboot-mvebu: add support for espressobin This builds two u-boot binaries: one for boards without eMMC and one with. Signed-off-by: Andre Heider --- ...spressobin-Set-environment-variable-fdtfi.patch | 100 +++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 package/boot/uboot-mvebu/patches/134-arm-mvebu-Espressobin-Set-environment-variable-fdtfi.patch (limited to 'package/boot/uboot-mvebu/patches/134-arm-mvebu-Espressobin-Set-environment-variable-fdtfi.patch') diff --git a/package/boot/uboot-mvebu/patches/134-arm-mvebu-Espressobin-Set-environment-variable-fdtfi.patch b/package/boot/uboot-mvebu/patches/134-arm-mvebu-Espressobin-Set-environment-variable-fdtfi.patch new file mode 100644 index 0000000000..fd270ddae2 --- /dev/null +++ b/package/boot/uboot-mvebu/patches/134-arm-mvebu-Espressobin-Set-environment-variable-fdtfi.patch @@ -0,0 +1,100 @@ +From d59406482c1847959305a986376b35e57da28e69 Mon Sep 17 00:00:00 2001 +From: Andre Heider +Date: Sat, 5 Sep 2020 12:45:59 +0200 +Subject: [PATCH] arm: mvebu: Espressobin: Set environment variable fdtfile + +Required for the generic distro mechanism. + +Linux ships with 4 variants: +marvell/armada-3720-espressobin-v7-emmc.dtb +marvell/armada-3720-espressobin-v7.dtb +marvell/armada-3720-espressobin-emmc.dtb +marvell/armada-3720-espressobin.dtb + +Use available information to determine the appropriate filename. + +Tested on a v5 board without eMMC. + +Signed-off-by: Andre Heider +--- + board/Marvell/mvebu_armada-37xx/board.c | 47 +++++++++++++++++++++ + configs/mvebu_espressobin-88f3720_defconfig | 1 + + 2 files changed, 48 insertions(+) + +--- a/board/Marvell/mvebu_armada-37xx/board.c ++++ b/board/Marvell/mvebu_armada-37xx/board.c +@@ -5,6 +5,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -50,6 +51,22 @@ DECLARE_GLOBAL_DATA_PTR; + #define MVEBU_G2_SMI_PHY_CMD_REG (24) + #define MVEBU_G2_SMI_PHY_DATA_REG (25) + ++/* ++ * Memory Controller Registers ++ * ++ * Assembled based on public information: ++ * https://gitlab.nic.cz/turris/mox-boot-builder/-/blob/master/wtmi/main.c#L332-336 ++ * https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/blob/mv_ddr-armada-18.12/drivers/mv_ddr_mc6.h#L309-L332 ++ * ++ * And checked against the written register values for the various topologies: ++ * https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/blob/mv_ddr-armada-atf-mainline/a3700/mv_ddr_tim.h ++ */ ++#define A3700_CH0_MC_CTRL2_REG MVEBU_REGISTER(0x002c4) ++#define A3700_MC_CTRL2_SDRAM_TYPE_MASK 0xf ++#define A3700_MC_CTRL2_SDRAM_TYPE_OFFS 4 ++#define A3700_MC_CTRL2_SDRAM_TYPE_DDR3 2 ++#define A3700_MC_CTRL2_SDRAM_TYPE_DDR4 3 ++ + int board_early_init_f(void) + { + return 0; +@@ -63,6 +80,36 @@ int board_init(void) + return 0; + } + ++#ifdef CONFIG_BOARD_LATE_INIT ++int board_late_init(void) ++{ ++ bool ddr4, emmc; ++ ++ if (env_get("fdtfile")) ++ return 0; ++ ++ if (!of_machine_is_compatible("globalscale,espressobin")) ++ return 0; ++ ++ /* If the memory controller has been configured for DDR4, we're running on v7 */ ++ ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> A3700_MC_CTRL2_SDRAM_TYPE_OFFS) ++ & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == A3700_MC_CTRL2_SDRAM_TYPE_DDR4; ++ ++ emmc = of_machine_is_compatible("globalscale,espressobin-emmc"); ++ ++ if (ddr4 && emmc) ++ env_set("fdtfile", "marvell/armada-3720-espressobin-v7-emmc.dtb"); ++ else if (ddr4) ++ env_set("fdtfile", "marvell/armada-3720-espressobin-v7.dtb"); ++ else if (emmc) ++ env_set("fdtfile", "marvell/armada-3720-espressobin-emmc.dtb"); ++ else ++ env_set("fdtfile", "marvell/armada-3720-espressobin.dtb"); ++ ++ return 0; ++} ++#endif ++ + /* Board specific AHCI / SATA enable code */ + int board_ahci_enable(void) + { +--- a/configs/mvebu_espressobin-88f3720_defconfig ++++ b/configs/mvebu_espressobin-88f3720_defconfig +@@ -84,3 +84,4 @@ CONFIG_USB_ETHER_RTL8152=y + CONFIG_USB_ETHER_SMSC95XX=y + CONFIG_SHA1=y + CONFIG_SHA256=y ++CONFIG_BOARD_LATE_INIT=y -- cgit v1.2.3