summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRobert Jarzmik <robert.jarzmik@free.fr>2014-01-18 12:48:08 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2014-01-20 16:36:56 +0100
commit24b22cf0e865860ba2423a019c071346fdbb42f2 (patch)
treea7649a1938b5f10bf34ecfa69eeba3dfbad9ea52 /arch
parent924e5ba7d4c9d5d4ccc0c2f7c8cb69372f9ecf43 (diff)
downloadbarebox-24b22cf0e865860ba2423a019c071346fdbb42f2.tar.gz
barebox-24b22cf0e865860ba2423a019c071346fdbb42f2.tar.xz
ARM: mioa701 change MTD layout
As barebox has grown up in size, because UBI support is now embedded in barebox, and because the IPL is at least rewritten to be fully GPL, modify mioa701 support to take into account this new layout : - IPL is version 0.5 - MTD layout is fully changed - the boot sequence is rewritten : - the volume up button triggers console mode - upon PowerOn or Sleep exit, power key is debounced and if not help board is powered off back - sdcard environment override can now stop the autoboot sequence - mtd environment override can now stop the autoboot sequence Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boards/mioa701/env/bin/barebox_update7
-rw-r--r--arch/arm/boards/mioa701/env/bin/console_mode6
-rw-r--r--arch/arm/boards/mioa701/env/bin/init55
-rw-r--r--arch/arm/boards/mioa701/env/bin/sdcard_override3
-rw-r--r--arch/arm/boards/mioa701/env/config3
-rw-r--r--arch/arm/boards/mioa701/env/data/dps1.raw.gzbin1239 -> 1324 bytes
6 files changed, 62 insertions, 12 deletions
diff --git a/arch/arm/boards/mioa701/env/bin/barebox_update b/arch/arm/boards/mioa701/env/bin/barebox_update
index 10237709cf..632c20926a 100644
--- a/arch/arm/boards/mioa701/env/bin/barebox_update
+++ b/arch/arm/boards/mioa701/env/bin/barebox_update
@@ -1,10 +1,11 @@
#!/bin/sh
# Page+OOB specific partitions
-addpart /dev/mtd0.raw 1081344@3649536(msipl)
-addpart /dev/mtd0.raw 270336@3649536(barebox)
+addpart /dev/mtd0.raw 2162688@405504(barebox)
if [ -r /barebox.BIP0 ]; then
+ dps1_unlock
erase /dev/mtd0.raw.barebox
- cp -v /barebox.BIP0 /dev/mtd0.raw.barebox
+ cp -v /barebox.BIPO /dev/mtd0.raw.barebox
+ dps1_unlock
fi
diff --git a/arch/arm/boards/mioa701/env/bin/console_mode b/arch/arm/boards/mioa701/env/bin/console_mode
new file mode 100644
index 0000000000..aa06e920b4
--- /dev/null
+++ b/arch/arm/boards/mioa701/env/bin/console_mode
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Script to run barebox in console mode
+
+splash /dev/mtd0.barebox-logo2
+echo
+echo "Welcome to barebox console"
diff --git a/arch/arm/boards/mioa701/env/bin/init b/arch/arm/boards/mioa701/env/bin/init
index ab5d84d68b..e914eae32f 100644
--- a/arch/arm/boards/mioa701/env/bin/init
+++ b/arch/arm/boards/mioa701/env/bin/init
@@ -7,13 +7,55 @@ export PATH
addpart /dev/mtd0 $mtdparts
usbserial -s "Mio A701 usb gadget"
-led keyboard 0
-sdcard_override
+gpio_get_value 22
+is_usb_connected=$?
+
+gpio_get_value 93
+is_vol_up=$?
fb0.enable=1
+# Phase1: Handle Vol-Up key case : drop immediately to console
+if [ $is_vol_up != 0 ]; then
+ console_mode
+ exit
+fi
+
+# Phase2: Handle Power-On case : debounce PowerUp key or Halt
+if [ $global.system.reset = "POR" -o $global.system.reset = "WKE" ]; then
+ powerup_released=0
+
+ gpio_get_value 0
+ is_power_up=$?
+ if [ $is_power_up = 0 ]; then
+ powerup_released=1
+ fi
+ msleep 500
+
+ gpio_get_value 0
+ is_power_up=$?
+ if [ $is_power_up = 0 ]; then
+ powerup_released=1
+ fi
+
+ if [ $powerup_released = 1 ]; then
+ echo "Power button not held, halting"
+ poweroff
+ fi
+fi
+
+# Phase3: display logo
+led keyboard 0
splash /dev/mtd0.barebox-logo
+# Phase4: check for SD Card override
+sdcard_override
+if [ $? = 0 ]; then
+ console_mode
+ exit
+fi
+
+# Phase5: check for MTD override
mtd_env_override
if [ $? = 0 ]; then
echo "Switching to custom environment"
@@ -21,20 +63,17 @@ if [ $? = 0 ]; then
exit
fi
+# Phase6: check for user interrupting auto-boot
echo "No custom environment found"
-
-gpio_get_value 22
-is_usb_connected=$?
if [ $is_usb_connected != 0 ]; then
echo -n "Hit any key to stop autoboot: "
timeout -a $autoboot_timeout
if [ $? != 0 ]; then
- echo
- echo "Welcome to barebox console"
+ console_mode
exit
fi
fi
+# Phase7: auto-boot linux kernel
echo "Booting linux kernel on docg3 chip ..."
-bootargs="$bootargs mtdparts=docg3.0:$mtdparts ubi.mtd=4 rootfstype=ubifs root=ubi0:linux_root ro"
bootm /dev/mtd0.kernel
diff --git a/arch/arm/boards/mioa701/env/bin/sdcard_override b/arch/arm/boards/mioa701/env/bin/sdcard_override
index ab83534135..7003fa967e 100644
--- a/arch/arm/boards/mioa701/env/bin/sdcard_override
+++ b/arch/arm/boards/mioa701/env/bin/sdcard_override
@@ -12,5 +12,8 @@ if [ $mci0.probe = 1 ]; then
if [ -f /sdcard/barebox.env ]; then
loadenv /sdcard/barebox.env /env.sd
/env.sd/bin/init
+ exit
fi
fi
+trigger_error_return_code
+exit
diff --git a/arch/arm/boards/mioa701/env/config b/arch/arm/boards/mioa701/env/config
index 2cc44fd7f9..92014511b4 100644
--- a/arch/arm/boards/mioa701/env/config
+++ b/arch/arm/boards/mioa701/env/config
@@ -2,4 +2,5 @@
autoboot_timeout=3
-mtdparts="256k@3456k(barebox)ro,256k(barebox-logo),128k(barebox-env),4M(kernel),-(root)"
+mtdparts="2048k@384k(barebox)ro,256k(barebox-logo),256k(barebox-logo2),128k(barebox-env),5120k(kernel),-(root)"
+bootargs="$bootargs mtdparts=docg3.0:$mtdparts ubi.mtd=5 rootfstype=ubifs root=ubi0:linux_root ro"
diff --git a/arch/arm/boards/mioa701/env/data/dps1.raw.gz b/arch/arm/boards/mioa701/env/data/dps1.raw.gz
index 93112bfca1..9857c83e07 100644
--- a/arch/arm/boards/mioa701/env/data/dps1.raw.gz
+++ b/arch/arm/boards/mioa701/env/data/dps1.raw.gz
Binary files differ