diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/fonts/fonts.bin b/general/package/hisilicon-osdrv-hi3516cv200/files/fonts/fonts.bin new file mode 100644 index 00000000..0aefb91f Binary files /dev/null and b/general/package/hisilicon-osdrv-hi3516cv200/files/fonts/fonts.bin differ diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/kmod/.dot b/general/package/hisilicon-osdrv-hi3516cv200/files/kmod/.dot new file mode 100644 index 00000000..e69de29b diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/lib/.dot b/general/package/hisilicon-osdrv-hi3516cv200/files/lib/.dot new file mode 100644 index 00000000..e69de29b diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/script/S99hisilicon b/general/package/hisilicon-osdrv-hi3516cv200/files/script/S99hisilicon new file mode 100755 index 00000000..0a46e8d9 --- /dev/null +++ b/general/package/hisilicon-osdrv-hi3516cv200/files/script/S99hisilicon @@ -0,0 +1,68 @@ +#!/bin/sh + +DAEMON="majestic" +PIDFILE="/var/run/$DAEMON.pid" + +DAEMON_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# 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 hisilicon "Check MAC for Xiongmai devices" + if [ "$(fw_printenv -n ethaddr)" = "00:00:23:34:45:66" ]; then + logger -s -p daemon.info -t hisilicon "The eth0 interface has a lousy MAC, let's try to change it.." + XMMAC="$(ipcinfo --xm_mac)" && [ -n "${XMMAC}" ] && fw_setenv ethaddr ${XMMAC} && ifconfig eth0 hw ether ${XMMAC} && logger -s -p daemon.info -t hisilicon "The eth0 interface have new MAC - ${XMMAC}" && reboot -f + else + logger -s -p daemon.info -t hisilicon "The eth0 interface has a correct MAC - $(fw_printenv -n ethaddr)" + fi + # + logger -s -p daemon.info -t hisilicon "Loading of kernel modules and initialization of the video system has started" + export TZ=$(cat /etc/TZ) + load_hisilicon -i + # + printf 'Starting %s: ' "$DAEMON" + [ -f /usr/bin/$DAEMON ] || echo -en "DISABLED, " + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" \ + -- $DAEMON_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + [ -f /usr/sbin/$DAEMON ] || echo -en "DISABLED, " + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/script/ircut_demo b/general/package/hisilicon-osdrv-hi3516cv200/files/script/ircut_demo new file mode 100644 index 00000000..2d1f1ea7 --- /dev/null +++ b/general/package/hisilicon-osdrv-hi3516cv200/files/script/ircut_demo @@ -0,0 +1,87 @@ +#!/bin/sh + +# on EV200: +# GPIO1_0 -> GPIO8 (1*8+0 = 8) +# GPIO1_1 -> GPIO9 (1*8+1 = 9) + +# on EV300: +# GPIO1_3 -> GPIO11 +# GPIO1_2 -> GPIO10 + +#(normal mode) +ir_cut_enable() { + # pin_mux + echo "$gpio_0" >/sys/class/gpio/unexport + echo "$gpio_1" >/sys/class/gpio/unexport + echo "$gpio_0" >/sys/class/gpio/export + echo "$gpio_1" >/sys/class/gpio/export + + # dir + echo "out" >/sys/class/gpio/gpio$gpio_0/direction + echo "out" >/sys/class/gpio/gpio$gpio_1/direction + + # data, gpio_1: 0, gpio_0: 1 (normal mode) + echo "1" >/sys/class/gpio/gpio$gpio_0/value + echo "0" >/sys/class/gpio/gpio$gpio_1/value + + #sleep 1s + sleep 1 + + # back to original + echo "0" >/sys/class/gpio/gpio$gpio_0/value + echo "0" >/sys/class/gpio/gpio$gpio_1/value +} + +# (ir mode) +ir_cut_disable() { + # pin_mux + echo "$gpio_0" >/sys/class/gpio/unexport + echo "$gpio_1" >/sys/class/gpio/unexport + echo "$gpio_0" >/sys/class/gpio/export + echo "$gpio_1" >/sys/class/gpio/export + + # dir + echo "out" >/sys/class/gpio/gpio$gpio_0/direction + echo "out" >/sys/class/gpio/gpio$gpio_1/direction + + # data, gpio_1: 1, gpio_0: 0 (ir mode) + echo "0" >/sys/class/gpio/gpio$gpio_0/value + echo "1" >/sys/class/gpio/gpio$gpio_1/value + + #sleep 1s + sleep 1 + + # back to original + echo "0" >/sys/class/gpio/gpio$gpio_0/value + echo "0" >/sys/class/gpio/gpio$gpio_1/value +} + +gpio_0=0 +gpio_1=0 + +if [ $# -lt 2 ]; then + echo "usage : ./ircut_demo " + echo "for example:" + echo "ir mode : ./ircut_demo hi3516ev200 1" +else + if [ $1 = "hi3516ev200" ]; then + gpio_0=8 + gpio_1=9 + elif [ $1 = "hi3516ev300" ]; then + gpio_0=11 + gpio_1=10 + else + echo "wrong chipid: $1, please select: hi3516ev200 or hi3516ev300." + exit + fi + + if [ $2 -eq 0 ]; then + echo "normal mode, ir_cut on" + ir_cut_enable >/dev/null + elif [ $2 -eq 1 ]; then + echo "ir mode, ir_cut off" + ir_cut_disable >/dev/null + else + echo "invalid mode, please slect 0 or 1." + fi +fi diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon b/general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon new file mode 100755 index 00000000..4287ca86 --- /dev/null +++ b/general/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon @@ -0,0 +1 @@ +# \ No newline at end of file diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/.dot b/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/.dot new file mode 100644 index 00000000..e69de29b diff --git a/general/package/hisilicon-osdrv-hi3516cv200/hisilicon-osdrv-hi3516cv200.mk b/general/package/hisilicon-osdrv-hi3516cv200/hisilicon-osdrv-hi3516cv200.mk new file mode 100644 index 00000000..e5c7fbee --- /dev/null +++ b/general/package/hisilicon-osdrv-hi3516cv200/hisilicon-osdrv-hi3516cv200.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# hisilicon-osdrv-hi3516cv200 +# +################################################################################ + +HISILICON_OSDRV_HI3516CV200_VERSION = +HISILICON_OSDRV_HI3516CV200_SITE = +HISILICON_OSDRV_HI3516CV200_LICENSE = MIT +HISILICON_OSDRV_HI3516CV200_LICENSE_FILES = LICENSE + + +define HISILICON_OSDRV_HI3516CV200_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d + $(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/script/S99hisilicon + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors + # $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/*.ini + + $(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/4.9.37/hisilicon + # $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.9.37/hisilicon $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/kmod/*.ko + # $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.9.37/hisilicon $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/kmod/xxx.ko + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/script/load_hisilicon + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/script/ircut_demo + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/fonts + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/fonts $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/fonts/*.bin + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/sensor/*.so + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/lib/*.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv200/files/lib/xxx.so +endef + +$(eval $(generic-package))