[PATCH v2 3/3] arm: mvebu: clearfog: Detect MMC vs SDHC and fixup fdt
Stefan Roese
sr at denx.de
Mon Mar 27 09:09:42 CEST 2023
Hi Martin,
On 3/25/23 01:02, Martin Rowe wrote:
> [upstream of vendor commit 19a96f7c40a8fc1d0a6546ac2418d966e5840a99]
>
> The Clearfog devices have only one SDHC device. This is either eMMC if
> it is populated on the SOM or SDHC if not. The Linux device tree assumes
> the SDHC case. Detect if the device is an eMMC and fixup the device-tree
> so it will be detected by Linux.
>
> Ported from vendor repo at https://github.com/SolidRun/u-boot
>
> Signed-off-by: Martin Rowe <martin.p.rowe at gmail.com>
> ---
> arch/arm/mach-mvebu/Kconfig | 1 +
> board/solidrun/clearfog/clearfog.c | 32 ++++++++++++++++++++++++++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
> index fb3cff43f7..773635d691 100644
> --- a/arch/arm/mach-mvebu/Kconfig
> +++ b/arch/arm/mach-mvebu/Kconfig
> @@ -107,6 +107,7 @@ config TARGET_CLEARFOG
> bool "Support ClearFog"
> select 88F6820
> select BOARD_LATE_INIT
> + select OF_BOARD_SETUP
>
> config TARGET_HELIOS4
> bool "Support Helios4"
> diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c
> index 03adb591d8..0087fea7db 100644
> --- a/board/solidrun/clearfog/clearfog.c
> +++ b/board/solidrun/clearfog/clearfog.c
> @@ -10,6 +10,7 @@
> #include <miiphy.h>
> #include <net.h>
> #include <netdev.h>
> +#include <mmc.h>
> #include <asm/global_data.h>
> #include <asm/io.h>
> #include <asm/arch/cpu.h>
> @@ -261,3 +262,34 @@ int board_late_init(void)
>
> return 0;
> }
> +
> +static bool has_emmc(void)
> +{
> + struct mmc *mmc;
Nitpicking: Please add an empty line after the variable declaration
section.
> + mmc = find_mmc_device(0);
> + if (!mmc)
> + return 0;
> + return (!mmc_init(mmc) && IS_MMC(mmc)) ? true : false;
> +}
> +
> +/*
> + * The Clearfog devices have only one SDHC device. This is either eMMC
> + * if it is populated on the SOM or SDHC if not. The Linux device tree
> + * assumes the SDHC case. Detect if the device is an eMMC and fixup the
> + * device-tree, so that it will be detected by Linux.
> + */
> +int ft_board_setup(void *blob, struct bd_info *bd)
> +{
> + __maybe_unused int node;
Is this "__maybe_unused" really needed here?
Otherwise:
Reviewed-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
> +
> + if (has_emmc()) {
> + node = fdt_node_offset_by_compatible(blob, -1, "marvell,armada-380-sdhci");
> + if (node < 0)
> + return 0; /* Unexpected eMMC device; patching not supported */
> +
> + puts("Patching FDT so that eMMC is detected by OS\n");
> + return fdt_setprop_empty(blob, node, "non-removable");
> + }
> +
> + return 0;
> +}
More information about the U-Boot
mailing list