Add some novatek files

pull/63/head
Igor Zalatov (from Citadel PC) 2021-10-31 14:37:23 +03:00
parent 9bb3c821fd
commit 3e9e004435
18 changed files with 342 additions and 9 deletions

View File

@ -0,0 +1,129 @@
name: OpenIPC for Hi3516Cv300
on:
workflow_dispatch:
jobs:
build_core:
name: OpenIPC v2.1 for Hi3516Cv300
runs-on: ubuntu-18.04
steps:
- name: Checkout
id: checkout
uses: actions/checkout@v2
- name: Install build dependencies
id: install
run: |
make install-deps
mkdir -p tmp
- name: Free disk space
id: freshing
run: |
sudo swapoff -a
sudo rm -f /swapfile
sudo apt clean
docker rmi $(docker image ls -aq)
df -h
- name: Prepare buildroot
id: prepare
run: |
HEAD_TAG=$(git tag --points-at HEAD)
GIT_HASH=$(git rev-parse --short $GITHUB_SHA)
BRANCH_NAME=$(echo $GITHUB_REF | cut -d'/' -f 3)
if [ -z "$HEAD_TAG" ]; then
TAG_NAME="latest"
RELEASE_NAME="Development Build"
PRERELEASE=true
else
TAG_NAME=${{ github.ref }}
RELEASE_NAME="Release ${{ github.ref }}"
PRERELEASE=false
fi
echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV
echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV
echo "PRERELEASE=$PRERELEASE" >> $GITHUB_ENV
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
cd $GITHUB_WORKSPACE
make prepare
- name: Build Hi3516Cv300 firmware
id: build-hi3516cv300-firmware
continue-on-error: true
run: |
ARCHIVE_FW="${GITHUB_WORKSPACE}/output/images/openipc.hi3516cv300-br.tgz"
echo "ARCHIVE_FW=$ARCHIVE_FW" >> $GITHUB_ENV
cd $GITHUB_WORKSPACE
make PLATFORM=hisilicon BOARD=unknown_unknown_hi3516cv300_openipc all
[[ $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/uImage) -gt 2097152 ]] && echo "TG_NOTIFY=Warning, kernel size exceeded : $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/uImage) vs 2097152" >> $GITHUB_ENV && exit 1
[[ $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs) -gt 5242880 ]] && echo "TG_NOTIFY=Warning, rootfs size exceeded - $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs) vs 5242880" >> $GITHUB_ENV && exit 1
mv ${GITHUB_WORKSPACE}/output/images/uImage ${GITHUB_WORKSPACE}/output/images/uImage.hi3516cv300
mv ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs.hi3516cv300
tar -C ${GITHUB_WORKSPACE}/output/images -cvzf $ARCHIVE_FW rootfs.squashfs.hi3516cv300 uImage.hi3516cv300
- name: Build Hi3516Cv300 SDK
id: build-hi3516cv300-sdk
continue-on-error: true
run: |
ARCHIVE_SDK="${GITHUB_WORKSPACE}/output/images/arm-openipc-linux-musleabi_sdk-buildroot.tar.gz"
echo "ARCHIVE_SDK=$ARCHIVE_SDK" >> $GITHUB_ENV
cd $GITHUB_WORKSPACE/output
make sdk
- name: Send warning message to telegram channel
env:
TG_TOKEN: ${{ secrets.TELEGRAM_TOKEN_BOT_OPENIPC }}
TG_CHANNEL: ${{ secrets.TELEGRAM_CHANNEL_OPENIPC_DEV }}
if: steps.build-hi3516cv300-firmware.outcome != 'success' || steps.build-hi3516cv300-sdk.outcome != 'success'
run: |
TG_OPTIONS="-s --connect-timeout 30 --max-time 30"
TG_NOTIFY="${TG_NOTIFY:=Warning, Buildroot compiling error... HI3516CV300}"
TG_HEADER=$(echo -e "\r\n$TG_NOTIFY \r\n\r\nCommit: $GIT_HASH \r\nBranch: $BRANCH_NAME \r\nTag: $TAG_NAME \r\n\r\n\xE2\x9A\xA0 GitHub Actions")
curl $TG_OPTIONS -H "Content-Type: multipart/form-data" -X POST https://api.telegram.org/bot$TG_TOKEN/sendMessage \
-F chat_id=$TG_CHANNEL -F text="$TG_HEADER"
- name: Create release
uses: actions/create-release@v1
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.TAG_NAME }}
release_name: ${{ env.RELEASE_NAME }}
draft: false
prerelease: ${{ env.PRERELEASE }}
- name: Upload FW to release
uses: svenstaro/upload-release-action@v2
continue-on-error: true
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.ARCHIVE_FW }}
asset_name: "openipc.hi3516cv300-br.tgz"
tag: ${{ env.TAG_NAME }}
overwrite: true
- name: Upload SDK to release
uses: svenstaro/upload-release-action@v2
continue-on-error: true
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.ARCHIVE_SDK }}
asset_name: "arm-openipc-hi3516cv300-linux-musleabi_sdk-buildroot.tar.gz"
tag: ${{ env.TAG_NAME }}
overwrite: true
- name: Send binary file to telegram channel
env:
TG_TOKEN: ${{ secrets.TELEGRAM_TOKEN_BOT_OPENIPC }}
TG_CHANNEL: ${{ secrets.TELEGRAM_CHANNEL_OPENIPC_DEV }}
run: |
TG_OPTIONS="-s --connect-timeout 30 --max-time 30"
TG_HEADER=$(echo -e "\r\nCommit: $GIT_HASH \r\nBranch: $BRANCH_NAME \r\nTag: $TAG_NAME \r\n\r\n\xE2\x9C\x85 GitHub Actions")
curl $TG_OPTIONS -H "Content-Type: multipart/form-data" -X POST https://api.telegram.org/bot$TG_TOKEN/sendDocument \
-F chat_id=$TG_CHANNEL -F document="@$ARCHIVE_FW" -F caption="$TG_HEADER"

