From 5c53f99e443f06cd10a90488c42ffea630d3ebd3 Mon Sep 17 00:00:00 2001 From: Vyacheslav Pedash Date: Fri, 2 Sep 2022 15:25:44 +0300 Subject: MTX-4590 MTCDT3AC: Probe I2C GPIO to load device tree overlay on SD manufacturing image --- .../multitech/mt-dt-overlay/init-mtcpmhs-sdmfg | 69 ++++++++++++++++++++++ recipes-bsp/multitech/mt-dt-overlay_1.2.9.bb | 15 +++-- 2 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 recipes-bsp/multitech/mt-dt-overlay/init-mtcpmhs-sdmfg diff --git a/recipes-bsp/multitech/mt-dt-overlay/init-mtcpmhs-sdmfg b/recipes-bsp/multitech/mt-dt-overlay/init-mtcpmhs-sdmfg new file mode 100644 index 0000000..2a0e03d --- /dev/null +++ b/recipes-bsp/multitech/mt-dt-overlay/init-mtcpmhs-sdmfg @@ -0,0 +1,69 @@ +#!/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 MTCDT3/0.2 ; then + echo "Can't find MTCDT3/0.2 direcotry" + popd + return 1 + fi + echo "Loading device tree overlay for MTCDT3 v 0.2" + 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 MTCDT3/0.0 ; then + echo "Can't find MTCDT3/0.0 direcotry" + popd + return 1 + fi + echo "Loading device tree overlay for MTCDT3 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 diff --git a/recipes-bsp/multitech/mt-dt-overlay_1.2.9.bb b/recipes-bsp/multitech/mt-dt-overlay_1.2.9.bb index 02e3d2d..356357d 100644 --- a/recipes-bsp/multitech/mt-dt-overlay_1.2.9.bb +++ b/recipes-bsp/multitech/mt-dt-overlay_1.2.9.bb @@ -24,12 +24,13 @@ COMPATIBLE_MACHINE = "(mtcap|mtrv1|mtcdt|mtcpmhs)" dt_dir = "/lib/dtoverlays" -PR = "r1" +PR = "r2" SRC_URI = " \ - git://git.multitech.net/cgit/mt-dt-overlay.git;protocol=https \ - file://init-default \ - file://init-mtcpmhs \ + git://git.multitech.net/cgit/mt-dt-overlay.git;protocol=https \ + file://init-default \ + file://init-mtcpmhs \ + file://init-mtcpmhs-sdmfg \ " SRCREV = "${PV}" @@ -63,7 +64,11 @@ addtask install after do_compile do_install () { install -d ${D}/${sysconfdir}/init.d if [ ${MACHINE} = "mtcpmhs" ] ; then - install -m 0755 ${WORKDIR}/init-mtcpmhs ${D}/${sysconfdir}/init.d/${PN} + if [ "${SDMFG}" = "" ]; then + install -m 0755 ${WORKDIR}/init-mtcpmhs ${D}/${sysconfdir}/init.d/${PN} + else + install -m 0755 ${WORKDIR}/init-mtcpmhs-sdmfg ${D}/${sysconfdir}/init.d/${PN} + fi else install -m 0755 ${WORKDIR}/init-default ${D}/${sysconfdir}/init.d/${PN} fi -- cgit v1.2.3