From d4f6f169b86d36dbb6f1df829fac1aecfb27d630 Mon Sep 17 00:00:00 2001 From: Zoltan Herpai Date: Fri, 30 Jan 2015 00:11:30 +0000 Subject: sunxi: implement board_detect for device-tree kernels Signed-off-by: Daniel Golle SVN-Revision: 44211 --- target/linux/sunxi/base-files/lib/sunxi.sh | 168 ++++++++++++++++++++++------- 1 file changed, 130 insertions(+), 38 deletions(-) (limited to 'target/linux/sunxi') diff --git a/target/linux/sunxi/base-files/lib/sunxi.sh b/target/linux/sunxi/base-files/lib/sunxi.sh index adf9f8462c..b0a38740a4 100644 --- a/target/linux/sunxi/base-files/lib/sunxi.sh +++ b/target/linux/sunxi/base-files/lib/sunxi.sh @@ -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}' -} +SUNXI_BOARD_NAME="generic" +SUNXI_BOARD_MODEL="Generic sunxi board" -#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 -} +sunxi_board_detect() { + local board + local model -#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" -} + [ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/" -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" + 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" } -- cgit v1.2.3