sunxi: implement board_detect for device-tree kernels

Signed-off-by: Daniel Golle <daniel@makrotopia.org>



git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44211 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Zoltan HERPAI 2015-01-30 00:11:30 +00:00
parent a03621e0b0
commit 523564cf44
1 changed files with 131 additions and 39 deletions

View File

@ -1,45 +1,137 @@
#!/bin/sh
# defaults
SUNXI_BOARD_NAME="generic sunxi"
SUNXI_BOARD_MODEL="generic sunxi"
SUNXI_ENV_DEV=/dev/mmcblk0
#Helper functions
get_cmdline_opt()
{
cat /proc/cmdline | awk -F$1= '{print $2}' | awk '{print $1}'
}
#Since fw_getenv doesn't work with blockdevs let's make a hack
uboot_getenv()
{
dd if=$SUNXI_ENV_DEV bs=1024 skip=544 count=128 2>dev/null |\strings|grep $1|cut -d"=" -f2
}
#Actual routines go below
sunxi_env_dev()
{
local dev
dev=`get_cmdline_opt root|cut -d"p" -f1`
SUNXI_ENV_DEV=$dev
echo "probing $dev for uboot env data"
}
SUNXI_BOARD_NAME="generic"
SUNXI_BOARD_MODEL="Generic sunxi board"
sunxi_board_detect() {
local board
local model
sunxi_env_dev
[ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"
board="`uboot_getenv wrt_board`"
model="`uboot_getenv wrt_model`"
if [ "$board" != "" ]; then
SUNXI_BOARD_NAME="$board"
fi
if [ "$model" != "" ]; then
SUNXI_BOARD_MODEL="$model"
fi
echo "$SUNXI_BOARD_NAME" > /tmp/sysinfo/board_name
echo "$SUNXI_BOARD_MODEL" > /tmp/sysinfo/model
echo "Detected $SUNXI_BOARD_NAME // $SUNXI_BOARD_MODEL"
local board
local model
[ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"
model="$( cat /proc/device-tree/model )"
case "$model" in
"Mele A1000")
board="a1000"
;;
"BA10 tvbox")
board="ba10-tvbox"
;;
"Cubietech Cubieboard")
board="cubieboard"
;;
"Miniand Hackberry")
board="hackberry"
;;
"INet-97F Rev 02")
board="inet97fv2"
;;
"PineRiver Mini X-Plus")
board="mini-xplus"
;;
"Olimex A10-OLinuXino-LIME")
board="olinuxino-lime"
;;
"LinkSprite pcDuino")
board="pcduino"
;;
"Olimex A10s-Olinuxino Micro")
board="olinuxino-micro"
;;
"R7 A10s hdmi tv-stick")
board="r7-tv-dongle"
;;
"HSG H702")
board="hsg-h702"
;;
"Olimex A13-Olinuxino")
board="olinuxino"
;;
"Olimex A13-Olinuxino Micro")
board="olinuxino-micro"
;;
"Allwinner A31 APP4 EVB1 Evaluation Board")
board="app4-evb1"
;;
"WITS A31 Colombus Evaluation Board")
board="colombus"
;;
"Merrii A31 Hummingbird")
board="hummingbird"
;;
"Mele M9 / A1000G Quad top set box")
board="m9"
;;
"LeMaker Banana Pi")
board="bananapi"
;;
"LeMaker Banana Pro")
board="bananapro"
;;
"Cubietech Cubieboard2")
board="cubieboard2"
;;
"Cubietech Cubietruck")
board="cubietruck"
;;
"Merrii A20 Hummingbird")
board="hummingbird"
;;
"I12 / Q5 / QT840A A20 tvbox")
board="i12-tvbox"
;;
"Olimex A20-OLinuXino-LIME")
board="olinuxino-lime"
;;
"Olimex A20-Olinuxino Micro")
board="olinuxino-micro"
;;
"LinkSprite pcDuino3")
board="pcduino3"
;;
"Ippo Q8H Dual Core Tablet (v5)")
board="ippo-q8h-v5"
;;
esac
if [ "$board" != "" ]; then
SUNXI_BOARD_NAME="$board"
fi
if [ "$model" != "" ]; then
SUNXI_BOARD_MODEL="$model"
fi
echo "$SUNXI_BOARD_NAME" > /tmp/sysinfo/board_name
echo "$SUNXI_BOARD_MODEL" > /tmp/sysinfo/model
echo "Detected $SUNXI_BOARD_NAME // $SUNXI_BOARD_MODEL"
}