From 918e6be82f7e2aa003a56b992224eee2dcfbe9ea Mon Sep 17 00:00:00 2001 From: Viktor <35473052+viktorxda@users.noreply.github.com> Date: Thu, 11 Apr 2024 16:01:28 +0200 Subject: [PATCH] Update Update ssc338q_fpv_openipc --- .github/workflows/master.yml | 6 +- .../sigmastar-osdrv-infinity6e/Config.in | 4 - .../files/script/load_sigmastar | 69 ++++++++++++++++++ .../files/sensor/kmod/sensor_config.ko | Bin 5960 -> 0 bytes .../files/sensor/kmod/sensor_imx307_mipi.ko | Bin 22800 -> 0 bytes .../files/sensor/kmod/sensor_imx415_mipi.ko | Bin 27860 -> 26740 bytes .../sigmastar-osdrv-infinity6e.mk | 32 -------- .../general/scripts/excludes/ssc338q_fpv.list | 2 +- 8 files changed, 75 insertions(+), 38 deletions(-) delete mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/Config.in create mode 100755 devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/files/script/load_sigmastar delete mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/files/sensor/kmod/sensor_config.ko delete mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/files/sensor/kmod/sensor_imx307_mipi.ko delete mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/sigmastar-osdrv-infinity6e.mk diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 7c01890..c462884 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -126,8 +126,12 @@ jobs: echo NANDFW=${GITHUB_WORKSPACE}/${NAME}-nand.tgz >> ${GITHUB_ENV} fi + if [ -z ${NORFW} ] && [ -z ${NANDFW} ]; then + exit 1 + fi + - name: Upload firmware - if: env.NORFW + if: env.NORFW || env.NANDFW uses: softprops/action-gh-release@v2 with: tag_name: latest diff --git a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/Config.in b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/Config.in deleted file mode 100644 index 2689297..0000000 --- a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/Config.in +++ /dev/null @@ -1,4 +0,0 @@ -config BR2_PACKAGE_SIGMASTAR_OSDRV_INFINITY6E - bool "sigmastar-osdrv-infinity6e" - help - Sigmastar infinity6e kernel modules diff --git a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/files/script/load_sigmastar b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/files/script/load_sigmastar new file mode 100755 index 0000000..51e7792 --- /dev/null +++ b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/files/script/load_sigmastar @@ -0,0 +1,69 @@ +#!/bin/sh +# +# OpenIPC.org | 2024 +# + +PATH_MODULE=/lib/modules/4.9.84/sigmastar +PATH_SENSOR=$PATH_MODULE/sensor + +detect_sensor() { + insmod $PATH_SENSOR/sensor_config.ko + if [ -e /dev/srcfg ]; then + echo srcfg 0 1 0 0 0 0 > /dev/srcfg + rmmod sensor_config + fi + SENSOR=$(ipcinfo -s) +} + +set_sensor() { + case $SENSOR in + imx307|imx335|imx347|imx415) + insmod $PATH_SENSOR/sensor_${SENSOR}_mipi.ko chmap=1 + ;; + *) + echo -e "\n\e[1;31mUNSUPPORTED sensor - $SENSOR\e[0m\n" | logger -s -t OpenIPC + ;; + esac +} + +insert_ko() { + insmod $PATH_MODULE/mhal.ko + insmod $PATH_MODULE/mi_common.ko + insmod $PATH_MODULE/mi_sys.ko cmdQBufSize=768 logBufSize=256 + insmod $PATH_MODULE/mi_rgn.ko + insmod $PATH_MODULE/mi_ldc.ko + insmod $PATH_MODULE/mi_ai.ko + insmod $PATH_MODULE/mi_ao.ko + insmod $PATH_MODULE/mi_mipitx.ko + insmod $PATH_MODULE/mi_sensor.ko + insmod $PATH_MODULE/mi_shadow.ko + insmod $PATH_MODULE/mi_divp.ko + insmod $PATH_MODULE/mi_vif.ko + insmod $PATH_MODULE/mi_vpe.ko + insmod $PATH_MODULE/mi_venc.ko fw_path=/etc/firmware/chagall.bin + + MAJOR=$(awk '$2=="mi_poll" {print $1}' /proc/devices) + mknod /dev/mi_poll c "$MAJOR" 0 + echo isproot /etc/firmware > /dev/ispmid +} + +if [ ! -e /sys/module/mhal ]; then + insert_ko +fi + +echo -e "\n\e[1;33mAutodetect sensor\e[0m\n" | logger -s -t OpenIPC +detect_sensor + +if [ -z "$SENSOR" ]; then + echo -e "\n\e[1;31mSensor parameter MISSING\e[0m\n" | logger -s -t OpenIPC + exit 1 +else + echo -e "\n\e[1;32mSensor assigned - $SENSOR\e[0m\n" | logger -s -t OpenIPC + SENSOR_MODULE=$(ls /sys/module | grep $SENSOR) + if [ -n "$SENSOR_MODULE" ]; then + rmmod $SENSOR_MODULE + fi + set_sensor +fi + +exit 0 diff --git a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/files/sensor/kmod/sensor_config.ko b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/sigmastar-osdrv-infinity6e/files/sensor/kmod/sensor_config.ko deleted file mode 100644 index a5ebf8a7b428e4d35ef44fda65fea446a24e7051..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5960 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