summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2020-04-24 19:17:25 +0200
committerRobert Schwebel <r.schwebel@pengutronix.de>2020-04-27 09:39:47 +0200
commitf3b731600751a9a2859c1fd01805ee6324340bdb (patch)
tree0b22c8b10a77f6e5f9e87b66df173adbdfad4e26
parenta479969b845a28613e637d8bec6aa658dabe6616 (diff)
downloadDistroKit-f3b731600751a9a2859c1fd01805ee6324340bdb.tar.gz
v7a: barebox: add support for Linux Automation MC-1
This adds barebox support for the Linux Automation GmbH MC-1 board built around the Octavo Systems OSD32MP157C-512M SiP. The patches have been posted[1] upstream, but are not yet accepted. It's however expected for them to be part of barebox v2020.06.0, at which time we can drop the patchset again. [1]: https://lists.infradead.org/pipermail/barebox/2020-April/041653.html Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
-rw-r--r--configs/platform-v7a/barebox-am335x-mlo.config2
-rw-r--r--configs/platform-v7a/barebox-am335x.config2
-rw-r--r--configs/platform-v7a/barebox-am335x.config.diff2
-rw-r--r--configs/platform-v7a/barebox-mx6.config2
-rw-r--r--configs/platform-v7a/barebox-mx6.config.diff2
-rw-r--r--configs/platform-v7a/barebox-rpi2.config2
-rw-r--r--configs/platform-v7a/barebox-rpi2.config.diff2
-rw-r--r--configs/platform-v7a/barebox-stm32mp.config13
-rw-r--r--configs/platform-v7a/barebox-stm32mp.config.diff9
-rw-r--r--configs/platform-v7a/barebox-vexpress.config2
-rw-r--r--configs/platform-v7a/barebox-vexpress.config.diff2
-rw-r--r--configs/platform-v7a/barebox.config2
-rw-r--r--configs/platform-v7a/patches/barebox-2020.04.0/0001-ARM-stm32mp-add-Linux-Automation-MC-1-support.patch815
-rw-r--r--configs/platform-v7a/patches/barebox-2020.04.0/0002-ARM-stm32mp-lxa-mc1-break-reg_3v3-dependency-on-PMIC.patch60
-rw-r--r--configs/platform-v7a/patches/barebox-2020.04.0/0101-Release-2020.04.0-customers-pengutronix-distrokit-v7.patch22
-rw-r--r--configs/platform-v7a/patches/barebox-2020.04.0/series12
-rw-r--r--configs/platform-v7a/rules/barebox-stm32mp.make3
17 files changed, 937 insertions, 17 deletions
diff --git a/configs/platform-v7a/barebox-am335x-mlo.config b/configs/platform-v7a/barebox-am335x-mlo.config
index a680c87..e5c0eef 100644
--- a/configs/platform-v7a/barebox-am335x-mlo.config
+++ b/configs/platform-v7a/barebox-am335x-mlo.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Barebox/arm 2020.04.0 Configuration
+# Barebox/arm 2020.04.0-20200424-2 Configuration
#
CONFIG_ARM=y
CONFIG_ARM_USE_COMPRESSED_DTB=y
diff --git a/configs/platform-v7a/barebox-am335x.config b/configs/platform-v7a/barebox-am335x.config
index 62c4246..98ecd1d 100644
--- a/configs/platform-v7a/barebox-am335x.config
+++ b/configs/platform-v7a/barebox-am335x.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Barebox/arm 2020.04.0 Configuration
+# Barebox/arm 2020.04.0-20200424-2 Configuration
#
CONFIG_ARM=y
CONFIG_ARM_LINUX=y
diff --git a/configs/platform-v7a/barebox-am335x.config.diff b/configs/platform-v7a/barebox-am335x.config.diff
index a304511..5f81f85 100644
--- a/configs/platform-v7a/barebox-am335x.config.diff
+++ b/configs/platform-v7a/barebox-am335x.config.diff
@@ -1,4 +1,4 @@
-3bfd0a3556e630878dfbff7b733b494e
+c0f89a11f3201404131209bd133590b7
# CONFIG_AM33XX_NET_BOOT is not set
CONFIG_ARCH_AM33XX=y
# CONFIG_ARCH_BCM283X is not set
diff --git a/configs/platform-v7a/barebox-mx6.config b/configs/platform-v7a/barebox-mx6.config
index 8c93134..aec9896 100644
--- a/configs/platform-v7a/barebox-mx6.config
+++ b/configs/platform-v7a/barebox-mx6.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Barebox/arm 2020.04.0 Configuration
+# Barebox/arm 2020.04.0-20200424-2 Configuration
#
CONFIG_ARM=y
CONFIG_ARM_LINUX=y
diff --git a/configs/platform-v7a/barebox-mx6.config.diff b/configs/platform-v7a/barebox-mx6.config.diff
index 4c1d408..e682d55 100644
--- a/configs/platform-v7a/barebox-mx6.config.diff
+++ b/configs/platform-v7a/barebox-mx6.config.diff
@@ -1,4 +1,4 @@
-3bfd0a3556e630878dfbff7b733b494e
+c0f89a11f3201404131209bd133590b7
# CONFIG_ARCH_BCM283X is not set
CONFIG_ARCH_HAS_FEC_IMX=y
CONFIG_ARCH_HAS_IMX_GPT=y
diff --git a/configs/platform-v7a/barebox-rpi2.config b/configs/platform-v7a/barebox-rpi2.config
index f40288a..22da0fe 100644
--- a/configs/platform-v7a/barebox-rpi2.config
+++ b/configs/platform-v7a/barebox-rpi2.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Barebox/arm 2020.04.0 Configuration
+# Barebox/arm 2020.04.0-20200424-2 Configuration
#
CONFIG_ARM=y
CONFIG_ARM_LINUX=y
diff --git a/configs/platform-v7a/barebox-rpi2.config.diff b/configs/platform-v7a/barebox-rpi2.config.diff
index 64ecde1..1690e36 100644
--- a/configs/platform-v7a/barebox-rpi2.config.diff
+++ b/configs/platform-v7a/barebox-rpi2.config.diff
@@ -1,4 +1,4 @@
-3bfd0a3556e630878dfbff7b733b494e
+c0f89a11f3201404131209bd133590b7
CONFIG_ARM_ASM_UNIFIED=y
CONFIG_BOOTM_INITRD=y
# CONFIG_CMD_I2C is undefined
diff --git a/configs/platform-v7a/barebox-stm32mp.config b/configs/platform-v7a/barebox-stm32mp.config
index 4dce15b..3506962 100644
--- a/configs/platform-v7a/barebox-stm32mp.config
+++ b/configs/platform-v7a/barebox-stm32mp.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Barebox/arm 2020.04.0 Configuration
+# Barebox/arm 2020.04.0-20200424-2 Configuration
#
CONFIG_ARM=y
CONFIG_ARM_LINUX=y
@@ -53,6 +53,7 @@ CONFIG_BAREBOX_MAX_IMAGE_SIZE=0xffffffff
CONFIG_ARCH_NR_GPIO=416
CONFIG_ARCH_STM32MP157=y
CONFIG_MACH_STM32MP157C_DK2=y
+CONFIG_MACH_LXA_MC1=y
# CONFIG_BOARD_ARM_GENERIC_DT is not set
CONFIG_ARM_ASM_UNIFIED=y
CONFIG_AEABI=y
@@ -133,6 +134,7 @@ CONFIG_RELOCATABLE=y
CONFIG_PROMPT="barebox:"
CONFIG_BAUDRATE=115200
CONFIG_CBSIZE=1024
+CONFIG_FIRMWARE=y
CONFIG_SHELL_HUSH=y
# CONFIG_SHELL_SIMPLE is not set
# CONFIG_SHELL_NONE is not set
@@ -377,7 +379,7 @@ CONFIG_CMD_WD_DEFAULT_TIMOUT=0
CONFIG_CMD_BAREBOX_UPDATE=y
# CONFIG_CMD_BLOBGEN is not set
# CONFIG_CMD_FIRMWARELOAD is not set
-# CONFIG_CMD_OF_DIFF is not set
+CONFIG_CMD_OF_DIFF=y
CONFIG_CMD_OF_DUMP=y
CONFIG_CMD_OF_NODE=y
CONFIG_CMD_OF_PROPERTY=y
@@ -513,7 +515,7 @@ CONFIG_MCI=y
CONFIG_MCI_STARTUP=y
CONFIG_MCI_INFO=y
CONFIG_MCI_WRITE=y
-# CONFIG_MCI_MMC_BOOT_PARTITIONS is not set
+CONFIG_MCI_MMC_BOOT_PARTITIONS=y
#
# --- MCI host drivers ---
@@ -574,7 +576,7 @@ CONFIG_LED_GPIO_OF=y
#
# EEPROM support
#
-# CONFIG_EEPROM_AT24 is not set
+CONFIG_EEPROM_AT24=y
# end of EEPROM support
#
@@ -639,7 +641,8 @@ CONFIG_REGULATOR_STPMIC1=y
#
# Remoteproc drivers
#
-# CONFIG_REMOTEPROC is not set
+CONFIG_REMOTEPROC=y
+CONFIG_STM32_REMOTEPROC=y
# end of Remoteproc drivers
CONFIG_ARCH_HAS_RESET_CONTROLLER=y
diff --git a/configs/platform-v7a/barebox-stm32mp.config.diff b/configs/platform-v7a/barebox-stm32mp.config.diff
index e685850..a10ca6f 100644
--- a/configs/platform-v7a/barebox-stm32mp.config.diff
+++ b/configs/platform-v7a/barebox-stm32mp.config.diff
@@ -1,4 +1,4 @@
-3bfd0a3556e630878dfbff7b733b494e
+c0f89a11f3201404131209bd133590b7
# CONFIG_ARCH_BCM283X is not set
CONFIG_ARCH_HAS_RESET_CONTROLLER=y
CONFIG_ARCH_NR_GPIO=416
@@ -24,6 +24,7 @@ CONFIG_BOOTM_OFTREE_UIMAGE=y
# CONFIG_CMD_LED_TRIGGER is undefined
CONFIG_CMD_MENU_MANAGEMENT=y
CONFIG_CMD_MIITOOL=y
+CONFIG_CMD_OF_DIFF=y
CONFIG_CMD_POWEROFF=y
# CONFIG_CMD_SHA1SUM is not set
# CONFIG_CMD_SPI is undefined
@@ -47,8 +48,10 @@ CONFIG_DRIVER_NET_DESIGNWARE_STM32=y
# CONFIG_DRIVER_NET_MICREL is undefined
CONFIG_DRIVER_SERIAL_STM32=y
# CONFIG_DRIVER_SPI_GPIO is undefined
+CONFIG_EEPROM_AT24=y
# CONFIG_EEPROM_AT25 is undefined
# CONFIG_FILE_LIST is undefined
+CONFIG_FIRMWARE=y
# CONFIG_FIRMWARE_ALTERA_SERIAL is undefined
# CONFIG_FS_JFFS2 is undefined
# CONFIG_GPIO_74164 is undefined
@@ -61,6 +64,7 @@ CONFIG_I2C_STM32=y
# CONFIG_LED_TRIGGERS is not set
# CONFIG_LIBFDT is undefined
# CONFIG_MACHINE_ID is undefined
+CONFIG_MACH_LXA_MC1=y
# CONFIG_MACH_RPI2 is undefined
# CONFIG_MACH_RPI3 is undefined
# CONFIG_MACH_RPI is undefined
@@ -70,6 +74,7 @@ CONFIG_MACH_STM32MP157C_DK2=y
# CONFIG_MCI_BCM283X is undefined
# CONFIG_MCI_BCM283X_SDHOST is undefined
# CONFIG_MCI_MMCI is not set
+CONFIG_MCI_MMC_BOOT_PARTITIONS=y
# CONFIG_MCI_SPI is undefined
CONFIG_MCI_STM32_SDMMC2=y
CONFIG_MFD_STPMIC1=y
@@ -109,6 +114,7 @@ CONFIG_PROMPT="barebox:"
CONFIG_REGULATOR_FIXED=y
# CONFIG_REGULATOR_STM32_PWR is not set
CONFIG_REGULATOR_STPMIC1=y
+CONFIG_REMOTEPROC=y
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_IMX7 is not set
CONFIG_RESET_STM32=y
@@ -121,6 +127,7 @@ CONFIG_RESET_STM32=y
# CONFIG_STATE_DRV is undefined
CONFIG_STM32_BSEC=y
CONFIG_STM32_IWDG_WATCHDOG=y
+CONFIG_STM32_REMOTEPROC=y
# CONFIG_STPMIC1_WATCHDOG is not set
CONFIG_THUMB2_BAREBOX=y
# CONFIG_USB is undefined
diff --git a/configs/platform-v7a/barebox-vexpress.config b/configs/platform-v7a/barebox-vexpress.config
index 2a8bf5f..2735b20 100644
--- a/configs/platform-v7a/barebox-vexpress.config
+++ b/configs/platform-v7a/barebox-vexpress.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Barebox/arm 2020.04.0 Configuration
+# Barebox/arm 2020.04.0-20200424-2 Configuration
#
CONFIG_ARM=y
CONFIG_ARM_LINUX=y
diff --git a/configs/platform-v7a/barebox-vexpress.config.diff b/configs/platform-v7a/barebox-vexpress.config.diff
index 39405a7..ed3d8f6 100644
--- a/configs/platform-v7a/barebox-vexpress.config.diff
+++ b/configs/platform-v7a/barebox-vexpress.config.diff
@@ -1,4 +1,4 @@
-3bfd0a3556e630878dfbff7b733b494e
+c0f89a11f3201404131209bd133590b7
CONFIG_AMBA_SP804=y
# CONFIG_ARCH_BCM283X is not set
CONFIG_ARCH_VEXPRESS=y
diff --git a/configs/platform-v7a/barebox.config b/configs/platform-v7a/barebox.config
index 50a7c1a..e939f53 100644
--- a/configs/platform-v7a/barebox.config
+++ b/configs/platform-v7a/barebox.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Barebox/arm 2020.04.0 Configuration
+# Barebox/arm 2020.04.0-20200424-2 Configuration
#
CONFIG_ARM=y
CONFIG_ARM_LINUX=y
diff --git a/configs/platform-v7a/patches/barebox-2020.04.0/0001-ARM-stm32mp-add-Linux-Automation-MC-1-support.patch b/configs/platform-v7a/patches/barebox-2020.04.0/0001-ARM-stm32mp-add-Linux-Automation-MC-1-support.patch
new file mode 100644
index 0000000..f660302
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2020.04.0/0001-ARM-stm32mp-add-Linux-Automation-MC-1-support.patch
@@ -0,0 +1,815 @@
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Tue, 14 Jan 2020 18:11:14 +0100
+Subject: [PATCH] ARM: stm32mp: add Linux Automation MC-1 support
+
+This adds support for the Linux Automation GmbH MC-1 board built around
+the Octavo Systems OSD32MP157C-512M SiP.
+
+The device tree is based on the one in linux-stm32/stm32-next, which
+will probably be merged for Linux v5.8-rc1. Instead of waiting that
+long, we import it here with some stuff removed/changed, so it's usable
+for both barebox and Linux, without the prerequisite patches.
+
+The non-barebox specific parts have been moved into separate DTSIs
+(arch/arm/dts/stm32mp{157c-lxa-mc1,15xx-osd32}.dtsi), so both can be
+dropped after the v5.8-rc1 sync with only include path change necessary
+in arch/arm/dts/stm32mp157c-lxa-mc1.dts.
+
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ arch/arm/boards/Makefile | 1 +
+ arch/arm/boards/lxa-mc1/Makefile | 2 +
+ arch/arm/boards/lxa-mc1/board.c | 31 +++
+ arch/arm/boards/lxa-mc1/lowlevel.c | 26 +++
+ arch/arm/dts/Makefile | 1 +
+ arch/arm/dts/stm32mp157c-lxa-mc1.dts | 42 ++++
+ arch/arm/dts/stm32mp157c-lxa-mc1.dtsi | 362 ++++++++++++++++++++++++++++++++++
+ arch/arm/dts/stm32mp15xx-osd32.dtsi | 229 +++++++++++++++++++++
+ arch/arm/mach-stm32mp/Kconfig | 4 +
+ images/Makefile.stm32mp | 5 +
+ 10 files changed, 703 insertions(+)
+ create mode 100644 arch/arm/boards/lxa-mc1/Makefile
+ create mode 100644 arch/arm/boards/lxa-mc1/board.c
+ create mode 100644 arch/arm/boards/lxa-mc1/lowlevel.c
+ create mode 100644 arch/arm/dts/stm32mp157c-lxa-mc1.dts
+ create mode 100644 arch/arm/dts/stm32mp157c-lxa-mc1.dtsi
+ create mode 100644 arch/arm/dts/stm32mp15xx-osd32.dtsi
+
+diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile
+index 9fe458e0a390..e9e9163d589b 100644
+--- a/arch/arm/boards/Makefile
++++ b/arch/arm/boards/Makefile
+@@ -129,6 +129,7 @@ obj-$(CONFIG_MACH_SOCFPGA_TERASIC_SOCKIT) += terasic-sockit/
+ obj-$(CONFIG_MACH_SOLIDRUN_CUBOX) += solidrun-cubox/
+ obj-$(CONFIG_MACH_SOLIDRUN_MICROSOM) += solidrun-microsom/
+ obj-$(CONFIG_MACH_STM32MP157C_DK2) += stm32mp157c-dk2/
++obj-$(CONFIG_MACH_LXA_MC1) += lxa-mc1/
+ obj-$(CONFIG_MACH_TECHNEXION_PICO_HOBBIT) += technexion-pico-hobbit/
+ obj-$(CONFIG_MACH_TECHNEXION_WANDBOARD) += technexion-wandboard/
+ obj-$(CONFIG_MACH_TNY_A9260) += tny-a926x/
+diff --git a/arch/arm/boards/lxa-mc1/Makefile b/arch/arm/boards/lxa-mc1/Makefile
+new file mode 100644
+index 000000000000..092c31d6b28d
+--- /dev/null
++++ b/arch/arm/boards/lxa-mc1/Makefile
+@@ -0,0 +1,2 @@
++lwl-y += lowlevel.o
++obj-y += board.o
+diff --git a/arch/arm/boards/lxa-mc1/board.c b/arch/arm/boards/lxa-mc1/board.c
+new file mode 100644
+index 000000000000..d36924fc2793
+--- /dev/null
++++ b/arch/arm/boards/lxa-mc1/board.c
+@@ -0,0 +1,31 @@
++// SPDX-License-Identifier: GPL-2.0+
++#include <common.h>
++#include <linux/sizes.h>
++#include <init.h>
++#include <asm/memory.h>
++#include <mach/bbu.h>
++#include <bootsource.h>
++
++static int mc1_device_init(void)
++{
++ int flags;
++ if (!of_machine_is_compatible("lxa,stm32mp157c-mc1"))
++ return 0;
++
++ flags = bootsource_get_instance() == 0 ? BBU_HANDLER_FLAG_DEFAULT : 0;
++ stm32mp_bbu_mmc_register_handler("sd", "/dev/mmc0.ssbl", flags);
++
++ flags = bootsource_get_instance() == 1 ? BBU_HANDLER_FLAG_DEFAULT : 0;
++ stm32mp_bbu_mmc_register_handler("emmc", "/dev/mmc1.ssbl", flags);
++
++
++ if (bootsource_get_instance() == 0)
++ of_device_enable_path("/chosen/environment-sd");
++ else
++ of_device_enable_path("/chosen/environment-emmc");
++
++ barebox_set_hostname("lxa-mc1");
++
++ return 0;
++}
++device_initcall(mc1_device_init);
+diff --git a/arch/arm/boards/lxa-mc1/lowlevel.c b/arch/arm/boards/lxa-mc1/lowlevel.c
+new file mode 100644
+index 000000000000..274f824a1662
+--- /dev/null
++++ b/arch/arm/boards/lxa-mc1/lowlevel.c
+@@ -0,0 +1,26 @@
++// SPDX-License-Identifier: GPL-2.0+
++#include <common.h>
++#include <mach/entry.h>
++#include <debug_ll.h>
++
++extern char __dtb_z_stm32mp157c_lxa_mc1_start[];
++
++static void setup_uart(void)
++{
++ /* first stage has set up the UART, so nothing to do here */
++ putc_ll('>');
++}
++
++ENTRY_FUNCTION(start_stm32mp157c_lxa_mc1, r0, r1, r2)
++{
++ void *fdt;
++
++ stm32mp_cpu_lowlevel_init();
++
++ if (IS_ENABLED(CONFIG_DEBUG_LL))
++ setup_uart();
++
++ fdt = __dtb_z_stm32mp157c_lxa_mc1_start + get_runtime_offset();
++
++ stm32mp1_barebox_entry(fdt);
++}
+diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
+index ddfe64e83bdf..1aeaa61e017e 100644
+--- a/arch/arm/dts/Makefile
++++ b/arch/arm/dts/Makefile
+@@ -94,6 +94,7 @@ lwl-dtb-$(CONFIG_MACH_SOLIDRUN_MICROSOM) += imx6dl-hummingboard.dtb.o imx6q-humm
+ imx6dl-hummingboard2.dtb.o imx6q-hummingboard2.dtb.o \
+ imx6q-h100.dtb.o
+ lwl-dtb-$(CONFIG_MACH_STM32MP157C_DK2) += stm32mp157c-dk2.dtb.o
++lwl-dtb-$(CONFIG_MACH_LXA_MC1) += stm32mp157c-lxa-mc1.dtb.o
+ lwl-dtb-$(CONFIG_MACH_SCB9328) += imx1-scb9328.dtb.o
+ lwl-dtb-$(CONFIG_MACH_TECHNEXION_WANDBOARD) += imx6q-wandboard.dtb.o imx6dl-wandboard.dtb.o
+ lwl-dtb-$(CONFIG_MACH_TECHNEXION_PICO_HOBBIT) += imx6ul-pico-hobbit.dtb.o
+diff --git a/arch/arm/dts/stm32mp157c-lxa-mc1.dts b/arch/arm/dts/stm32mp157c-lxa-mc1.dts
+new file mode 100644
+index 000000000000..742739424ea7
+--- /dev/null
++++ b/arch/arm/dts/stm32mp157c-lxa-mc1.dts
+@@ -0,0 +1,42 @@
++// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
++/*
++ * Copyright (C) 2020 Ahmad Fatoum, Pengutronix
++ */
++
++#include "stm32mp157c-lxa-mc1.dtsi"
++#include "stm32mp151.dtsi"
++
++/ {
++ chosen {
++ environment-sd {
++ compatible = "barebox,environment";
++ device-path = &sdmmc1, "partname:barebox-environment";
++ };
++
++ environment-emmc {
++ compatible = "barebox,environment";
++ device-path = &sdmmc2, "partname:barebox-environment";
++ };
++ };
++
++};
++
++&panel {
++ display-timings {
++ timing { /* edt,etm0700g0dh6 */
++ clock-frequency = <33260000>;
++ hactive = <800>;
++ vactive = <480>;
++ hfront-porch = <40>;
++ hsync-len = <128>;
++ hback-porch = <88>;
++ vfront-porch = <10>;
++ vsync-len = <2>;
++ vback-porch = <33>;
++ hsync-active = <0>;
++ vsync-active = <0>;
++ de-active = <1>;
++ pixelclk-active = <0>;
++ };
++ };
++};
+diff --git a/arch/arm/dts/stm32mp157c-lxa-mc1.dtsi b/arch/arm/dts/stm32mp157c-lxa-mc1.dtsi
+new file mode 100644
+index 000000000000..6603cf280eb2
+--- /dev/null
++++ b/arch/arm/dts/stm32mp157c-lxa-mc1.dtsi
+@@ -0,0 +1,362 @@
++/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause) */
++/*
++ * Copyright (C) 2020 STMicroelectronics - All Rights Reserved
++ * Copyright (C) 2020 Ahmad Fatoum, Pengutronix
++ */
++
++/dts-v1/;
++
++#include <arm/stm32mp157.dtsi>
++#include "stm32mp15xx-osd32.dtsi"
++#include <arm/stm32mp15xxac-pinctrl.dtsi>
++
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/pwm/pwm.h>
++
++/ {
++ model = "Linux Automation MC-1 board";
++ compatible = "lxa,stm32mp157c-mc1", "st,stm32mp157";
++
++ aliases {
++ ethernet0 = &ethernet0;
++ mmc0 = &sdmmc1;
++ mmc1 = &sdmmc2;
++ serial0 = &uart4;
++ };
++
++ backlight: backlight {
++ compatible = "pwm-backlight";
++ pwms = <&backlight_pwm 1 100000 PWM_POLARITY_INVERTED>;
++ brightness-levels = <0 31 63 95 127 159 191 223 255>;
++ default-brightness-level = <7>;
++ power-supply = <&reg_5v2>; /* 3V3_BACKLIGHT */
++ };
++
++ chosen {
++ stdout-path = &uart4;
++ };
++
++ led-act {
++ compatible = "gpio-leds";
++
++ led-green {
++ label = "mc1:green:act";
++ gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
++ linux,default-trigger = "heartbeat";
++ };
++ };
++
++ led-rgb {
++ compatible = "pwm-leds";
++
++ led-red {
++ label = "mc1:red:rgb";
++ pwms = <&leds_pwm 1 1000000 0>;
++ max-brightness = <255>;
++ active-low;
++ };
++
++ led-green {
++ label = "mc1:green:rgb";
++ pwms = <&leds_pwm 2 1000000 0>;
++ max-brightness = <255>;
++ active-low;
++ };
++
++ led-blue {
++ label = "mc1:blue:rgb";
++ pwms = <&leds_pwm 3 1000000 0>;
++ max-brightness = <255>;
++ active-low;
++ };
++ };
++
++ panel: panel {
++ compatible = "edt,etm0700g0edh6", "simple-panel";
++ backlight = <&backlight>;
++ enable-gpios = <&gpiod 4 GPIO_ACTIVE_HIGH>;
++ power-supply = <&reg_3v3>;
++
++ port {
++ panel_input: endpoint {
++ remote-endpoint = <&ltdc_ep0_out>;
++ };
++ };
++ };
++
++ reg_3v3: regulator_3v3 {
++ compatible = "regulator-fixed";
++ regulator-name = "3V3";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ vin-supply = <&v3v3>;
++ };
++
++ /* supplied by either debug board or PoE */
++ reg_5v2: regulator_5v2 {
++ compatible = "regulator-fixed";
++ regulator-name = "5V2";
++ regulator-min-microvolt = <5200000>;
++ regulator-max-microvolt = <5200000>;
++ regulator-always-on;
++ };
++};
++
++&ethernet0 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&ethernet0_rgmii_mc1pins_b>;
++ phy-mode = "rgmii-id";
++ phy-handle = <&ethphy>;
++ status = "okay";
++
++ mdio0 {
++ compatible = "snps,dwmac-mdio";
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ ethphy: ethernet-phy@3 { /* KSZ9031RN */
++ reg = <3>;
++ reset-gpios = <&gpiog 0 GPIO_ACTIVE_LOW>; /* ETH_RST# */
++ interrupt-parent = <&gpioa>;
++ interrupts = <6 IRQ_TYPE_EDGE_FALLING>; /* ETH_MDINT# */
++ rxc-skew-ps = <1860>;
++ txc-skew-ps = <1860>;
++ reset-assert-us = <10000>;
++ reset-deassert-us = <300>;
++ micrel,force-master;
++ };
++ };
++};
++
++&gpioz {
++ gpio-line-names = "HWID0", "HWID1", "HWID2", "HWID3", "", "",
++ "HWID4", "HWID5";
++};
++
++&gpu {
++ status = "okay";
++};
++
++&i2c5 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c5_mc1pins_b>;
++ clock-frequency = <400000>;
++ status = "okay";
++
++ touchscreen@38 {
++ compatible = "edt,edt-ft5x06";
++ interrupt-parent = <&gpiod>;
++ interrupts = <11 IRQ_TYPE_EDGE_FALLING>; /* TOUCH_INT# */
++ vcc-supply = <&reg_3v3>;
++ reg = <0x38>;
++ reset-gpios = <&gpiof 8 GPIO_ACTIVE_LOW>; /* TOUCH_RESET# */
++ touchscreen-size-x = <1792>;
++ touchscreen-size-y = <1024>;
++ wakeup-source;
++ };
++};
++
++&ltdc {
++ pinctrl-names = "default";
++ pinctrl-0 = <&ltdc_mc1pins_c>;
++ status = "okay";
++
++ port {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ ltdc_ep0_out: endpoint@0 {
++ reg = <0>;
++ remote-endpoint = <&panel_input>;
++ };
++ };
++};
++
++&pmic {
++ regulators {
++ buck4-supply = <&reg_5v2>; /* VIN */
++ ldo2-supply = <&reg_5v2>; /* PMIC_LDO25IN */
++ ldo5-supply = <&reg_5v2>; /* PMIC_LDO25IN */
++ boost-supply = <&reg_5v2>; /* PMIC_BSTIN */
++ pwr_sw2-supply = <&bst_out>; /* PMIC_SWIN */
++ };
++};
++
++&sdmmc1 {
++ pinctrl-names = "default", "opendrain";
++ pinctrl-0 = <&sdmmc1_b4_pins_a>;
++ pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
++ bus-width = <4>;
++ cd-gpios = <&gpioh 3 GPIO_ACTIVE_LOW>;
++ disable-wp;
++ no-1-8-v;
++ st,neg-edge;
++ vmmc-supply = <&reg_3v3>;
++ status = "okay";
++};
++
++&sdmmc1_b4_pins_a {
++ /*
++ * board lacks external pull-ups on SDMMC lines. Class 10 SD refuses to
++ * work, thus enable internal pull-ups.
++ */
++ pins1 {
++ /delete-property/ bias-disable;
++ bias-pull-up;
++ };
++ pins2 {
++ /delete-property/ bias-disable;
++ bias-pull-up;
++ };
++};
++
++&sdmmc2 {
++ pinctrl-names = "default", "opendrain";
++ pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_mc1pins_b>;
++ pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_mc1pins_b>;
++ bus-width = <8>;
++ no-1-8-v;
++ no-sd;
++ no-sdio;
++ non-removable;
++ st,neg-edge;
++ vmmc-supply = <&reg_3v3>;
++ status = "okay";
++};
++
++&timers3 {
++ status = "okay";
++
++ backlight_pwm: pwm {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pwm3_mc1pins_b>;
++ status = "okay";
++ };
++};
++
++&timers5 {
++ status = "okay";
++
++ leds_pwm: pwm {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pwm5_mc1pins_b>;
++ status = "okay";
++ };
++};
++
++&uart4 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart4_pins_a>;
++ status = "okay";
++};
++
++&pinctrl {
++ ethernet0_rgmii_mc1pins_b: mc1-rgmii-1 {
++ pins1 {
++ pinmux = <STM32_PINMUX('G', 5, AF11)>, /* ETH_RGMII_CLK125 */
++ <STM32_PINMUX('G', 4, AF11)>, /* ETH_RGMII_GTX_CLK */
++ <STM32_PINMUX('G', 13, AF11)>, /* ETH_RGMII_TXD0 */
++ <STM32_PINMUX('G', 14, AF11)>, /* ETH_RGMII_TXD1 */
++ <STM32_PINMUX('C', 2, AF11)>, /* ETH_RGMII_TXD2 */
++ <STM32_PINMUX('E', 2, AF11)>, /* ETH_RGMII_TXD3 */
++ <STM32_PINMUX('B', 11, AF11)>, /* ETH_RGMII_TX_CTL */
++ <STM32_PINMUX('C', 1, AF11)>; /* ETH_MDC */
++ bias-disable;
++ drive-push-pull;
++ slew-rate = <2>;
++ };
++ pins2 {
++ pinmux = <STM32_PINMUX('A', 2, AF11)>; /* ETH_MDIO */
++ bias-disable;
++ drive-push-pull;
++ slew-rate = <0>;
++ };
++ pins3 {
++ pinmux = <STM32_PINMUX('C', 4, AF11)>, /* ETH_RGMII_RXD0 */
++ <STM32_PINMUX('C', 5, AF11)>, /* ETH_RGMII_RXD1 */
++ <STM32_PINMUX('H', 6, AF11)>, /* ETH_RGMII_RXD2 */
++ <STM32_PINMUX('H', 7, AF11)>, /* ETH_RGMII_RXD3 */
++ <STM32_PINMUX('A', 1, AF11)>, /* ETH_RGMII_RX_CLK */
++ <STM32_PINMUX('A', 7, AF11)>; /* ETH_RGMII_RX_CTL */
++ bias-disable;
++ };
++ };
++
++ i2c5_mc1pins_b: mc1-i2c5-1 {
++ pins {
++ pinmux = <STM32_PINMUX('D', 0, AF4)>, /* I2C5_SCL */
++ <STM32_PINMUX('D', 1, AF4)>; /* I2C5_SDA */
++ bias-disable;
++ drive-open-drain;
++ slew-rate = <0>;
++ };
++ };
++
++ ltdc_mc1pins_c: mc1-ltdc-2 {
++ pins1 {
++ pinmux = <STM32_PINMUX('B', 1, AF9)>, /* LTDC_R6 */
++ <STM32_PINMUX('B', 9, AF14)>, /* LTDC_B7 */
++ <STM32_PINMUX('C', 0, AF14)>, /* LTDC_R5 */
++ <STM32_PINMUX('D', 3, AF14)>, /* LTDC_G7 */
++ <STM32_PINMUX('D', 6, AF14)>, /* LTDC_B2 */
++ <STM32_PINMUX('D', 10, AF14)>, /* LTDC_B3 */
++ <STM32_PINMUX('E', 11, AF14)>, /* LTDC_G3 */
++ <STM32_PINMUX('E', 12, AF14)>, /* LTDC_B4 */
++ <STM32_PINMUX('E', 13, AF14)>, /* LTDC_DE */
++ <STM32_PINMUX('E', 15, AF14)>, /* LTDC_R7 */
++ <STM32_PINMUX('H', 4, AF9)>, /* LTDC_G5 */
++ <STM32_PINMUX('H', 8, AF14)>, /* LTDC_R2 */
++ <STM32_PINMUX('H', 9, AF14)>, /* LTDC_R3 */
++ <STM32_PINMUX('H', 10, AF14)>, /* LTDC_R4 */
++ <STM32_PINMUX('H', 13, AF14)>, /* LTDC_G2 */
++ <STM32_PINMUX('H', 15, AF14)>, /* LTDC_G4 */
++ <STM32_PINMUX('I', 1, AF14)>, /* LTDC_G6 */
++ <STM32_PINMUX('I', 5, AF14)>, /* LTDC_B5 */
++ <STM32_PINMUX('I', 6, AF14)>, /* LTDC_B6 */
++ <STM32_PINMUX('I', 9, AF14)>, /* LTDC_VSYNC */
++ <STM32_PINMUX('I', 10, AF14)>; /* LTDC_HSYNC */
++ bias-disable;
++ drive-push-pull;
++ slew-rate = <0>;
++ };
++ pins2 {
++ pinmux = <STM32_PINMUX('E', 14, AF14)>; /* LTDC_CLK */
++ bias-disable;
++ drive-push-pull;
++ slew-rate = <1>;
++ };
++ };
++
++ pwm3_mc1pins_b: mc1-pwm3-1 {
++ pins {
++ pinmux = <STM32_PINMUX('B', 5, AF2)>; /* TIM3_CH2 */
++ bias-disable;
++ drive-push-pull;
++ slew-rate = <0>;
++ };
++ };
++
++ pwm5_mc1pins_b: mc1-pwm5-1 {
++ pins {
++ pinmux = <STM32_PINMUX('H', 11, AF2)>, /* TIM5_CH2 */
++ <STM32_PINMUX('H', 12, AF2)>, /* TIM5_CH3 */
++ <STM32_PINMUX('I', 0, AF2)>; /* TIM5_CH4 */
++ bias-disable;
++ drive-push-pull;
++ slew-rate = <0>;
++ };
++ };
++
++ sdmmc2_d47_mc1pins_b: mc1-sdmmc2-d47-1 {
++ pins {
++ pinmux = <STM32_PINMUX('A', 8, AF9)>, /* SDMMC2_D4 */
++ <STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */
++ <STM32_PINMUX('C', 6, AF10)>, /* SDMMC2_D6 */
++ <STM32_PINMUX('C', 7, AF10)>; /* SDMMC2_D7 */
++ slew-rate = <1>;
++ drive-push-pull;
++ bias-disable;
++ };
++ };
++
++};
+diff --git a/arch/arm/dts/stm32mp15xx-osd32.dtsi b/arch/arm/dts/stm32mp15xx-osd32.dtsi
+new file mode 100644
+index 000000000000..87508350339e
+--- /dev/null
++++ b/arch/arm/dts/stm32mp15xx-osd32.dtsi
+@@ -0,0 +1,229 @@
++/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause) */
++/*
++ * Copyright (C) 2020 STMicroelectronics - All Rights Reserved
++ * Copyright (C) 2020 Ahmad Fatoum, Pengutronix
++ */
++
++#include <arm/stm32mp15-pinctrl.dtsi>
++
++#include <dt-bindings/mfd/st,stpmic1.h>
++
++/ {
++ reserved-memory {
++ #address-cells = <1>;
++ #size-cells = <1>;
++ ranges;
++
++ mcuram2: mcuram2@10000000 {
++ compatible = "shared-dma-pool";
++ reg = <0x10000000 0x40000>;
++ no-map;
++ };
++
++ vdev0vring0: vdev0vring0@10040000 {
++ compatible = "shared-dma-pool";
++ reg = <0x10040000 0x1000>;
++ no-map;
++ };
++
++ vdev0vring1: vdev0vring1@10041000 {
++ compatible = "shared-dma-pool";
++ reg = <0x10041000 0x1000>;
++ no-map;
++ };
++
++ vdev0buffer: vdev0buffer@10042000 {
++ compatible = "shared-dma-pool";
++ reg = <0x10042000 0x4000>;
++ no-map;
++ };
++
++ mcuram: mcuram@30000000 {
++ compatible = "shared-dma-pool";
++ reg = <0x30000000 0x40000>;
++ no-map;
++ };
++
++ retram: retram@38000000 {
++ compatible = "shared-dma-pool";
++ reg = <0x38000000 0x10000>;
++ no-map;
++ };
++ };
++
++ reg_sip_eeprom: regulator_eeprom {
++ compatible = "regulator-fixed";
++ regulator-name = "sip_eeprom";
++ regulator-always-on;
++ };
++};
++
++&i2c4 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c4_pins_a>;
++ clock-frequency = <400000>;
++ i2c-scl-rising-time-ns = <185>;
++ i2c-scl-falling-time-ns = <20>;
++ status = "okay";
++
++ pmic: stpmic@33 {
++ compatible = "st,stpmic1";
++ reg = <0x33>;
++ interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
++ interrupt-controller;
++ #interrupt-cells = <2>;
++
++ regulators {
++ compatible = "st,stpmic1-regulators";
++
++ ldo1-supply = <&v3v3>;
++ ldo6-supply = <&v3v3>;
++ pwr_sw1-supply = <&bst_out>;
++
++ vddcore: buck1 {
++ regulator-name = "vddcore";
++ regulator-min-microvolt = <1200000>;
++ regulator-max-microvolt = <1350000>;
++ regulator-always-on;
++ regulator-initial-mode = <0>;
++ regulator-over-current-protection;
++ };
++
++ vdd_ddr: buck2 {
++ regulator-name = "vdd_ddr";
++ regulator-min-microvolt = <1350000>;
++ regulator-max-microvolt = <1350000>;
++ regulator-always-on;
++ regulator-initial-mode = <0>;
++ regulator-over-current-protection;
++ };
++
++ vdd: buck3 {
++ regulator-name = "vdd";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ st,mask-reset;
++ regulator-initial-mode = <0>;
++ regulator-over-current-protection;
++ };
++
++ v3v3: buck4 {
++ regulator-name = "v3v3";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ regulator-over-current-protection;
++ regulator-initial-mode = <0>;
++ };
++
++ v1v8_audio: ldo1 {
++ regulator-name = "v1v8_audio";
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <1800000>;
++ regulator-always-on;
++ interrupts = <IT_CURLIM_LDO1 0>;
++
++ };
++
++ v3v3_hdmi: ldo2 {
++ regulator-name = "v3v3_hdmi";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ interrupts = <IT_CURLIM_LDO2 0>;
++
++ };
++
++ vtt_ddr: ldo3 {
++ regulator-name = "vtt_ddr";
++ regulator-min-microvolt = <500000>;
++ regulator-max-microvolt = <750000>;
++ regulator-always-on;
++ regulator-over-current-protection;
++ };
++
++ vdd_usb: ldo4 {
++ regulator-name = "vdd_usb";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ interrupts = <IT_CURLIM_LDO4 0>;
++ };
++
++ vdda: ldo5 {
++ regulator-name = "vdda";
++ regulator-min-microvolt = <2900000>;
++ regulator-max-microvolt = <2900000>;
++ interrupts = <IT_CURLIM_LDO5 0>;
++ regulator-boot-on;
++ };
++
++ v1v2_hdmi: ldo6 {
++ regulator-name = "v1v2_hdmi";
++ regulator-min-microvolt = <1200000>;
++ regulator-max-microvolt = <1200000>;
++ regulator-always-on;
++ interrupts = <IT_CURLIM_LDO6 0>;
++
++ };
++
++ vref_ddr: vref_ddr {
++ regulator-name = "vref_ddr";
++ regulator-always-on;
++ regulator-over-current-protection;
++ };
++
++ bst_out: boost {
++ regulator-name = "bst_out";
++ interrupts = <IT_OCP_BOOST 0>;
++ };
++
++ vbus_otg: pwr_sw1 {
++ regulator-name = "vbus_otg";
++ interrupts = <IT_OCP_OTG 0>;
++ regulator-active-discharge;
++ };
++
++ vbus_sw: pwr_sw2 {
++ regulator-name = "vbus_sw";
++ interrupts = <IT_OCP_SWOUT 0>;
++ regulator-active-discharge;
++ };
++ };
++
++ onkey {
++ compatible = "st,stpmic1-onkey";
++ interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 1>;
++ interrupt-names = "onkey-falling", "onkey-rising";
++ };
++
++ pmic_watchdog: watchdog {
++ compatible = "st,stpmic1-wdt";
++ status = "disabled";
++ };
++ };
++
++ sip_eeprom: eeprom@50 {
++ compatible = "atmel,24c32";
++ vcc-supply = <&reg_sip_eeprom>;
++ reg = <0x50>;
++ };
++};
++
++&ipcc {
++ status = "okay";
++};
++
++&m4_rproc {
++ memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
++ <&vdev0vring1>, <&vdev0buffer>;
++ mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
++ mbox-names = "vq0", "vq1", "shutdown";
++ interrupt-parent = <&exti>;
++ interrupts = <68 1>;
++ status = "okay";
++};
++
++&rng1 {
++ status = "okay";
++};
+diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig
+index 9b55a3d21843..6e816ef9d1a4 100644
+--- a/arch/arm/mach-stm32mp/Kconfig
++++ b/arch/arm/mach-stm32mp/Kconfig
+@@ -12,4 +12,8 @@ config MACH_STM32MP157C_DK2
+ select ARCH_STM32MP157
+ bool "STM32MP157C-DK2 board"
+
++config MACH_LXA_MC1
++ select ARCH_STM32MP157
++ bool "Linux Automation MC-1 board"
++
+ endif
+diff --git a/images/Makefile.stm32mp b/images/Makefile.stm32mp
+index 910e029a5b66..38872c952571 100644
+--- a/images/Makefile.stm32mp
++++ b/images/Makefile.stm32mp
+@@ -17,3 +17,8 @@ pblb-$(CONFIG_MACH_STM32MP157C_DK2) += start_stm32mp157c_dk2
+ FILE_barebox-stm32mp157c-dk2.img = start_stm32mp157c_dk2.pblb.stm32
+ OPTS_start_stm32mp157c_dk2.pblb.stm32 = $(STM32MP1_OPTS)
+ image-$(CONFIG_MACH_STM32MP157C_DK2) += barebox-stm32mp157c-dk2.img
++
++pblb-$(CONFIG_MACH_LXA_MC1) += start_stm32mp157c_lxa_mc1
++FILE_barebox-stm32mp157c-lxa-mc1.img = start_stm32mp157c_lxa_mc1.pblb.stm32
++OPTS_start_stm32mp157c_lxa_mc1.pblb.stm32 = $(STM32MP1_OPTS)
++image-$(CONFIG_MACH_LXA_MC1) += barebox-stm32mp157c-lxa-mc1.img
diff --git a/configs/platform-v7a/patches/barebox-2020.04.0/0002-ARM-stm32mp-lxa-mc1-break-reg_3v3-dependency-on-PMIC.patch b/configs/platform-v7a/patches/barebox-2020.04.0/0002-ARM-stm32mp-lxa-mc1-break-reg_3v3-dependency-on-PMIC.patch
new file mode 100644
index 0000000..451bb7b
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2020.04.0/0002-ARM-stm32mp-lxa-mc1-break-reg_3v3-dependency-on-PMIC.patch
@@ -0,0 +1,60 @@
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Thu, 13 Feb 2020 11:10:44 +0100
+Subject: [PATCH] ARM: stm32mp: lxa-mc1: break reg_3v3 dependency on PMIC
+
+While the regulator is indeed powered by the PMIC, basically the whole
+system is, and it's always on. Linux doesn't handle this specially
+however and will defer SDMMC probe till after the PMIC is probed costing
+us some valuable boot time. Fix this up.
+
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ arch/arm/boards/lxa-mc1/board.c | 29 ++++++++++++++++++++++++++++-
+ 1 file changed, 28 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/boards/lxa-mc1/board.c b/arch/arm/boards/lxa-mc1/board.c
+index d36924fc2793..7f1f3ccd7e06 100644
+--- a/arch/arm/boards/lxa-mc1/board.c
++++ b/arch/arm/boards/lxa-mc1/board.c
+@@ -5,6 +5,28 @@
+ #include <asm/memory.h>
+ #include <mach/bbu.h>
+ #include <bootsource.h>
++#include <of.h>
++
++static int of_fixup_regulator_supply_disable(struct device_node *root, void *path)
++{
++ struct device_node *node;
++ struct property *prop;
++
++ node = of_find_node_by_path_from(root, path);
++ if (!node) {
++ pr_warn("fixup for %s failed: not found\n", (const char *)path);
++ return -ENOENT;
++ }
++
++ if (!of_property_read_bool(node, "regulator-always-on"))
++ return 0;
++
++ prop = of_find_property(node, "vin-supply", NULL);
++ if (prop)
++ of_delete_property(prop);
++
++ return 0;
++}
+
+ static int mc1_device_init(void)
+ {
+@@ -26,6 +48,11 @@ static int mc1_device_init(void)
+
+ barebox_set_hostname("lxa-mc1");
+
+- return 0;
++ /* The regulator is powered by the PMIC, but is always on as far as
++ * software is concerned. Break the reference to the PMIC, so the OS
++ * doesn't need to defer SDMMC/Ethernet peripherals till after the PMIC
++ * is up.
++ */
++ return of_register_fixup(of_fixup_regulator_supply_disable, "/regulator_3v3");
+ }
+ device_initcall(mc1_device_init);
diff --git a/configs/platform-v7a/patches/barebox-2020.04.0/0101-Release-2020.04.0-customers-pengutronix-distrokit-v7.patch b/configs/platform-v7a/patches/barebox-2020.04.0/0101-Release-2020.04.0-customers-pengutronix-distrokit-v7.patch
new file mode 100644
index 0000000..3f85f36
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2020.04.0/0101-Release-2020.04.0-customers-pengutronix-distrokit-v7.patch
@@ -0,0 +1,22 @@
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Fri, 24 Apr 2020 18:03:30 +0200
+Subject: [PATCH] Release
+ 2020.04.0/customers/pengutronix/distrokit-v7a/20200424-2
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index b3d67b0863ac..c51276a8b2af 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 2020
+ PATCHLEVEL = 04
+ SUBLEVEL = 0
+-EXTRAVERSION =
++EXTRAVERSION =-20200424-2
+ NAME = None
+
+ # *DOCUMENTATION*
diff --git a/configs/platform-v7a/patches/barebox-2020.04.0/series b/configs/platform-v7a/patches/barebox-2020.04.0/series
new file mode 100644
index 0000000..83b5861
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2020.04.0/series
@@ -0,0 +1,12 @@
+# umpf-base: v2020.04.0
+# umpf-name: 2020.04.0/customers/pengutronix/distrokit-v7a
+# umpf-version: 2020.04.0/customers/pengutronix/distrokit-v7a/20200424-2
+# umpf-topic: v2020.04.0/customers/lag/mc1
+# umpf-hashinfo: 2e41d9501ca57285e1e5e4750e6faba8df7addf2
+# umpf-topic-range: a999dc558770732d475e423060d54b93e36436ce..b379003cdf62913430a3ddad52a8b3a0ce87ab6f
+0001-ARM-stm32mp-add-Linux-Automation-MC-1-support.patch
+0002-ARM-stm32mp-lxa-mc1-break-reg_3v3-dependency-on-PMIC.patch
+# umpf-release: 2020.04.0/customers/pengutronix/distrokit-v7a/20200424-2
+# umpf-topic-range: b379003cdf62913430a3ddad52a8b3a0ce87ab6f..1db48ec1cf199fd9c9f17c8e3c243824ee4f5f5c
+0101-Release-2020.04.0-customers-pengutronix-distrokit-v7.patch
+# umpf-end
diff --git a/configs/platform-v7a/rules/barebox-stm32mp.make b/configs/platform-v7a/rules/barebox-stm32mp.make
index 35e3edc..82a3c31 100644
--- a/configs/platform-v7a/rules/barebox-stm32mp.make
+++ b/configs/platform-v7a/rules/barebox-stm32mp.make
@@ -43,7 +43,8 @@ BAREBOX_STM32MP_MAKE_ENV := $(BAREBOX_STM32MP_CONF_ENV)
BAREBOX_STM32MP_MAKE_OPT := $(BAREBOX_STM32MP_CONF_OPT)
BAREBOX_STM32MP_IMAGES := \
- images/barebox-stm32mp157c-dk2.img
+ images/barebox-stm32mp157c-dk2.img \
+ images/barebox-stm32mp157c-lxa-mc1.img
BAREBOX_STM32MP_IMAGES := $(addprefix $(BAREBOX_STM32MP_DIR)/,$(BAREBOX_STM32MP_IMAGES))