From 59b062659aecf322c16c8b212b6f49e9838ed07c Mon Sep 17 00:00:00 2001
From: Igor Zalatov <flyrouter@gmail.com>
Date: Mon, 26 Apr 2021 22:15:50 +0300
Subject: [PATCH] Add sigmastar-osdrv-ssc335

---
 br-ext-chip-sigmastar/Config.in               |   2 +-
 .../infinity6b0/kernel/ssc335.generic.config  |   2 +-
 .../unknown_unknown_ssc335_openipc_defconfig  |   2 +-
 br-ext-chip-sigmastar/external.mk             |   2 +-
 .../package/sigmastar-osdrv-ssc335/Config.in  |   6 +
 .../files/script/debug_level.sh               |  69 ++++++++
 .../files/script/load_modules.sh              | 159 ++++++++++++++++++
 .../sigmastar-osdrv-ssc335.mk                 |  56 ++++++
 8 files changed, 294 insertions(+), 4 deletions(-)
 create mode 100644 br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/Config.in
 create mode 100755 br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/debug_level.sh
 create mode 100755 br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_modules.sh
 create mode 100644 br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk

diff --git a/br-ext-chip-sigmastar/Config.in b/br-ext-chip-sigmastar/Config.in
index d67506b4..0f30989f 100644
--- a/br-ext-chip-sigmastar/Config.in
+++ b/br-ext-chip-sigmastar/Config.in
@@ -1,6 +1,6 @@
 source "$BR2_EXTERNAL_SIGMASTAR_PATH/linux/Config.ext.in"
 source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/sigmastar_patcher/Config.in"
-#source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/sigmastar-osdrv-ssc335/Config.in"
+source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/sigmastar-osdrv-ssc335/Config.in"
 source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/fwprintenv-ng/Config.in"
 source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/ipctool/Config.in"
 source "$BR2_EXTERNAL_SIGMASTAR_PATH/package/libevent-mini/Config.in"
diff --git a/br-ext-chip-sigmastar/board/infinity6b0/kernel/ssc335.generic.config b/br-ext-chip-sigmastar/board/infinity6b0/kernel/ssc335.generic.config
index 551135a2..c0ae0e95 100644
--- a/br-ext-chip-sigmastar/board/infinity6b0/kernel/ssc335.generic.config
+++ b/br-ext-chip-sigmastar/board/infinity6b0/kernel/ssc335.generic.config
@@ -1988,7 +1988,7 @@ CONFIG_AUTO_DETECT_WRITE=y
 CONFIG_MS_SPI_INFINITY=y
 # CONFIG_CAM_CLK is not set
 # CONFIG_MS_EMMC is not set
-# CONFIG_MS_SDMMC is not set
+CONFIG_MS_SDMMC=y
 CONFIG_MS_EMAC=y
 # CONFIG_EMAC_SUPPLY_RNG is not set
 # CONFIG_MSTAR_HW_TX_CHECKSUM is not set
diff --git a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_openipc_defconfig b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_openipc_defconfig
index 12d7341a..ea4b77d5 100644
--- a/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_openipc_defconfig
+++ b/br-ext-chip-sigmastar/configs/unknown_unknown_ssc335_openipc_defconfig
@@ -46,7 +46,7 @@ BR2_GLOBAL_PATCH_DIR="$(TOPDIR)/../general/package/all-patches"
 BR2_PACKAGE_BUSYBOX_CONFIG="$(TOPDIR)/../general/package/busybox/busybox.config"
 BR2_PACKAGE_DROPBEAR=y
 BR2_PACKAGE_FWPRINTENV_NG=y
-# BR2_PACKAGE_SIGMASTAR_OSDRV_SSC335 is not set
+BR2_PACKAGE_SIGMASTAR_OSDRV_SSC335=y
 BR2_PACKAGE_IPCTOOL=y
 BR2_PACKAGE_JSON_C=y
 BR2_PACKAGE_LAME=y
diff --git a/br-ext-chip-sigmastar/external.mk b/br-ext-chip-sigmastar/external.mk
index 22bcc1d4..02a5cce8 100644
--- a/br-ext-chip-sigmastar/external.mk
+++ b/br-ext-chip-sigmastar/external.mk
@@ -1,6 +1,6 @@
 include $(BR2_EXTERNAL_SIGMASTAR_PATH)/linux/linux-ext-sigmastar_patcher.mk
 include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar_patcher/sigmastar_patcher.mk
-#include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk
+include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk
 include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/fwprintenv-ng/fwprintenv-ng.mk
 include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/ipctool/ipctool.mk
 include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/libevent-mini/libevent-mini.mk
diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/Config.in b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/Config.in
new file mode 100644
index 00000000..5dc07c85
--- /dev/null
+++ b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_SIGMASTAR_OSDRV_SSC335
+	bool "sigmastar-osdrv-ssc335"
+	help
+	  sigmastar-osdrv-ssc335 - SigmaStar kernel modules and libs
+
+	  https://openipc.org
diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/debug_level.sh b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/debug_level.sh
new file mode 100755
index 00000000..845c159a
--- /dev/null
+++ b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/debug_level.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+#
+# OpenIPC.org | 2021.04.26
+#
+
+if [ TEST$2 != "TEST" ];
+then
+    export level=$2
+else
+    export level=0
+fi
+
+echo "$0 $1 $level"
+
+
+set_level()
+{
+    export DEBUGLEVEL=$1
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_ai/debug_level
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_ao/debug_level
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_divp/debug_level
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_rgn/debug_level
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_sensor/debug_level
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_shadow/debug_level
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_sys/debug_level
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_venc/debug_level
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_vif/debug_level
+    echo $DEBUGLEVEL > /proc/mi_modules/mi_vpe/debug_level
+}
+
+
+show_level()
+{
+    export SHELLCMD="cat /proc/mi_modules/mi_ai/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+    export SHELLCMD="cat /proc/mi_modules/mi_ao/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+    export SHELLCMD="cat /proc/mi_modules/mi_divp/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+    export SHELLCMD="cat /proc/mi_modules/mi_rgn/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+    export SHELLCMD="cat /proc/mi_modules/mi_sensor/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+    export SHELLCMD="cat /proc/mi_modules/mi_shadow/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+    export SHELLCMD="cat /proc/mi_modules/mi_sys/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+    export SHELLCMD="cat /proc/mi_modules/mi_venc/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+    export SHELLCMD="cat /proc/mi_modules/mi_vif/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+    export SHELLCMD="cat /proc/mi_modules/mi_vpe/debug_level   "
+    echo $SHELLCMD && $SHELLCMD
+}
+
+
+case "$1" in
+    set)
+        set_level $level
+        show_level
+        ;;
+    show)
+        show_level
+        ;;
+    *)
+        echo $"Usage: $0 {set|show}"
+        exit 1
+        ;;
+esac
diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_modules.sh b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_modules.sh
new file mode 100755
index 00000000..219a9051
--- /dev/null
+++ b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/files/script/load_modules.sh
@@ -0,0 +1,159 @@
+#!/bin/sh
+#
+# OpenIPC.org | 2021.04.26
+#
+#
+# Useage: ./load [ -r|-i|-a ]
+#         -r : rmmod all modules
+#         -i : insmod all modules
+#    default : rmmod all moules and then insmod them
+#
+
+PATH_MODULE=/opt/lib/modules/
+
+insert_ko()
+{
+    insmod ${PATH_MODULE}/mhal.ko
+    insmod ${PATH_MODULE}/mi_common.ko
+
+    major=$(awk '$2=="mi" {print $1}' /proc/devices)
+    minor=0
+
+    insmod ${PATH_MODULE}/mi_sys.ko cmdQBufSize=256 logBufSize=256
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_sys c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_ai.ko
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_ai c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_ao.ko
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_ao c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_rgn.ko
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_rgn c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_divp.ko thread_priority=98
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_divp c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_ipu.ko
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_ipu c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_vpe.ko thread_priority=98
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_vpe c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_sensor.ko
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_sensor c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_vif.ko thread_priority=98
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_vif c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_venc.ko max_width=2304 max_height=1296  thread_priority=99
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_venc c $major $minor
+        let minor++
+    fi
+
+    insmod ${PATH_MODULE}/mi_shadow.ko
+    if [ $? -eq 0 ]; then
+        mknod /dev/mi_shadow c $major $minor
+        let minor++
+    fi
+
+    major=$(awk '$2=="mi_poll" {print $1}' /proc/devices)
+    mknod /dev/mi_poll c $major 0
+
+    echo hvsp2 down /config/iqfile/filter.txt /config/iqfile/filter.txt > /sys/class/mstar/mscl/hvsp
+
+    insmod ${PATH_MODULE}/imx307_MIPI.ko chmap=1 lane_num=2 hdr_lane_num=2
+    mdev -s
+}
+
+
+remove_ko()
+{
+    rmmod mhal
+    rmmod mi_common
+    rmmod mi_sys
+    rmmod mi_ai
+    rmmod mi_ao
+    rmmod mi_rgn
+    rmmod mi_divp
+    rmmod mi_ipu
+    rmmod mi_vpe
+    rmmod mi_sensor
+    rmmod mi_vif
+    rmmod mi_venc
+    rmmod mi_shadow
+    rmmod imx307_MIPI
+}
+
+
+if [ "$1" = "-i" ]
+then
+    insert_ko
+fi
+
+if [ "$1" = "-r" ]
+then
+    remove_ko
+fi
+
+if [ $# -eq 0 ] || [ "$1" = "-a" ]
+then
+    remove_ko
+    insert_ko
+fi
+
+
+exit 0
+
+
+
+
+) 1280x 720,  30 fps max --> 192function:parese_Cmdline,pCmd_Section:0x3fe0000
+0x1080 [m--] WDR sn lx len:mmap->u32Size:0x7fe0000,but kernel len:0x3fe0000,fail!!!!
+
+нет ipu
+
+ mi_ai 187375 0 - Live 0xbfb2f000 (PO)
+ mi_divp 48340 0 - Live 0xbfb1e000 (PO)
+mi_disp 93595 0 - Live 0xbfaff000 (PO)
+mi_panel 24836 0 - Live 0xbfaf4000 (O)
+ mi_venc 155868 0 - Live 0xbfac3000 (PO)
+ mi_vif 39235 0 - Live 0xbfab4000 (PO)
+mi_gyro 11246 0 - Live 0xbfaad000 (PO)
+ mi_shadow 34375 0 - Live 0xbfa9f000 (PO)
+ mi_vpe 131267 0 - Live 0xbfa76000 (PO)
+ mi_rgn 74250 2 mi_divp,mi_vpe, Live 0xbfa5d000 (PO)
+ mi_ao 72914 0 - Live 0xbfa45000 (PO)
+ mi_sensor 21952 0 - Live 0xbfa3b000 (PO)
+ mi_sys 411756 12 mi_ai,mi_divp,mi_disp,mi_panel,mi_venc,mi_vif,mi_gyro,mi_shadow,mi_vpe,mi_rgn,mi_ao,mi_sensor, Live 0xbf9c2000 (PO)
+ mi_common 5599 13 mi_ai,mi_divp,mi_disp,mi_panel,mi_venc,mi_vif,mi_gyro,mi_shadow,mi_vpe,mi_rgn,mi_ao,mi_sensor,mi_sys, Live 0xbf9bd000 (PO)
+ mhal 1471673 12 mi_ai,mi_divp,mi_disp,mi_panel,mi_venc,mi_vif,mi_gyro,mi_vpe,mi_rgn,mi_ao,mi_sensor,mi_sys, Live 0xbf804000 (PO)
+ms_notify 1281 0 - Live 0xbf800000
diff --git a/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk
new file mode 100644
index 00000000..285d8670
--- /dev/null
+++ b/br-ext-chip-sigmastar/package/sigmastar-osdrv-ssc335/sigmastar-osdrv-ssc335.mk
@@ -0,0 +1,56 @@
+################################################################################
+#
+# sigmastar-osdrv-ssc335
+#
+################################################################################
+
+SIGMASTAR_OSDRV_SSC335_VERSION =
+SIGMASTAR_OSDRV_SSC335_SITE =
+SIGMASTAR_OSDRV_SSC335_LICENSE = MIT
+SIGMASTAR_OSDRV_SSC335_LICENSE_FILES = LICENSE
+SIGMASTAR_OSDRV_SSC335_INSTALL_STAGING = YES
+
+
+define SIGMASTAR_OSDRV_SSC335_INSTALL_STAGING_CMDS
+	$(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/sigmastar
+	# $(INSTALL) -m 644 -t $(STAGING_DIR)/usr/include/sigmastar $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/include/*
+
+	# $(INSTALL) -m 755 -d $(BUILD_DIR)/sigmastar-osdrv-ssc335/include
+	# $(INSTALL) -m 644 -t $(BUILD_DIR)/sigmastar-osdrv-ssc335/include $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/include/*
+
+	# $(INSTALL) -m 755 -d $(BUILD_DIR)/sigmastar-osdrv-ssc335/kmod
+	# $(INSTALL) -m 644 -t $(BUILD_DIR)/sigmastar-osdrv-ssc335/kmod $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/kmod/*.ko
+
+	# $(INSTALL) -m 755 -d $(BUILD_DIR)/sigmastar-osdrv-ssc335/lib
+	# $(INSTALL) -m 644 -t $(BUILD_DIR)/sigmastar-osdrv-ssc335/lib $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/lib/*.so
+endef
+
+
+define SIGMASTAR_OSDRV_SSC335_INSTALL_TARGET_CMDS
+	# $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors
+	# $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/sensor/config/*.ini
+
+	# $(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/4.9.x/sigmastar
+	# $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.9.x/sigmastar $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/kmod/*.ko
+	# $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.9.x/sigmastar $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/kmod/usb/*.ko
+
+	$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
+	$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/script/*
+
+	# $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/fonts
+	# $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/fonts $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/fonts/*.bin
+
+	# $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors
+	# $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/sensor/*.so
+
+	# $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib
+	# $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(BR2_EXTERNAL_SIGMASTAR_PATH)/package/sigmastar-osdrv-ssc335/files/lib/*.so
+endef
+
+$(eval $(generic-package))
+
+
+
+
+
+