#!/bin/bash # This script must be run only to set up device tree on new devices # as part of manufacturing process when EEPROMs are empty DEVTREE="/sys/kernel/config/device-tree/overlays/" install_all_dtbo() { 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 } load_overlay() { if ! pushd /lib/dtoverlays ; then echo "Can't find device tree overlays" return 1 fi # Detect PCA9557 I2C GPIO at 0x19 on I2C bus 1 RES_="$(/usr/sbin/i2cdetect -r -y 1 0x19 0x19)" if [[ "$RES_" =~ .*(^10:[[:blank:]]+19).* ]]; then if ! pushd MTCDT3AC/0.1 ; then echo "Can't find MTCDT3AC/0.1 direcotry" popd return 1 fi echo "Loading device tree overlay for MTCDT3AC v 0.1" install_all_dtbo popd fi # Detect MCP23008 I2C GPIO at 0x21 on I2C bus 1 RES_="$(/usr/sbin/i2cdetect -r -y 1 0x21 0x21)" if [[ "$RES_" =~ .*(^20:[[:blank:]]+21).* ]]; then if ! pushd MTCDT3AC/0.0 ; then echo "Can't find MTCDT3AC/0.0 direcotry" popd return 1 fi echo "Loading device tree overlay for MTCDT3AC v 0.0" install_all_dtbo popd fi popd } case $1 in start) echo "Loading device tree overlay" load_overlay ;; stop) echo "Not implemented" ;; *) echo "Usage: $0 {start|stop}" exit 2 ;; esac