[PATCH v2 3/3] arm: mvebu: clearfog: Detect MMC vs SDHC and fixup fdt

Martin Rowe martin.p.rowe at gmail.com
Mon Mar 27 12:34:59 CEST 2023


On Mon, 27 Mar 2023 at 07:26, Stefan Roese <sr at denx.de> wrote:
>
> 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

Hmm, I fixed these two things and thought I submitted with In-Reply-To
this thread, but it's gone and created a new untitled series in
patchwork for the fix. Is there anything I can do to fix that up?
Sorry for the hassle.

> > +
> > +     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