View File

@ -1,11 +1,6 @@
name: OpenIPC for NT98566
on:
push:
branches:
- master
tags:
- "v*"
workflow_dispatch:
jobs:

View File

@ -0,0 +1,11 @@
--- a/scripts/dtc/dtc-lexer.lex.c 2021-10-31 13:51:18.858858304 +0300
+++ b/scripts/dtc/dtc-lexer.lex.c 2021-10-31 13:54:53.017440216 +0300
@@ -637,7 +637,7 @@
#include "srcpos.h"
#include "dtc-parser.tab.h"
-YYLTYPE yylloc;
+extern YYLTYPE yylloc;
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
#define YY_USER_ACTION \

View File

@ -15,6 +15,7 @@ source "$BR2_EXTERNAL_NOVATEK_PATH/package/mbedtls-openipc/Config.in"
source "$BR2_EXTERNAL_NOVATEK_PATH/package/microbe-web/Config.in"
source "$BR2_EXTERNAL_NOVATEK_PATH/package/motors/Config.in"
source "$BR2_EXTERNAL_NOVATEK_PATH/package/node-exporter/Config.in"
source "$BR2_EXTERNAL_NOVATEK_PATH/package/novatek-osdrv-nt9856x/Config.in"
source "$BR2_EXTERNAL_NOVATEK_PATH/package/opus-openipc/Config.in"
source "$BR2_EXTERNAL_NOVATEK_PATH/package/uacme-openipc/Config.in"
source "$BR2_EXTERNAL_NOVATEK_PATH/package/vtund-openipc/Config.in"

View File

@ -52,7 +52,7 @@ BR2_PACKAGE_DROPBEAR=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
BR2_PACKAGE_HASERL=y
# BR2_PACKAGE_NOVATEK_OSDRV_NT9856X is not set
BR2_PACKAGE_NOVATEK_OSDRV_NT9856X=y
BR2_PACKAGE_IPCTOOL=y
BR2_PACKAGE_JSON_C=y
BR2_PACKAGE_LAME_OPENIPC=y

View File

@ -52,7 +52,7 @@ BR2_PACKAGE_DROPBEAR=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
BR2_PACKAGE_HASERL=y
# BR2_PACKAGE_NOVATEK_OSDRV_NT9856X is not set
BR2_PACKAGE_NOVATEK_OSDRV_NT9856X=y
BR2_PACKAGE_IPCTOOL=y
BR2_PACKAGE_JSON_C=y
BR2_PACKAGE_LAME_OPENIPC=y

View File

@ -15,6 +15,7 @@ include $(BR2_EXTERNAL_NOVATEK_PATH)/package/mbedtls-openipc/mbedtls-openipc.mk
include $(BR2_EXTERNAL_NOVATEK_PATH)/package/microbe-web/microbe-web.mk
include $(BR2_EXTERNAL_NOVATEK_PATH)/package/motors/motors.mk
include $(BR2_EXTERNAL_NOVATEK_PATH)/package/node-exporter/node-exporter.mk
include $(BR2_EXTERNAL_NOVATEK_PATH)/package/novatek-osdrv-nt9856x/novatek-osdrv-nt9856x.mk
include $(BR2_EXTERNAL_NOVATEK_PATH)/package/opus-openipc/opus-openipc.mk
include $(BR2_EXTERNAL_NOVATEK_PATH)/package/uacme-openipc/uacme-openipc.mk
include $(BR2_EXTERNAL_NOVATEK_PATH)/package/vtund-openipc/vtund-openipc.mk

View File

@ -0,0 +1 @@
../../general/package/novatek-osdrv-nt9856x

View File

@ -257,8 +257,8 @@ xm550() {
#
# hi3516cv100 # testing..
# hi3516cv200 # testing..
hi3518ev200 # testing..
# hi3516cv300 # testind..
# hi3518ev200 # testing..
hi3516cv300 # testind..
# hi3516cv500 # testind..
#
# hi3516dv300 # testind..

View File

@ -0,0 +1,6 @@
config BR2_PACKAGE_NOVATEK_OSDRV_NT9856X
bool "novatek-osdrv-nt9856x"
help
novatek-osdrv-nt9856x - Novatek kernel modules and libs
https://openipc.org

View File

@ -0,0 +1,67 @@
#!/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 novatek "Check MAC for Novatek devices"
#if [ "$(fw_printenv -n ethaddr)" = "D0:22:12:88:88:88" ]; then
# logger -s -p daemon.info -t novatek "The eth0 interface has a lousy MAC, let's try to change it.."
#else
# logger -s -p daemon.info -t novatek "The eth0 interface has a correct MAC - $(fw_printenv -n ethaddr)"
#fi
#
logger -s -p daemon.info -t novatek "Loading of kernel modules and initialization of the video system has started"
export TZ=$(cat /etc/TZ)
load_novatek -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/bin/$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,85 @@
#!/bin/sh
# DAY mode
ir_cut_enable() {
# Pin_mux
[ ! -d /sys/class/gpio/gpio$gpio_0 ] && echo "$gpio_0" >/sys/class/gpio/export
[ ! -d /sys/class/gpio/gpio$gpio_1 ] && 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 (day 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
}
# NIGHT mode
ir_cut_disable() {
# Pin_mux
[ ! -d /sys/class/gpio/gpio$gpio_0 ] && echo "$gpio_0" >/sys/class/gpio/export
[ ! -d /sys/class/gpio/gpio$gpio_1 ] && 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 (night 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 <vendor> <mode>"
echo "For example:"
echo "NIGHT : ircut_demo anjoy 1"
else
if [ $1 = "anjoy" ]; then
gpio_0=78
gpio_1=79
elif [ $1 = "brovotech" ]; then
gpio_0=78
gpio_1=79
elif [ $1 = "gospell" ]; then
gpio_0=78
gpio_1=79
elif [ $1 = "uniview" ]; then
gpio_0=78
gpio_1=79
else
echo -e "Wrong vendor name: $1\nPlease select: anjoy, brovotech, gospell, uniview"
exit
fi
if [ $2 -eq 0 ]; then
echo "DAY mode, ir_cut on"
ir_cut_enable >/dev/null
elif [ $2 -eq 1 ]; then
echo "NIGHT 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,2 @@
#!/bin/sh

View File

@ -0,0 +1,35 @@
################################################################################
#
# novatek-osdrv-nt9856x
#
################################################################################
NOVATEK_OSDRV_NT9856X_VERSION =
NOVATEK_OSDRV_NT9856X_SITE =
NOVATEK_OSDRV_NT9856X_LICENSE = MIT
NOVATEK_OSDRV_NT9856X_LICENSE_FILES = LICENSE
define NOVATEK_OSDRV_NT9856X_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
$(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(BR2_EXTERNAL_NOVATEK_PATH)/package/novatek-osdrv-nt9856x/files/script/S99novatek
$(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/4.19.91/novatek
#$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.19.91/novatek $(BR2_EXTERNAL_NOVATEK_PATH)/package/novatek-osdrv-nt9856x/files/kmod/*.ko
#$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.19.91/novatek $(BR2_EXTERNAL_NOVATEK_PATH)/package/novatek-osdrv-nt9856x/files/kmod/mhal.ko
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
#$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_NOVATEK_PATH)/package/novatek-osdrv-nt9856x/files/script/load*
#$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_NOVATEK_PATH)/package/novatek-osdrv-nt9856x/files/script/ircut_demo
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/fonts
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/fonts $(BR2_EXTERNAL_NOVATEK_PATH)/package/novatek-osdrv-nt9856x/files/fonts/*.bin
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib
# Minimalism for sample_venc_jpeg
#$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(BR2_EXTERNAL_NOVATEK_PATH)/package/novatek-osdrv-nt9856x/files/lib/libmi_sys.so
# Maximum for demo software
#$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(BR2_EXTERNAL_NOVATEK_PATH)/package/novatek-osdrv-nt9856x/files/lib/libmi_common.so
endef
$(eval $(generic-package))