[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#631396: flash-kernel: Please add support for Toshiba AC100



Hello,

On Thu, Jun 23, 2011 at 05:01:19PM +0200, Julian Andres Klode wrote:
> Package: flash-kernel
> Severity: wishlist

Updated version after some IRC comments, for review:


From 09e85bde46613216656c1cb9ea0c6eebb530701f Mon Sep 17 00:00:00 2001
From: Julian Andres Klode <jak@debian.org>
Date: Thu, 23 Jun 2011 17:52:47 +0200
Subject: [PATCH] flash-kernel: Add support for Toshiba AC100 and Android boot

Introduce support for Android devices such as the Toshiba
AC100 that boot from a special Android boot partition
located on an internal eMMC.

Status: early patch with known issues
  - bootimg.cfg is located in /boot
  - functions write to global variables
  - patch is completely untested

Signed-off-by: Julian Andres Klode <jak@debian.org>
---
 flash-kernel |   66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/flash-kernel b/flash-kernel
index bf5168e..487738b 100755
--- a/flash-kernel
+++ b/flash-kernel
@@ -251,6 +251,38 @@ nslu2_swap() {
 	fi
 }
 
+android_find_bootpart() {
+	for dev in $(ls ${ANDROID_MMC}?? 2>/dev/null); do
+		if abootimg -i $dev >/dev/null 2>&1; then
+			size=$(abootimg -i $dev |grep "image size"|cut -d ' ' -f5)
+			if [ $size -gt 5242880 ]; then
+				ANDROID_IMG=$dev
+				ANDROID_SIZE=$size
+				return 0
+			fi
+		fi
+	done
+	return 1
+}
+
+android_build_bootimage() {
+	if [ -e /boot/bootimg.cfg ]; then
+		abootimg --create $TMPIMAGE -f /boot/bootimg.cfg -k $kfile \
+			-r $ifile >/dev/null 2>&1 || return 1
+		imagesize=$(wc -c "$TMPIMAGE" | awk '{print $1}')
+		check_size "Bootimage" $imagesize $ANDROID_SIZE
+	else
+		printf "Could not find /boot/bootimg.cfg."
+		return 1
+	fi
+}
+
+android_write_bootimage() {
+	printf "Writing boot image to $ANDROID_IMG ... "
+	dd if=$TMPIMAGE of=$ANDROID_IMG >/dev/null 2>&1 || return 1
+	echo "done." >&2
+}
+
 # somewhat RFC2822 based, but case sensitive, not tolerant to spaces etc.
 MACHINE_DB="
 Machine: Buffalo Linkstation LiveV3 (LS-CHL)
@@ -408,6 +440,9 @@ Kernel-Flavors: iop32x
 Machine-Id: 1101
 Mtd-Kernel: kernel
 Mtd-Initrd: ramdisk
+
+Machine: Toshiba AC100 / Dynabook AZ
+Boot-Type: Android
 "
 
 main() {
@@ -476,6 +511,7 @@ umaddr="$(get_machine_field "$machine" "U-Boot-Multi-Address")" || :
 boot_kernel_path="$(get_machine_field "$machine" "Boot-Kernel-Path")" || :
 boot_initrd_path="$(get_machine_field "$machine" "Boot-Initrd-Path")" || :
 boot_multi_path="$(get_machine_field "$machine" "Boot-Multi-Path")" || :
+boot_type="$(get_machine_field "$machine" "Boot-Type")" || :
 
 if [ -n "$mtd_kernel" ] || [ -n "$mtd_initrd" ]; then
 	if [ ! -e "$PROC_MTD" ]; then
@@ -522,6 +558,36 @@ cleanup_tmpdir() {
 trap cleanup_tmpdir EXIT HUP INT QUIT ILL KILL SEGV PIPE TERM
 tmpdir="$(mktemp -dt "$self.XXXXXXXX")"
 
+
+case "$boot_type" in
+	"Android")
+		ANDROID_IMG=""
+		ANDROID_SIZE=""
+		ANDROID_MMC="/dev/mmcblk0"
+
+		TMPIMAGE=$(tempfile)
+		CONFIG=""
+
+		if ! android_find_bootpart; then
+			rm -rf $TMPIMAGE
+			error "Could not find boot image partition on $ANDROID_MMC."
+		fi
+
+		if ! android_build_bootimage; then
+			rm -rf $TMPIMAGE
+			error "Could not create temporary boot image."
+		fi
+
+		if ! android_write_bootimage; then
+			rm -rf $TMPIMAGE
+			error "Can not flash to $ANDROID_IMG"
+		fi
+
+		rm -rf $TMPIMAGE
+	;;
+esac
+
+
 case "$machine" in
 	"Buffalo Linkstation LiveV3 (LS-CHL)" | "Buffalo Linkstation Mini" | "Buffalo Linkstation Pro/Live" | "Buffalo/Revogear Kurobox Pro" | "D-Link DNS-323" | "HP Media Vault mv2120"  | "HP t5325 Thin Client" | "Marvell GuruPlug Reference Board" | "Marvell OpenRD Base Board" | "Marvell OpenRD Client Board" | "Marvell OpenRD Ultimate Board" | "Marvell SheevaPlug Reference Board" | "Marvell eSATA SheevaPlug Reference Board" | "QNAP TS-109/TS-209" | "QNAP TS-119/TS-219" | "QNAP TS-409" | "QNAP TS-41x" | "Seagate FreeAgent DockStar")
 		kernel="$kfile"
-- 
1.7.5.4

-- 
 Héctor Orón

"Our Sun unleashes tremendous flares expelling hot gas into the Solar System, which one day will disconnect us."

-- Day DVB-T stop working nicely
Video flare: http://antwrp.gsfc.nasa.gov/apod/ap100510.html

Attachment: signature.asc
Description: Digital signature


Reply to: