#!/bin/bash # This script must be run after mts-io # to read the hw-version, # but before anything else needs the # device tree. sysdir=/sys/devices/platform/mts-io i2c=/sys/bus/i2c/devices/ eepromPath="/sys/bus/i2c/devices/0-0056/eeprom" DEVTREE="/sys/kernel/config/device-tree/overlays/" SYSFS="/usr/sbin/mts-io-sysfs" I2CDIR="/sys/bus/i2c/devices" AP1_EEPROM=$I2CDIR"/1-0050/eeprom" AP2_EEPROM=$I2CDIR"/1-0052/eeprom" install_dtbo_dir() { if ! [[ -d ${DEVTREE} ]] ; then mount configfs fi if ([ -f "$AP1_EEPROM" ] && grep -q GPIOB "$AP1_EEPROM") || ([ -f "$AP2_EEPROM" ] && grep -q GPIOB "$AP2_EEPROM"); then for f in *gpiob.dtbo ; do if ! [[ -f $f ]] ; then continue fi # f2 is the extracted device name base=$(basename $f .dtbo) /bin/mkdir ${DEVTREE}/$base || true /bin/cat $f >${DEVTREE}/$base/dtbo done modprobe mt_ac_gpiob else for f in *.dtbo ; do if ! [[ -f $f ]] ; then continue fi # f2 is the extracted device name base=$(basename $f .dtbo) /bin/mkdir ${DEVTREE}/$base || true /bin/cat $f >${DEVTREE}/$base/dtbo done fi } # Device tree format: # [mach] # [rev] # [file1] [file2] [file3] capability # [flag] # [file1] [file2] [file3] setdevtree() { hwlin=$(mts-id-eeprom --in-file "$eepromPath" 2>/dev/null | grep '^hw-version:') [[ $hwlin =~ hw-version:[[:space:]]*\"([^\"]+) ]] hw=${BASH_REMATCH[1]} mach=${hw/%-*} rev=${hw/#*-/} echo mach is $mach echo rev is $rev capd="${sysdir}/capability" # add device tree overlays, if they exist. [[ -d /lib/dtoverlays ]] || return 1 ( cd /lib/dtoverlays cd ${mach} best="-1" for d in * ; do if awk "BEGIN{if ($d <= $rev)exit 1}" ; then continue fi if awk "BEGIN{if ($d < $best)exit 1}" ; then best="$d" fi done if [[ $best == -1 ]] ; then # No overlay found exit 0 fi cd $best install_dtbo_dir if [[ -d capability ]] ; then cd capability for d in * ; do if [[ -f ${capd}/$d ]] ; then if (($(cat ${capd}/$d) == 1)) ; then echo "This device has capabilithy $d" ( cd $d install_dtbo_dir ) fi # Install dtbo files for a capability fi # Does a given capability flag exist in the mts-io platform done # Loop over all capabilities for this machine and version overlays fi # Is there a capability directory to be installed? ) } case $1 in start) /usr/bin/logger -t "mts-io" -p daemon.info -s "Loading device tree overlay" setdevtree ;; stop) echo "Not implemented" ;; *) echo "Usage: $0 {start|stop}" exit 2 ;; esac