[PATCH] ARM: IMX: Embedsky E9: Choose right environment when booting from SD or EMMC.
Andrey Panov
rockford at yandex.ru
Sat Jan 17 04:55:17 PST 2015
Signed-off-by: Andrey Panov <rockford at yandex.ru>
---
arch/arm/boards/embedsky-e9/board.c | 17 +++++++++++++++-
.../arm/boards/embedsky-e9/defaultenv-e9/boot/mmc3 | 4 ++--
arch/arm/dts/imx6q-embedsky-e9.dts | 23 +++++++++++++++++++++-
3 files changed, 40 insertions(+), 4 deletions(-)
diff --git a/arch/arm/boards/embedsky-e9/board.c b/arch/arm/boards/embedsky-e9/board.c
index 1e7e067..e8aac0c 100644
--- a/arch/arm/boards/embedsky-e9/board.c
+++ b/arch/arm/boards/embedsky-e9/board.c
@@ -40,6 +40,7 @@
#include <mach/spi.h>
#include <mach/usb.h>
#include <envfs.h>
+#include <bootsource.h>
#define PHY_ID_RTL8211E 0x001cc915
#define PHY_ID_MASK 0xffffffff
@@ -59,11 +60,25 @@ static int rtl8211e_phy_fixup(struct phy_device *dev)
static int e9_devices_init(void)
{
+ int ret;
+ char *environment_path;
+
if (!of_machine_is_compatible("embedsky,e9"))
return 0;
armlinux_set_architecture(3980);
- barebox_set_hostname("e9");
+
+ environment_path = asprintf("/chosen/environment-mmc%d",
+ bootsource_get_instance());
+
+ ret = of_device_enable_path(environment_path);
+
+ if (ret < 0)
+ pr_warn("Failed to enable environment partition '%s' (%d)\n",
+ environment_path, ret);
+
+ free(environment_path);
+
defaultenv_append_directory(defaultenv_e9);
return 0;
diff --git a/arch/arm/boards/embedsky-e9/defaultenv-e9/boot/mmc3 b/arch/arm/boards/embedsky-e9/defaultenv-e9/boot/mmc3
index 374eb1c..f6cb529 100644
--- a/arch/arm/boards/embedsky-e9/defaultenv-e9/boot/mmc3
+++ b/arch/arm/boards/embedsky-e9/defaultenv-e9/boot/mmc3
@@ -2,5 +2,5 @@
mount /dev/mmc3.0
-global.bootm.image=/mnt/mmc3.0/boot/zImage
-global.linux.bootargs.dyn.root="root=/dev/mmcblk1p1 rootwait"
+global.bootm.image=/mnt/mmc3.0/zImage
+global.linux.bootargs.dyn.root="root=/dev/mmcblk0p2 rootwait"
diff --git a/arch/arm/dts/imx6q-embedsky-e9.dts b/arch/arm/dts/imx6q-embedsky-e9.dts
index d8a606a..53665cf 100644
--- a/arch/arm/dts/imx6q-embedsky-e9.dts
+++ b/arch/arm/dts/imx6q-embedsky-e9.dts
@@ -19,9 +19,16 @@
chosen {
linux,stdout-path = &uart4;
- environment at 0 {
+ environment-mmc1 {
compatible = "barebox,environment";
device-path = &usdhc2, "partname:barebox-environment";
+ status = "disabled";
+ };
+
+ environment-mmc3 {
+ compatible = "barebox,environment";
+ device-path = &usdhc4, "partname:barebox-environment";
+ status = "disabled";
};
};
@@ -40,3 +47,17 @@
reg = <0x80000 0x80000>;
};
};
+
+&usdhc4 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition at 0 {
+ label = "barebox";
+ reg = <0x0 0x80000>;
+ };
+ partition at 1 {
+ label = "barebox-environment";
+ reg = <0x80000 0x80000>;
+ };
+};
--
2.1.4
More information about the barebox
mailing list