mirror of https://github.com/OpenIPC/firmware.git
Add some novatek files
parent
9bb3c821fd
commit
3e9e004435
|
@ -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"
|
|
@ -1,11 +1,6 @@
|
|||
name: OpenIPC for NT98566
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- "v*"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
|
|
@ -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 \
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
../../general/package/novatek-osdrv-nt9856x
|
|
@ -257,8 +257,8 @@ xm550() {
|
|||
#
|
||||
# hi3516cv100 # testing..
|
||||
# hi3516cv200 # testing..
|
||||
hi3518ev200 # testing..
|
||||
# hi3516cv300 # testind..
|
||||
# hi3518ev200 # testing..
|
||||
hi3516cv300 # testind..
|
||||
# hi3516cv500 # testind..
|
||||
#
|
||||
# hi3516dv300 # testind..
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
|
|
@ -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))
|
Loading…
Reference in New Issue