diff --git a/general/overlay/etc/init.d/S70vendor b/general/overlay/etc/init.d/S70vendor new file mode 100755 index 00000000..1b256524 --- /dev/null +++ b/general/overlay/etc/init.d/S70vendor @@ -0,0 +1,14 @@ +#!/bin/sh + +# load vendor specific drivers +# +vendor=$(ipcinfo -v) + +case "$1" in + start) + logger -s -p daemon.info -t ${vendor} "Check MAC for ${vendor} devices..." + logger -s -p daemon.info -t ${vendor} "$(check_mac)" + echo -e '\nLoading of kernel modules...' + load_${vendor} -i + ;; +esac diff --git a/general/overlay/usr/sbin/check_mac b/general/overlay/usr/sbin/check_mac new file mode 120000 index 00000000..756c71c5 --- /dev/null +++ b/general/overlay/usr/sbin/check_mac @@ -0,0 +1 @@ +extutils \ No newline at end of file diff --git a/general/overlay/usr/sbin/extutils b/general/overlay/usr/sbin/extutils index d09f0a0f..eac337c6 100755 --- a/general/overlay/usr/sbin/extutils +++ b/general/overlay/usr/sbin/extutils @@ -13,6 +13,9 @@ case "${CMD}" in cli) yaml-cli -i /etc/majestic.yaml $@ ;; + sensor_cli) + yaml-cli -i /etc/sensor/$(fw_printenv -n sensor).yaml $@ + ;; ipctool) IPCTOOL=/tmp/ipctool if [ ! -x $IPCTOOL ]; then @@ -21,6 +24,14 @@ case "${CMD}" in echo "The ipctool installed as remote GitHub plugin" fi $IPCTOOL $@ + ;; + check_mac) + if [ "$(fw_printenv -n ethaddr)" = "00:00:23:34:45:66" ]; then + status="The eth0 interface has a lousy MAC, please change it.." + else + status="The eth0 interface has a correct MAC - $(fw_printenv -n ethaddr)" + fi + echo ${status} ;; *) ;; diff --git a/general/package/ingenic-osdrv-t31/files/script/load_ingenic b/general/package/ingenic-osdrv-t31/files/script/load_ingenic index cce764d0..0b69fc58 100755 --- a/general/package/ingenic-osdrv-t31/files/script/load_ingenic +++ b/general/package/ingenic-osdrv-t31/files/script/load_ingenic @@ -1,6 +1,11 @@ #!/bin/sh -KMOD_PATH=/lib/modules/3.10.14__isvp_swan_1.0__/ingenic +KMOD_PATH=/lib/modules/$(uname -r)/ingenic +vendor=$(ipcinfo -v) + +if [ ! -f /usr/sbin/sensor_cli ]; then + ln -s /usr/sbin/extutils /usr/sbin/sensor_cli +fi echo 1 >/proc/sys/vm/overcommit_memory @@ -12,24 +17,40 @@ check_return() { fi } -lsmod | grep "avpu" >/dev/null -if [ $? -ne 0 ]; then - insmod ${KMOD_PATH/%\//}/avpu.ko clk_name='vpll' avpu_clk=400000000 - check_return "insmod avpu" -fi +SENSOR_EXT_PARAM="" + +sync_sensor_param() { + STREAMER_RES=$(cli -g .video0.size) + STREAMER_FPS=$(cli -g .video0.fps) + if [ ! -z "${STREAMER_RES}" ] && [ ! -z "${STREAMER_FPS}" ]; then + CUR_SENSOR_RES="$(sensor_cli -g .sensor.width)x$(sensor_cli -g .sensor.height)" + if ! [ "${CUR_SENSOR_RES}" = "${STREAMER_RES}" ]; then + STREAMER_PARAM="${STREAMER_RES}x${STREAMER_FPS}" + RES_LIST=$(sensor_cli -g .sensor.resolutions) + for RES in $(echo ${RES_LIST} | tr ',' '\n') + do + if [ "$(echo ${RES} | cut -d "_" -f1)" = "${STREAMER_PARAM}" ]; then + sensor_cli -s .sensor.width $(echo ${STREAMER_PARAM} | cut -d "x" -f1) + sensor_cli -s .sensor.height $(echo ${STREAMER_PARAM} | cut -d "x" -f2) + SENSOR_EXT_PARAM="sensor_resolution=$(echo ${RES} | cut -d "_" -f2) sensor_max_fps=$(echo ${STREAMER_FPS})" + fi + done + fi + fi +} lsmod | grep "sinfo" >/dev/null if [ $? -ne 0 ]; then insmod ${KMOD_PATH/%\//}/sinfo.ko check_return "insmod sinfo" fi -echo 1 >/proc/jz/sinfo/info -check_return "start sinfo" if fw_printenv -n sensor >/dev/null; then export SENSOR=$(fw_printenv -n sensor) - logger -s -p daemon.info -t ingenic "Get data from environment and set SENSOR as ${SENSOR}" + logger -s -p daemon.info -t ${vendor} "Get data from environment and set SENSOR as ${SENSOR}" else + echo 1 >/proc/jz/sinfo/info + check_return "start sinfo" SENSOR_INFO=$(cat /proc/jz/sinfo/info) check_return "get sensor type" SENSOR=${SENSOR_INFO#*:} @@ -37,62 +58,81 @@ else unset SENSOR fw_setenv sensor else - logger -s -p daemon.info -t ingenic "Get data from sinfo and set SENSOR as ${SENSOR}" - fw_setenv sensor $SENSOR && logger -s -p daemon.info -t ingenic "Write detected ${SENSOR} to U-Boot ENV" + logger -s -p daemon.info -t ${vendor} "Get data from sinfo and set SENSOR as ${SENSOR}" + fw_setenv sensor $SENSOR && logger -s -p daemon.info -t ${vendor} "Write detected ${SENSOR} to U-Boot ENV" fi fi +sync_sensor_param case ${SENSOR} in "gc2053") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=125000000" - SENSOR_PARAM="sensor_max_fps=25 data_interface=1" + SENSOR_PARAM="data_interface=1" ;; "gc2083") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=200000000" SENSOR_PARAM="shvflip=1" ;; "gc4653") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=200000000" SENSOR_PARAM="" ;; "imx307") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=125000000" SENSOR_PARAM="" ;; "jxf37") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=200000000 isp_memopt=1 isp_day_night_switch_drop_frame_num=1 isp_ch0_pre_dequeue_time=12 isp_ch0_pre_dequeue_interrupt_process=0 isp_ch0_pre_dequeue_valid_lines=540" SENSOR_PARAM="shvflip=1" ;; "jxh62") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="" SENSOR_PARAM="" ;; "jxq03"|"jxq03p") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=150000000" SENSOR_PARAM="" ;; "sc200ai") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=100000000 isp_ch0_pre_dequeue_time=20 isp_ch0_pre_dequeue_interrupt_process=0 isp_memopt=1" SENSOR_PARAM="shvflip=1" ;; "sc2232") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=125000000" SENSOR_PARAM="" ;; "sc2335") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=100000000 isp_ch0_pre_dequeue_time=20 isp_ch0_pre_dequeue_interrupt_process=0 isp_memopt=1" SENSOR_PARAM="" ;; +"sc3335") + AVPU_PARAM="clk_name=mpll avpu_clk=500000000" + ISP_PARAM="isp_clk=200000000 isp_memopt=1" + SENSOR_PARAM="" + ;; "sc3338") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=150000000" SENSOR_PARAM="" ;; "sc5235") + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=200000000" SENSOR_PARAM="" ;; *) + AVPU_PARAM="clk_name=vpll avpu_clk=400000000" ISP_PARAM="isp_clk=125000000" SENSOR_PARAM="" break @@ -100,32 +140,38 @@ case ${SENSOR} in esac echo -------------------- +echo "AVPU_PARAM: ${AVPU_PARAM}" echo "ISP_PARAM: ${ISP_PARAM}" echo "SENSOR: ${SENSOR}" echo "SENSOR_PARAM: ${SENSOR_PARAM}" echo -------------------- +lsmod | grep "avpu" >/dev/null +if [ $? -ne 0 ]; then + insmod ${KMOD_PATH/%\//}/avpu.ko ${AVPU_PARAM} + check_return "insmod avpu" +fi + lsmod | grep "tx_isp" >/dev/null if [ $? -ne 0 ]; then insmod ${KMOD_PATH/%\//}/tx-isp-t31.ko ${ISP_PARAM} check_return "insmod isp drv" fi +lsmod | grep ${SENSOR} >/dev/null +if [ $? -ne 0 ]; then + insmod ${KMOD_PATH/%\//}/sensor_${SENSOR}_t31.ko ${SENSOR_PARAM} ${SENSOR_EXT_PARAM} + check_return "insmod sensor drv" +fi + lsmod | grep "audio" >/dev/null if [ $? -ne 0 ]; then insmod ${KMOD_PATH/%\//}/audio.ko check_return "insmod audio" fi -lsmod | grep ${SENSOR} >/dev/null -if [ $? -ne 0 ]; then - insmod ${KMOD_PATH/%\//}/sensor_${SENSOR}_t31.ko ${SENSOR_PARAM} - check_return "insmod sensor drv" -fi -# -# Need for claim gpio 57,58 on HICHIP (CamHi/Xin) boards +# Need for claim gpio insmod ${KMOD_PATH/%\//}/gpio.ko -echo $(yaml-cli -i /etc/majestic.yaml -g .nightMode.irCutPin1) >/proc/jz/claim/gpio -echo $(yaml-cli -i /etc/majestic.yaml -g .nightMode.irCutPin2) >/proc/jz/claim/gpio -# echo $(yaml-cli -i /etc/majestic.yaml -g .nightMode.irSensorPin) >/proc/jz/claim/gpio -# +echo $(cli -g .nightMode.irCutPin1) >/proc/jz/claim/gpio +echo $(cli -g .nightMode.irCutPin2) >/proc/jz/claim/gpio +# echo $(cli -g .nightMode.irSensorPin) >/proc/jz/claim/gpio diff --git a/general/package/ingenic-osdrv-t31/files/sensor/gc4653.yaml b/general/package/ingenic-osdrv-t31/files/sensor/gc4653.yaml index 79ee5693..516518d2 100644 --- a/general/package/ingenic-osdrv-t31/files/sensor/gc4653.yaml +++ b/general/package/ingenic-osdrv-t31/files/sensor/gc4653.yaml @@ -4,3 +4,4 @@ sensor: width: 2560 height: 1440 bus: i2c + resolutions: 2560x1440x25_400,1920x1080x60_300,1280x720x60_100 diff --git a/general/package/ingenic-osdrv-t31/ingenic-osdrv-t31.mk b/general/package/ingenic-osdrv-t31/ingenic-osdrv-t31.mk index c5f5b08d..789d676a 100644 --- a/general/package/ingenic-osdrv-t31/ingenic-osdrv-t31.mk +++ b/general/package/ingenic-osdrv-t31/ingenic-osdrv-t31.mk @@ -10,9 +10,6 @@ INGENIC_OSDRV_T31_LICENSE = MIT INGENIC_OSDRV_T31_LICENSE_FILES = LICENSE define INGENIC_OSDRV_T31_INSTALL_TARGET_CMDS - $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d - $(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t31/files/script/S95ingenic - $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensor $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensor $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t31/files/sensor/*.yaml # $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensor $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t31/files/sensor/params/*.bin @@ -55,9 +52,7 @@ define INGENIC_OSDRV_T31_INSTALL_TARGET_CMDS $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t31/files/kmod/sensor_sc5235_t31.ko $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin - $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t31/files/script/load* $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t31/files/script/ircut_demo - # $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t31/files/sample/* # $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors/params # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors/params $(BR2_EXTERNAL_INGENIC_PATH)/package/ingenic-osdrv-t31/files/sensor/params/*.bin diff --git a/general/package/ingenic-osdrv-t31/files/script/S95ingenic b/general/package/majestic/files/S95majestic similarity index 57% rename from general/package/ingenic-osdrv-t31/files/script/S95ingenic rename to general/package/majestic/files/S95majestic index 005dc6bf..cca0ace3 100755 --- a/general/package/ingenic-osdrv-t31/files/script/S95ingenic +++ b/general/package/majestic/files/S95majestic @@ -14,11 +14,10 @@ load_majestic() { # shellcheck disable=SC2086 # we need the word splitting [ -f /etc/coredump.conf ] && . /etc/coredump.conf if [ "$coredump_enabled" ]; then - [ "$(yaml-cli -i /etc/majestic.yaml -g .watchdog.timeout)" -lt "30" ] && yaml-cli -i /etc/majestic.yaml -s .watchdog.timeout 30 + [ "$(cli -g .watchdog.timeout)" -lt "30" ] && cli -s .watchdog.timeout 30 ulimit -c unlimited && echo "|/usr/sbin/sendcoredump.sh" >/proc/sys/kernel/core_pattern fi - start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" \ - -- $DAEMON_ARGS + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" -- $DAEMON_ARGS status=$? if [ "$status" -eq 0 ]; then echo "OK" @@ -30,26 +29,8 @@ load_majestic() { # The daemon does not create a pidfile, and use "-m" to instruct start-stop-daemon to create one. start() { - logger -s -p daemon.info -t ingenic "Check MAC for Ingenic devices" - if [ "$(fw_printenv -n ethaddr)" = "00:00:23:34:45:66" ]; then - logger -s -p daemon.info -t ingenic "The eth0 interface has a lousy MAC, please change it.." - else - logger -s -p daemon.info -t ingenic "The eth0 interface has a correct MAC - $(fw_printenv -n ethaddr)" - fi - # - logger -s -p daemon.info -t ingenic "Loading of kernel modules and initialization of the video system has started" - export TZ=$(cat /etc/TZ) - load_ingenic - # - # - # export SENSOR=$(fw_printenv -n sensor) - export SENSOR=$(cat /proc/jz/sinfo/info | sed -e 's/.*://') - SENSOR=$(cat /proc/jz/sinfo/info | sed -e 's/.*://') - if [ "sensor not found" = "$SENSOR" ]; then - unset SENSOR - else - export SENSOR=$SENSOR - fi + logger -s -p daemon.info -t $(ipcinfo -v) "Loading video system has started..." + export SENSOR=$(fw_printenv -n sensor) load_majestic } diff --git a/general/package/majestic/majestic.mk b/general/package/majestic/majestic.mk index 085f9335..50fde59b 100644 --- a/general/package/majestic/majestic.mk +++ b/general/package/majestic/majestic.mk @@ -44,6 +44,9 @@ define MAJESTIC_INSTALL_TARGET_CMDS $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/majestic + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d + cp ../general/package/majestic/files/S95majestic $(TARGET_DIR)/etc/init.d endef $(eval $(generic-package))