On Tue, Nov 6, 2018 at 9:43 AM Lucas Stach <l.stach@xxxxxxxxxxxxxx> wrote: > > So we can have a persistent env and a bit safer barebox update. Also > switch the environment and update default depending on the bootsource, > as this is really helpful on an eval board where one might want to > have totally different systems on eMMC and SD card. > > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> > --- > arch/arm/boards/nxp-imx8mq-evk/board.c | 20 +++++++++++--- > arch/arm/dts/imx8mq-evk.dts | 37 ++++++++++++++++++++++++++ > 2 files changed, 54 insertions(+), 3 deletions(-) > > diff --git a/arch/arm/boards/nxp-imx8mq-evk/board.c b/arch/arm/boards/nxp-imx8mq-evk/board.c > index 7918b5fb3e36..299d056e2777 100644 > --- a/arch/arm/boards/nxp-imx8mq-evk/board.c > +++ b/arch/arm/boards/nxp-imx8mq-evk/board.c > @@ -17,11 +17,12 @@ > * > */ > > +#include <asm/memory.h> > +#include <bootsource.h> > #include <common.h> > #include <init.h> > -#include <asm/memory.h> > -#include <linux/sizes.h> > #include <linux/phy.h> > +#include <linux/sizes.h> > #include <mach/bbu.h> > > #include <envfs.h> > @@ -47,12 +48,25 @@ static int ar8031_phy_fixup(struct phy_device *phydev) > > static int nxp_imx8mq_evk_init(void) > { > + int flags; > + > if (!of_machine_is_compatible("fsl,imx8mq-evk")) > return 0; > > barebox_set_hostname("imx8mq-evk"); > > - imx8mq_bbu_internal_mmc_register_handler("eMMC", "/dev/mmc0", 0); > + flags = bootsource_get_instance() == 0 ? BBU_HANDLER_FLAG_DEFAULT : 0; > + imx8mq_bbu_internal_mmc_register_handler("eMMC", > + "/dev/mmc0.barebox", flags); > + > + flags = bootsource_get_instance() == 1 ? BBU_HANDLER_FLAG_DEFAULT : 0; > + imx8mq_bbu_internal_mmc_register_handler("SD", > + "/dev/mmc1.barebox", flags); > + > + if (bootsource_get_instance() == 0) > + of_device_enable_path("/chosen/environment-emmc"); > + else > + of_device_enable_path("/chosen/environment-sd"); Optionally, you can probably simplify this to: switch (bootsource_get_instance()) { case 0: flags_emmc = BBU_HANDLER_FLAG_DEFAULT; flags_sd = 0; environment_path = "/chosen/envirnoment-emmc"; break; case 1: flags_emmc = 0; flags_sd = BBU_HANDLER_FLAGDEFAULT; environment_path = "/chosen/envirnoment-sd"; break; } imx8mq_bbu_internal_mmc_register_handler("eMMC", "/dev/mmc0.barebox", flags_mmc); imx8mq_bbu_internal_mmc_register_handler("SD", "/dev/mmc1.barebox", flags_sd); of_device_enable_path(environment_path); Thanks, Andrey Smirnov _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox