Fix Hisilicom compiling trouble

pull/65/head
Igor Zalatov (from Citadel PC) 2021-11-02 22:33:23 +03:00
parent 7201613178
commit f176dd2d64
8 changed files with 195 additions and 0 deletions

View File

@ -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

View File

@ -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 <chip> <mode>"
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

View File

@ -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))