mirror of https://github.com/OpenIPC/firmware.git
Merge branch 'master' of github:OpenIPC/firmware
commit
42c9214317
|
@ -0,0 +1,139 @@
|
|||
name: "AK3918Ev200 "
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- production
|
||||
tags:
|
||||
- "v*"
|
||||
# schedule:
|
||||
# - cron: "00 03 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build_core:
|
||||
name: OpenIPC firmware for AK3918Ev200
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
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 Ak3918ev200 firmware
|
||||
id: build-ak3918ev200-firmware
|
||||
continue-on-error: true
|
||||
run: |
|
||||
ARCHIVE_FW="${GITHUB_WORKSPACE}/output/images/openipc.ak3918ev200-br.tgz"
|
||||
echo "ARCHIVE_FW=$ARCHIVE_FW" >> $GITHUB_ENV
|
||||
cd $GITHUB_WORKSPACE
|
||||
make PLATFORM=anyka BOARD=unknown_unknown_ak3918ev200_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... AK3918EV200" >> $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... AK3918EV200" >> $GITHUB_ENV && exit 1
|
||||
cd ${GITHUB_WORKSPACE}/output/images
|
||||
mv uImage uImage.ak3918ev200
|
||||
mv rootfs.squashfs rootfs.squashfs.ak3918ev200
|
||||
md5sum rootfs.squashfs.ak3918ev200 > rootfs.squashfs.ak3918ev200.md5sum
|
||||
md5sum uImage.ak3918ev200 > uImage.ak3918ev200.md5sum
|
||||
tar -cvzf $ARCHIVE_FW *ak3918ev200*
|
||||
|
||||
- name: Build AK3918Ev200 SDK
|
||||
id: build-ak3918ev200-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-ak3918ev200-firmware.outcome != 'success' || steps.build-ak3918ev200-sdk.outcome != 'success'
|
||||
run: |
|
||||
TG_OPTIONS="-s --connect-timeout 30 --max-time 30"
|
||||
TG_NOTIFY="${TG_NOTIFY:=Warning, Buildroot compiling error... AK3918EV200}"
|
||||
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.ak3918ev200-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-ak3918ev200-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,4 +1,5 @@
|
|||
source "$BR2_EXTERNAL_ANYKA_PATH/linux/Config.ext.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/anyka-osdrv-ak3918ev200/Config.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/anyka_patcher/Config.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/aura-httpd/Config.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/fdk-aac-openipc/Config.in"
|
||||
|
@ -14,7 +15,7 @@ source "$BR2_EXTERNAL_ANYKA_PATH/package/libsrt-openipc/Config.in"
|
|||
source "$BR2_EXTERNAL_ANYKA_PATH/package/libwebsockets-openipc/Config.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/linux-firmware-openipc/Config.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/majestic-fonts/Config.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/majestic/Config.in"
|
||||
#source "$BR2_EXTERNAL_ANYKA_PATH/package/majestic/Config.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/mbedtls-openipc/Config.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/microbe-web/Config.in"
|
||||
source "$BR2_EXTERNAL_ANYKA_PATH/package/motors/Config.in"
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,65 @@
|
|||
#ifndef __LINUX_COMPILER_H
|
||||
#error "Please don't include <linux/compiler-gcc7.h> directly, include <linux/compiler.h> instead."
|
||||
#endif
|
||||
|
||||
#define __used __attribute__((__used__))
|
||||
#define __must_check __attribute__((warn_unused_result))
|
||||
#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||
|
||||
/* Mark functions as cold. gcc will assume any path leading to a call
|
||||
to them will be unlikely. This means a lot of manual unlikely()s
|
||||
are unnecessary now for any paths leading to the usual suspects
|
||||
like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||
older compilers]
|
||||
|
||||
Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||
in the preprocessor, but we can live with this because they're unreleased.
|
||||
Maketime probing would be overkill here.
|
||||
|
||||
gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||
a special section, but I don't see any sense in this right now in
|
||||
the kernel context */
|
||||
#define __cold __attribute__((__cold__))
|
||||
|
||||
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||
|
||||
#ifndef __CHECKER__
|
||||
# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||
# define __compiletime_error(message) __attribute__((error(message)))
|
||||
#endif /* __CHECKER__ */
|
||||
|
||||
/*
|
||||
* Mark a position in code as unreachable. This can be used to
|
||||
* suppress control flow warnings after asm blocks that transfer
|
||||
* control elsewhere.
|
||||
*
|
||||
* Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||
* this in the preprocessor, but we can live with this because they're
|
||||
* unreleased. Really, we need to have autoconf for the kernel.
|
||||
*/
|
||||
#define unreachable() __builtin_unreachable()
|
||||
|
||||
/* Mark a function definition as prohibited from being cloned. */
|
||||
#define __noclone __attribute__((__noclone__))
|
||||
|
||||
/*
|
||||
* Tell the optimizer that something else uses this function or variable.
|
||||
*/
|
||||
#define __visible __attribute__((externally_visible))
|
||||
|
||||
/*
|
||||
* GCC 'asm goto' miscompiles certain code sequences:
|
||||
*
|
||||
* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||
*
|
||||
* Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||
*
|
||||
* (asm goto is automatically volatile - the naming reflects this.)
|
||||
*/
|
||||
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||
|
||||
#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||
#define __HAVE_BUILTIN_BSWAP32__
|
||||
#define __HAVE_BUILTIN_BSWAP64__
|
||||
#define __HAVE_BUILTIN_BSWAP16__
|
||||
#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,11 @@
|
|||
--- a/scripts/dtc/dtc-lexer.lex.c_shipped 2015-08-07 22:08:04.000000000 +0300
|
||||
+++ b/scripts/dtc/dtc-lexer.lex.c_shipped 2021-11-01 22:15:12.347053553 +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 \
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,99 @@
|
|||
# Architecture
|
||||
BR2_arm=y
|
||||
BR2_arm926t=y
|
||||
BR2_ARM_EABI=y
|
||||
# BR2_ARM_INSTRUCTIONS_THUMB is not set
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="3.4.35"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_4=y
|
||||
|
||||
# Toolchain
|
||||
BR2_PER_PACKAGE_DIRECTORIES=y
|
||||
BR2_GCC_VERSION_7_X=y
|
||||
# BR2_TOOLCHAIN_USES_UCLIBC is not set
|
||||
# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set
|
||||
# BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc"
|
||||
BR2_TOOLCHAIN_USES_MUSL=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_MUSL=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_LIBC="musl"
|
||||
BR2_TOOLCHAIN_BUILDROOT_CXX=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||
|
||||
# Kernel
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.4.35"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_ANYKA_PATH)/board/ak3918ev200/kernel/ak3918ev200.generic.config"
|
||||
BR2_LINUX_KERNEL_UIMAGE=y
|
||||
BR2_LINUX_KERNEL_XZ=y
|
||||
BR2_LINUX_KERNEL_EXT_ANYKA_PATCHER=y
|
||||
BR2_LINUX_KERNEL_EXT_ANYKA_PATCHER_LIST="$(BR2_EXTERNAL_ANYKA_PATH)/board/ak3918ev200/kernel/patches/ $(BR2_EXTERNAL_ANYKA_PATH)/board/ak3918ev200/kernel/overlay"
|
||||
|
||||
# Filesystem
|
||||
# BR2_TARGET_TZ_INFO is not set
|
||||
BR2_TARGET_ROOTFS_CPIO=y
|
||||
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||
BR2_ROOTFS_OVERLAY="$(TOPDIR)/../general/overlay"
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="$(TOPDIR)/../scripts/executing_commands_for_$(BR2_TOOLCHAIN_BUILDROOT_LIBC).sh"
|
||||
|
||||
# OpenIPC configuration
|
||||
BR2_TOOLCHAIN_BUILDROOT_VENDOR="openipc"
|
||||
BR2_TARGET_GENERIC_ISSUE="Welcome to OpenIPC v2.2"
|
||||
BR2_TARGET_GENERIC_HOSTNAME="openipc-ak3918ev200"
|
||||
BR2_GLOBAL_PATCH_DIR="$(TOPDIR)/../general/package/all-patches"
|
||||
|
||||
# OpenIPC packages
|
||||
BR2_PACKAGE_BUSYBOX_CONFIG="$(TOPDIR)/../general/package/busybox/busybox.config"
|
||||
BR2_PACKAGE_DROPBEAR=y
|
||||
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set
|
||||
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
|
||||
BR2_PACKAGE_HASERL=y
|
||||
BR2_PACKAGE_ANYKA_GPIO is not set
|
||||
BR2_PACKAGE_ANYKA_OSDRV_AK3918EV200=y
|
||||
BR2_PACKAGE_IPCTOOL=y
|
||||
BR2_PACKAGE_JSON_C=y
|
||||
BR2_PACKAGE_LAME_OPENIPC=y
|
||||
BR2_PACKAGE_LIBCURL_OPENIPC=y
|
||||
BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y
|
||||
# BR2_PACKAGE_LIBCURL_OPENIPC_VERBOSE is not set
|
||||
# BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set
|
||||
# BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set
|
||||
# BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set
|
||||
BR2_PACKAGE_LIBCURL_OPENIPC_MBEDTLS=y
|
||||
BR2_PACKAGE_LIBEVENT_OPENIPC=y
|
||||
BR2_PACKAGE_LIBEVENT_OPENIPC_REMOVE_PYSCRIPT=y
|
||||
BR2_PACKAGE_LIBOGG_OPENIPC=y
|
||||
BR2_PACKAGE_LIBWEBSOCKETS_OPENIPC=y
|
||||
BR2_PACKAGE_LIBYAML=y
|
||||
BR2_PACKAGE_MAJESTIC_FONTS=y
|
||||
# BR2_PACKAGE_MAJESTIC_AK3918EV200=y
|
||||
BR2_PACKAGE_MBEDTLS_OPENIPC=y
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_PROGRAMS is not set
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_COMPRESSION is not set
|
||||
BR2_PACKAGE_MICROBE_WEB=y
|
||||
# BR2_PACKAGE_MINI_SNMPD is not set
|
||||
BR2_PACKAGE_MOTORS=y
|
||||
BR2_PACKAGE_OPUS_OPENIPC=y
|
||||
BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y
|
||||
# BR2_PACKAGE_SSHPASS is not set
|
||||
BR2_PACKAGE_UACME_OPENIPC=y
|
||||
BR2_PACKAGE_VTUND_OPENIPC=y
|
||||
BR2_PACKAGE_YAML_CLI=y
|
||||
|
||||
# WiFi
|
||||
BR2_PACKAGE_WIRELESS_TOOLS=y
|
||||
BR2_PACKAGE_WPA_SUPPLICANT=y
|
||||
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
|
||||
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
|
||||
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
|
||||
BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC=y
|
||||
BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MT7601U=y
|
||||
BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_RTL8188EU=y
|
||||
# BR2_PACKAGE_RTL8188EU is not set
|
||||
|
||||
# WIREGUARD
|
||||
BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
|
||||
BR2_PACKAGE_WIREGUARD_TOOLS=y
|
|
@ -1,4 +1,5 @@
|
|||
include $(BR2_EXTERNAL_ANYKA_PATH)/linux/linux-ext-anyka_patcher.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/anyka-osdrv-ak3918ev200/anyka-osdrv-ak3918ev200.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/anyka_patcher/anyka_patcher.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/aura-httpd/aura-httpd.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/fdk-aac-openipc/fdk-aac-openipc.mk
|
||||
|
@ -14,7 +15,7 @@ include $(BR2_EXTERNAL_ANYKA_PATH)/package/libsrt-openipc/libsrt-openipc.mk
|
|||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/libwebsockets-openipc/libwebsockets-openipc.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/linux-firmware-openipc/linux-firmware-openipc.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/majestic-fonts/majestic-fonts.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/majestic/majestic.mk
|
||||
#include $(BR2_EXTERNAL_ANYKA_PATH)/package/majestic/majestic.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/mbedtls-openipc/mbedtls-openipc.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/microbe-web/microbe-web.mk
|
||||
include $(BR2_EXTERNAL_ANYKA_PATH)/package/motors/motors.mk
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
../../general/package/anyka-osdrv-ak3918ev200
|
|
@ -0,0 +1 @@
|
|||
../../general/package/anyka_patcher
|
|
@ -825,8 +825,8 @@ CONFIG_INPUT=y
|
|||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_CONSOLE_TRANSLATIONS is not set
|
||||
# CONFIG_VT_CONSOLE is not set
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
|
|
|
@ -826,8 +826,8 @@ CONFIG_INPUT=y
|
|||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_CONSOLE_TRANSLATIONS is not set
|
||||
# CONFIG_VT_CONSOLE is not set
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
|
|
|
@ -826,8 +826,8 @@ CONFIG_INPUT=y
|
|||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_CONSOLE_TRANSLATIONS is not set
|
||||
# CONFIG_VT_CONSOLE is not set
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* board_config.h
|
||||
*
|
||||
* Created on: Jan 9, 2017
|
||||
* Author: duobao
|
||||
*/
|
||||
|
||||
#ifndef BOARD_CONFIG_H_
|
||||
#define BOARD_CONFIG_H_
|
||||
|
||||
/*
|
||||
* GPIO0 -> IRCUT_ON
|
||||
* GPIO1 -> IRCUT_OFF
|
||||
* GPIO2 -> USB_PWREN
|
||||
* GPIO3 -> SD1_PWREN/WIFI_REG_ON
|
||||
* GPIO7 -> IR
|
||||
* GPIO11 -> EMAC PHY Reset
|
||||
* GPIO12 -> CIS_CLK
|
||||
* GPIO13 -> CIS_RSTN
|
||||
* GPIO14 -> CIS_PDN
|
||||
*/
|
||||
|
||||
#define CONFIG_GPIO_EMACPHY_RESET 11
|
||||
#define CONFIG_GPIO_EMACPHY_RXDV 41
|
||||
|
||||
#define CONFIG_GPIO_USB_PWREN 2
|
||||
|
||||
#define CONFIG_ISP_CLK_RATE 150000000
|
||||
#define CONFIG_HEVC_CLK_RATE 200000000
|
||||
#define CONFIG_PAE_CLK_RATE 240000000
|
||||
|
||||
#define FH_BOARD_8852
|
||||
#define CONFIG_PINCTRL_SELECT \
|
||||
"I2C0", "MIPI", "RMII", "SD0_NO_WP", "SSI0_4BIT",\
|
||||
"UART0", "GPIO0", "GPIO1", "GPIO2", "GPIO3", "GPIO7",\
|
||||
"GPIO11", "GPIO13", "GPIO14",\
|
||||
\
|
||||
/* 未引出的pad,默认配置为GPIO */ \
|
||||
"GPIO4", "GPIO5", "GPIO6", "GPIO8", "GPIO9", "GPIO10",\
|
||||
"GPIO19", "GPIO20", "GPIO21", "GPIO22", "GPIO23", "GPIO24",\
|
||||
"GPIO25", "GPIO26", "GPIO27", "GPIO28", "GPIO53",\
|
||||
"GPIO55"
|
||||
|
||||
|
||||
#endif /* BOARD_CONFIG_H_ */
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* board_config.h
|
||||
*
|
||||
* Created on: Jan 9, 2017
|
||||
* Author: duobao
|
||||
*/
|
||||
|
||||
#ifndef BOARD_CONFIG_H_
|
||||
#define BOARD_CONFIG_H_
|
||||
|
||||
/*
|
||||
* GPIO0 -> IRCUT_ON
|
||||
* GPIO1 -> IRCUT_OFF
|
||||
* GPIO2 -> USB_PWREN
|
||||
* GPIO11 -> EMAC PHY Reset
|
||||
* GPIO12 -> CIS_CLK
|
||||
* GPIO13 -> CIS_RSTN
|
||||
* GPIO14 -> CIS_PDN
|
||||
* GPIO19 -> SD1_PWREN/WIFI_REG_ON
|
||||
* GPIO20 -> AK7755 Reset
|
||||
* GPIO24 -> LED0
|
||||
* GPIO25 -> LED1
|
||||
* GPIO26 -> Reset Configs
|
||||
* GPIO27 -> AK7755 PowerDown
|
||||
* GPIO28 -> IR
|
||||
* GPIO53 -> USB_PWREN/SD0_PWREN
|
||||
* GPIO55 -> SD1 WIFI Interrupt
|
||||
*/
|
||||
|
||||
#define CONFIG_GPIO_EMACPHY_RESET 11
|
||||
#define CONFIG_GPIO_EMACPHY_RXDV 41
|
||||
|
||||
#define CONFIG_GPIO_USB_PWREN 2
|
||||
|
||||
#define CONFIG_ISP_CLK_RATE 200000000
|
||||
#define CONFIG_HEVC_CLK_RATE 300000000
|
||||
#define CONFIG_PAE_CLK_RATE 400000000
|
||||
|
||||
#define FH_BOARD_8856
|
||||
#define CONFIG_PINCTRL_SELECT \
|
||||
"I2C0", "I2C1", "MIPI", "RMII", "SD0_NO_WP", \
|
||||
"SD1_NO_WP", "SSI0_4BIT", "UART0", "GPIO0", "GPIO1", \
|
||||
"GPIO2", "GPIO3", "GPIO11", "GPIO13", "GPIO14", \
|
||||
"GPIO19", "GPIO20", "GPIO24", "GPIO25", "GPIO26", \
|
||||
"GPIO27", "GPIO28", "GPIO53", "GPIO55"
|
||||
|
||||
#endif /* BOARD_CONFIG_H_ */
|
|
@ -0,0 +1,21 @@
|
|||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -552,11 +552,17 @@
|
||||
include/config/auto.conf: ;
|
||||
endif # $(dot-config)
|
||||
|
||||
+export PROJECT_NAME = $(shell grep -e '^CONFIG_MACH_FH.*' .config|sed 's/CONFIG_MACH_\(.*\)=y/\1/'|awk '{print tolower($$0)}')
|
||||
+
|
||||
+PHONY += boardconfig
|
||||
+boardconfig:
|
||||
+ cp arch/arm/mach-fh/include/mach/board_config.$(PROJECT_NAME).appboard arch/arm/mach-fh/include/mach/board_config.h
|
||||
+
|
||||
# The all: target is the default when no target is given on the
|
||||
# command line.
|
||||
# This allow a user to issue only 'make' to build a kernel including modules
|
||||
# Defaults to vmlinux, but the arch makefile usually adds further targets
|
||||
-all: vmlinux
|
||||
+all: boardconfig vmlinux
|
||||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
KBUILD_CFLAGS += -Os
|
|
@ -0,0 +1,144 @@
|
|||
--- a/drivers/tty/pty.c
|
||||
+++ b/drivers/tty/pty.c
|
||||
@@ -721,7 +721,18 @@ err_file:
|
||||
return retval;
|
||||
}
|
||||
|
||||
-static struct file_operations ptmx_fops;
|
||||
+static const struct file_operations ptmx_fops =
|
||||
+{
|
||||
+ .llseek = no_llseek,
|
||||
+ .read = tty_read,
|
||||
+ .write = tty_write,
|
||||
+ .poll = tty_poll,
|
||||
+ .unlocked_ioctl = tty_ioctl,
|
||||
+ .compat_ioctl = tty_compat_ioctl,
|
||||
+ .open = ptmx_open,
|
||||
+ .release = tty_release,
|
||||
+ .fasync = tty_fasync,
|
||||
+};
|
||||
|
||||
static void __init unix98_pty_init(void)
|
||||
{
|
||||
@@ -775,9 +786,6 @@ static void __init unix98_pty_init(void)
|
||||
register_sysctl_table(pty_root_table);
|
||||
|
||||
/* Now create the /dev/ptmx special device */
|
||||
- tty_default_fops(&ptmx_fops);
|
||||
- ptmx_fops.open = ptmx_open;
|
||||
-
|
||||
cdev_init(&ptmx_cdev, &ptmx_fops);
|
||||
if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
|
||||
register_chrdev_region(MKDEV(TTYAUX_MAJOR, 2), 1, "/dev/ptmx") < 0)
|
||||
|
||||
--- a/drivers/tty/tty_io.c
|
||||
+++ b/drivers/tty/tty_io.c
|
||||
@@ -137,21 +137,10 @@ EXPORT_SYMBOL(tty_mutex);
|
||||
/* Spinlock to protect the tty->tty_files list */
|
||||
DEFINE_SPINLOCK(tty_files_lock);
|
||||
|
||||
-static ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
|
||||
-static ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
|
||||
ssize_t redirected_tty_write(struct file *, const char __user *,
|
||||
size_t, loff_t *);
|
||||
-static unsigned int tty_poll(struct file *, poll_table *);
|
||||
static int tty_open(struct inode *, struct file *);
|
||||
-long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
|
||||
-#ifdef CONFIG_COMPAT
|
||||
-static long tty_compat_ioctl(struct file *file, unsigned int cmd,
|
||||
- unsigned long arg);
|
||||
-#else
|
||||
-#define tty_compat_ioctl NULL
|
||||
-#endif
|
||||
static int __tty_fasync(int fd, struct file *filp, int on);
|
||||
-static int tty_fasync(int fd, struct file *filp, int on);
|
||||
static void release_tty(struct tty_struct *tty, int idx);
|
||||
static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
|
||||
static void proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
|
||||
@@ -962,7 +951,7 @@ static void tty_update_time(struct timespec *time)
|
||||
* read calls may be outstanding in parallel.
|
||||
*/
|
||||
|
||||
-static ssize_t tty_read(struct file *file, char __user *buf, size_t count,
|
||||
+ssize_t tty_read(struct file *file, char __user *buf, size_t count,
|
||||
loff_t *ppos)
|
||||
{
|
||||
int i;
|
||||
@@ -1141,7 +1130,7 @@ void tty_write_message(struct tty_struct *tty, char *msg)
|
||||
* write method will not be invoked in parallel for each device.
|
||||
*/
|
||||
|
||||
-static ssize_t tty_write(struct file *file, const char __user *buf,
|
||||
+ssize_t tty_write(struct file *file, const char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct inode *inode = file->f_path.dentry->d_inode;
|
||||
@@ -2002,7 +1991,7 @@ got_driver:
|
||||
* may be re-entered freely by other callers.
|
||||
*/
|
||||
|
||||
-static unsigned int tty_poll(struct file *filp, poll_table *wait)
|
||||
+unsigned int tty_poll(struct file *filp, poll_table *wait)
|
||||
{
|
||||
struct tty_struct *tty = file_tty(filp);
|
||||
struct tty_ldisc *ld;
|
||||
@@ -2059,7 +2048,7 @@ out:
|
||||
return retval;
|
||||
}
|
||||
|
||||
-static int tty_fasync(int fd, struct file *filp, int on)
|
||||
+int tty_fasync(int fd, struct file *filp, int on)
|
||||
{
|
||||
int retval;
|
||||
tty_lock();
|
||||
@@ -3246,11 +3235,6 @@ struct tty_struct *get_current_tty(void)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(get_current_tty);
|
||||
|
||||
-void tty_default_fops(struct file_operations *fops)
|
||||
-{
|
||||
- *fops = tty_fops;
|
||||
-}
|
||||
-
|
||||
/*
|
||||
* Initialize the console device. This is called *early*, so
|
||||
* we can't necessarily depend on lots of kernel help here.
|
||||
|
||||
--- a/include/linux/tty.h
|
||||
+++ b/include/linux/tty.h
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <linux/tty_driver.h>
|
||||
#include <linux/tty_ldisc.h>
|
||||
#include <linux/mutex.h>
|
||||
+#include <linux/poll.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
|
||||
@@ -470,7 +471,6 @@ extern int tty_perform_flush(struct tty_struct *tty, unsigned long arg);
|
||||
extern dev_t tty_devnum(struct tty_struct *tty);
|
||||
extern void proc_clear_tty(struct task_struct *p);
|
||||
extern struct tty_struct *get_current_tty(void);
|
||||
-extern void tty_default_fops(struct file_operations *fops);
|
||||
extern struct tty_struct *alloc_tty_struct(void);
|
||||
extern int tty_alloc_file(struct file *file);
|
||||
extern void tty_add_file(struct tty_struct *tty, struct file *file);
|
||||
@@ -482,6 +482,19 @@ extern void deinitialize_tty_struct(struct tty_struct *tty);
|
||||
extern struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx,
|
||||
int first_ok);
|
||||
extern int tty_release(struct inode *inode, struct file *filp);
|
||||
+extern ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
|
||||
+extern ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
|
||||
+extern unsigned int tty_poll(struct file *, poll_table *);
|
||||
+
|
||||
+#ifdef CONFIG_COMPAT
|
||||
+extern long tty_compat_ioctl(struct file *file, unsigned int cmd,
|
||||
+ unsigned long arg);
|
||||
+#else
|
||||
+#define tty_compat_ioctl NULL
|
||||
+#endif
|
||||
+extern int tty_fasync(int fd, struct file *filp, int on);
|
||||
+
|
||||
+
|
||||
extern int tty_init_termios(struct tty_struct *tty);
|
||||
|
||||
extern struct tty_struct *tty_pair_get_tty(struct tty_struct *tty);
|
|
@ -0,0 +1,28 @@
|
|||
--- a/drivers/net/fh_gmac/fh_gmac_phyt.c
|
||||
+++ b/drivers/net/fh_gmac/fh_gmac_phyt.c
|
||||
@@ -83,6 +83,7 @@
|
||||
if (pGmac->phy_interface == PHY_INTERFACE_MODE_RMII) {
|
||||
switch (pGmac->phydev->phy_id) {
|
||||
case FH_GMAC_PHY_RTL8201:
|
||||
+ case FH_GMAC_PHY_JL1101:
|
||||
fh_mdio_write(bus, phyid,
|
||||
gmac_phyt_rtl8201_page_select, 7);
|
||||
fh_mdio_write(bus, phyid,
|
||||
@@ -116,6 +117,7 @@
|
||||
} else if (pGmac->phy_interface == PHY_INTERFACE_MODE_MII) {
|
||||
switch (pGmac->phydev->phy_id) {
|
||||
case FH_GMAC_PHY_RTL8201:
|
||||
+ case FH_GMAC_PHY_JL1101:
|
||||
fh_mdio_write(bus, phyid,
|
||||
gmac_phyt_rtl8201_page_select, 7);
|
||||
fh_mdio_write(bus, phyid,
|
||||
--- a/drivers/net/fh_gmac/fh_gmac_phyt.h
|
||||
+++ b/drivers/net/fh_gmac/fh_gmac_phyt.h
|
||||
@@ -11,6 +11,7 @@
|
||||
#define FH_GMAC_PHY_IP101G 0x02430C54
|
||||
#define FH_GMAC_PHY_RTL8201 0x001CC816
|
||||
#define FH_GMAC_PHY_TI83848 0xFFFFFFFF
|
||||
+#define FH_GMAC_PHY_JL1101 0x937c4023
|
||||
|
||||
enum
|
||||
{
|
|
@ -0,0 +1,19 @@
|
|||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -612,11 +612,15 @@
|
||||
KBUILD_MODULES := 1
|
||||
endif
|
||||
|
||||
+PHONY += boardconfig
|
||||
+boardconfig:
|
||||
+ cp arch/arm/mach-fh/$(PROJECT_NAME)/board_config.$(PROJECT_NAME).appboard arch/arm/mach-fh/include/mach/board_config.h
|
||||
+
|
||||
# The all: target is the default when no target is given on the
|
||||
# command line.
|
||||
# This allow a user to issue only 'make' to build a kernel including modules
|
||||
# Defaults to vmlinux, but the arch makefile usually adds further targets
|
||||
-all: vmlinux
|
||||
+all: boardconfig vmlinux
|
||||
|
||||
KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
|
||||
KBUILD_AFLAGS += $(call cc-option,-fno-PIE)
|
|
@ -0,0 +1,12 @@
|
|||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1159,6 +1160,9 @@
|
||||
{ "by25q128as", INFO(0x684018, 0, 64 * 1024, 256,
|
||||
SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
|
||||
FLASH_DEFAULT_CLOCK_FREQ)},
|
||||
+ { "by25q64as", INFO(0x684017, 0, 64 * 1024, 128,
|
||||
+ SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
|
||||
+ FLASH_DEFAULT_CLOCK_FREQ)},
|
||||
{ },
|
||||
};
|
||||
|
|
@ -2,7 +2,6 @@
|
|||
BR2_arm=y
|
||||
BR2_arm1176jzf_s=y
|
||||
BR2_ARM_EABI=y
|
||||
# BR2_ARM_INSTRUCTIONS_THUMB is not set
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="3.0.8"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0=y
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
BR2_arm=y
|
||||
BR2_arm1176jzf_s=y
|
||||
BR2_ARM_EABI=y
|
||||
# BR2_ARM_INSTRUCTIONS_THUMB is not set
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="3.0.8"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0=y
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
# Architecture
|
||||
BR2_arm=y
|
||||
BR2_cortex_a7=y
|
||||
BR2_arm1176jzf_s=y
|
||||
BR2_ARM_EABI=y
|
||||
BR2_ARM_FPU_NEON_VFPV4=y
|
||||
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="4.9.129"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
# Architecture
|
||||
BR2_arm=y
|
||||
BR2_cortex_a7=y
|
||||
BR2_arm1176jzf_s=y
|
||||
BR2_ARM_EABI=y
|
||||
BR2_ARM_FPU_NEON_VFPV4=y
|
||||
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="4.9.129"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
BR2_arm=y
|
||||
BR2_arm1176jzf_s=y
|
||||
BR2_ARM_EABI=y
|
||||
# BR2_ARM_INSTRUCTIONS_THUMB is not set
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="3.0.8"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0=y
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
# Architecture
|
||||
BR2_arm=y
|
||||
BR2_cortex_a7=y
|
||||
BR2_arm1176jzf_s=y
|
||||
BR2_ARM_EABI=y
|
||||
BR2_ARM_FPU_NEON_VFPV4=y
|
||||
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="4.9.129"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
# Architecture
|
||||
BR2_arm=y
|
||||
BR2_cortex_a7=y
|
||||
BR2_arm1176jzf_s=y
|
||||
BR2_ARM_EABI=y
|
||||
BR2_ARM_FPU_NEON_VFPV4=y
|
||||
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="4.9.129"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
# Architecture
|
||||
BR2_arm=y
|
||||
BR2_cortex_a7=y
|
||||
BR2_arm1176jzf_s=y
|
||||
BR2_ARM_EABI=y
|
||||
BR2_ARM_FPU_NEON_VFPV4=y
|
||||
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="4.9.129"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
# Architecture
|
||||
BR2_arm=y
|
||||
BR2_cortex_a7=y
|
||||
BR2_arm1176jzf_s=y
|
||||
BR2_ARM_EABI=y
|
||||
BR2_ARM_FPU_NEON_VFPV4=y
|
||||
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="4.9.129"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||
|
|
|
@ -60,6 +60,12 @@ sdk() {
|
|||
|
||||
#################################################################################
|
||||
|
||||
ak3918ev200() {
|
||||
soc="ak3918ev200"
|
||||
fresh && make PLATFORM=anyka BOARD=unknown_unknown_${soc}_openipc all && rename
|
||||
}
|
||||
|
||||
#################################################################################
|
||||
fh8833v100() {
|
||||
soc="fh8833v100"
|
||||
fresh && make PLATFORM=fullhan BOARD=unknown_unknown_${soc}_openipc all && rename
|
||||
|
@ -390,6 +396,8 @@ xm550() {
|
|||
|
||||
# Build firmware
|
||||
#
|
||||
# ak3918ev200 # testing..
|
||||
#
|
||||
# fh8833v100 # testing..
|
||||
# fh8852v100 # testing..
|
||||
# fh8856v100 # testing..
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
config BR2_PACKAGE_ANYKA_OSDRV_AK3918EV200
|
||||
bool "anyka-osdrv-ak3918ev200"
|
||||
help
|
||||
anyka-osdrv-ak3918ev200 - Anyka kernel modules and libs
|
||||
|
||||
https://openipc.org
|
|
@ -0,0 +1,35 @@
|
|||
################################################################################
|
||||
#
|
||||
# anyka-osdrv-ak3918ev200
|
||||
#
|
||||
################################################################################
|
||||
|
||||
ANYKA_OSDRV_AK3918EV200_VERSION =
|
||||
ANYKA_OSDRV_AK3918EV200_SITE =
|
||||
ANYKA_OSDRV_AK3918EV200_LICENSE = MIT
|
||||
ANYKA_OSDRV_AK3918EV200_LICENSE_FILES = LICENSE
|
||||
|
||||
|
||||
define ANYKA_OSDRV_AK3918EV200_INSTALL_TARGET_CMDS
|
||||
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
|
||||
$(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(BR2_EXTERNAL_ANYKA_PATH)/package/anyka-osdrv-ak3918ev200/files/script/S95anyka
|
||||
|
||||
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors
|
||||
$(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors $(BR2_EXTERNAL_ANYKA_PATH)/package/anyka-osdrv-ak3918ev200/files/sensor/config/*.conf
|
||||
|
||||
$(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/3.4.35/anyka
|
||||
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.4.35/anyka $(BR2_EXTERNAL_ANYKA_PATH)/package/anyka-osdrv-ak3918ev200/files/kmod/*.ko
|
||||
|
||||
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
|
||||
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_ANYKA_PATH)/package/anyka-osdrv-ak3918ev200/files/script/load_anyka
|
||||
# $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_ANYKA_PATH)/package/anyka-osdrv-ak3918ev200/files/script/ircut_demo
|
||||
|
||||
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors
|
||||
# $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors $(BR2_EXTERNAL_ANYKA_PATH)/package/anyka-osdrv-ak3918ev200/files/sensor/*.so
|
||||
|
||||
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib
|
||||
|
||||
# $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(BR2_EXTERNAL_ANYKA_PATH)/package/anyka-osdrv-ak3918ev200/files/lib/xxx.so
|
||||
endef
|
||||
|
||||
$(eval $(generic-package))
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,73 @@
|
|||
#!/bin/sh
|
||||
|
||||
DAEMON="majestic"
|
||||
PIDFILE="/var/run/$DAEMON.pid"
|
||||
|
||||
DAEMON_ARGS="-s"
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
|
||||
|
||||
load_majestic() {
|
||||
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"
|
||||
}
|
||||
|
||||
# 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 anyka "Check MAC for Xiongmai devices"
|
||||
if [ "$(fw_printenv -n ethaddr)" = "00:00:23:34:45:66" ]; then
|
||||
logger -s -p daemon.info -t anyka "The eth0 interface has a lousy MAC, let's try to change it.."
|
||||
XMMAC="$(ipcinfo --xm_mac)" && [ -n "${XMMAC}" ] && fw_setenv ethaddr ${XMMAC} && reboot -f || logger -s -p daemon.info -t anyka "It is not possible to install a new MAC on the eth0 interface.."
|
||||
else
|
||||
logger -s -p daemon.info -t anyka "The eth0 interface has a correct MAC - $(fw_printenv -n ethaddr)"
|
||||
fi
|
||||
#
|
||||
logger -s -p daemon.info -t anyka "Loading of kernel modules and initialization of the video system has started"
|
||||
export TZ=$(cat /etc/TZ)
|
||||
#load_anyka
|
||||
#
|
||||
#load_majestic
|
||||
}
|
||||
|
||||
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
|
||||
reload
|
||||
}
|
||||
|
||||
reload() {
|
||||
load_majestic
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start|stop|restart|reload)
|
||||
"$1";;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|reload}"
|
||||
exit 1
|
||||
esac
|
|
@ -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
|
|
@ -0,0 +1,196 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# This is part of OpenIPC.org project | 2020.08.01
|
||||
#
|
||||
# ar0237 imx290 imx307 imx323 imx385 jxf22 ov2718 ov2718_2a sc2235
|
||||
|
||||
|
||||
# SoC detect
|
||||
chipid=$(ipcinfo --chip_id)
|
||||
|
||||
# MMZ config
|
||||
mem_start=0x80000000; # phy mem start
|
||||
|
||||
mem_total=$(fw_printenv -n totalmem | tr -d 'M')
|
||||
mem_total=${mem_total:=64}
|
||||
|
||||
os_mem_size=$(fw_printenv -n osmem | tr -d 'M')
|
||||
os_mem_size=${os_mem_size:=32}
|
||||
|
||||
report_error()
|
||||
{
|
||||
echo "******* Error: There's something wrong, please check! *****"
|
||||
exit 1
|
||||
}
|
||||
|
||||
insert_mmz()
|
||||
{
|
||||
}
|
||||
|
||||
insert_detect()
|
||||
{
|
||||
insert_mmz
|
||||
insert_isp
|
||||
SENSOR=ar0130 insert_sns
|
||||
}
|
||||
|
||||
remove_detect()
|
||||
{
|
||||
}
|
||||
|
||||
remove_sns()
|
||||
{
|
||||
rmmod sensor_spi &> /dev/null
|
||||
rmmod sensor_i2c &> /dev/null
|
||||
}
|
||||
|
||||
insert_isp()
|
||||
{
|
||||
}
|
||||
|
||||
insert_sns()
|
||||
{
|
||||
}
|
||||
|
||||
insert_ko()
|
||||
{
|
||||
find . -maxdepth 1 -type f -name "sensor_*.ko" -exec insmod {} \;
|
||||
insmod akcamera.ko
|
||||
}
|
||||
|
||||
remove_ko()
|
||||
{
|
||||
}
|
||||
|
||||
calc_mmz_info()
|
||||
{
|
||||
mmz_start=`echo "$mem_start $os_mem_size" |
|
||||
awk 'BEGIN { temp = 0; }
|
||||
{
|
||||
temp = $1/1024/1024 + $2;
|
||||
}
|
||||
END { printf("0x%x00000\n", temp); }'`
|
||||
|
||||
mmz_size=`echo "$mem_total $os_mem_size" |
|
||||
awk 'BEGIN { temp = 0; }
|
||||
{
|
||||
temp = $1 - $2;
|
||||
}
|
||||
END { printf("%dM\n", temp); }'`
|
||||
echo "mmz_start: $mmz_start, mmz_size: $mmz_size"
|
||||
}
|
||||
|
||||
|
||||
######################parse arg###################################
|
||||
b_arg_os_mem=0
|
||||
b_arg_total_mem=0
|
||||
b_arg_sensor=0
|
||||
b_arg_insmod=0
|
||||
b_arg_remove=0
|
||||
b_arg_online=1
|
||||
|
||||
for arg in $@
|
||||
do
|
||||
if [ $b_arg_total_mem -eq 1 ]; then
|
||||
b_arg_total_mem=0;
|
||||
mem_total=$arg;
|
||||
|
||||
if [ -z $mem_total ]; then
|
||||
echo "[error] mem_total is null"
|
||||
exit;
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $b_arg_os_mem -eq 1 ] ; then
|
||||
b_arg_os_mem=0;
|
||||
os_mem_size=$arg;
|
||||
|
||||
if [ -z $os_mem_size ]; then
|
||||
echo "[error] os_mem_size is null"
|
||||
exit;
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $b_arg_sensor -eq 1 ] ; then
|
||||
b_arg_sensor=0
|
||||
SENSOR=$arg;
|
||||
fi
|
||||
|
||||
case $arg in
|
||||
"-i")
|
||||
b_arg_insmod=1;
|
||||
;;
|
||||
"-r")
|
||||
b_arg_remove=1;
|
||||
;;
|
||||
"-a")
|
||||
b_arg_insmod=1;
|
||||
b_arg_remove=1;
|
||||
;;
|
||||
"-h")
|
||||
load_usage;
|
||||
;;
|
||||
"-sensor")
|
||||
b_arg_sensor=1;
|
||||
;;
|
||||
"-osmem")
|
||||
b_arg_os_mem=1;
|
||||
;;
|
||||
"-total")
|
||||
b_arg_total_mem=1;
|
||||
;;
|
||||
"-offline")
|
||||
b_arg_online=0;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
#######################parse arg end########################
|
||||
|
||||
if [ $os_mem_size -ge $mem_total ] ; then
|
||||
echo "[err] os_mem[$os_mem_size], over total_mem[$mem_total]"
|
||||
exit;
|
||||
fi
|
||||
|
||||
calc_mmz_info;
|
||||
|
||||
#######################Action###############################
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
load_usage;
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
# Sensor config
|
||||
# SENSOR=${SENSOR:=imx307}
|
||||
#
|
||||
|
||||
if [ -n "$SENSOR" ]; then
|
||||
logger -s -p daemon.info -t anyka "Manualy set SENSOR as ${SENSOR}"
|
||||
else
|
||||
if fw_printenv -n sensor >/dev/null; then
|
||||
SENSOR_ENV=$(fw_printenv -n sensor)
|
||||
export SENSOR=${SENSOR_ENV}
|
||||
logger -s -p daemon.info -t anyka "Get data from environment and set SENSOR as ${SENSOR}"
|
||||
else
|
||||
#insert_detect
|
||||
SENSOR_DETECT=$(ipcinfo --short-sensor)
|
||||
export SENSOR=${SENSOR_DETECT:=unknown}
|
||||
#remove_detect
|
||||
logger -s -p daemon.info -t anyka "Get data from ipcinfo and set SENSOR as ${SENSOR}"
|
||||
fw_setenv sensor $SENSOR && logger -s -p daemon.info -t anyka "Write detected ${SENSOR} to U-Boot ENV"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $b_arg_remove -eq 1 ]; then
|
||||
remove_ko;
|
||||
fi
|
||||
|
||||
cd /lib/modules/3.4.35/anyka
|
||||
|
||||
if [ "$SENSOR" = "unknown" ]; then
|
||||
exit 1
|
||||
else
|
||||
if [ $b_arg_insmod -eq 1 ]; then
|
||||
insert_ko;
|
||||
fi
|
||||
fi
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
|
||||
config BR2_PACKAGE_ANYKA_PATCHER
|
||||
bool
|
|
@ -0,0 +1,13 @@
|
|||
################################################################################
|
||||
#
|
||||
# anyka_patcher
|
||||
#
|
||||
################################################################################
|
||||
|
||||
ANYKA_PATCHER_VERSION = 0.1
|
||||
ANYKA_PATCHER_INSTALL_TARGET = NO
|
||||
ANYKA_PATCHER_INSTALL_STAGING = NO
|
||||
ANYKA_PATCHER_SITE =
|
||||
ANYKA_PATCHER_SOURCE =
|
||||
|
||||
$(eval $(generic-package))
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/bash
|
||||
|
||||
function log() {
|
||||
echo "--- $@"
|
||||
}
|
||||
|
||||
function apply_patch() {
|
||||
DST=$1
|
||||
SRC=$2
|
||||
|
||||
if [[ -d $SRC ]]; then
|
||||
if [[ ${SRC:${#SRC}-1} != '/' ]]; then
|
||||
log Apply \"$SRC\" as overlay directory
|
||||
cp -r $SRC/* $DST/
|
||||
else
|
||||
log Apply \"$SRC\" as patches directory
|
||||
for P in $SRC/*.patch; do
|
||||
patch -d $DST -p1 < $P
|
||||
done
|
||||
fi
|
||||
else
|
||||
log Apply \"$SRC\" as single patch
|
||||
patch -d $DST -p1 < $SRC
|
||||
fi
|
||||
}
|
||||
|
||||
function apply_patches() {
|
||||
log Gonna apply "$@"
|
||||
while [[ $# -ge 1 ]]; do
|
||||
apply_patch $DST $1
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
DST=$1
|
||||
shift
|
||||
|
||||
if [ -f $DST/.anyka-patched ]; then
|
||||
log Patched already
|
||||
exit
|
||||
fi
|
||||
|
||||
apply_patches $@
|
||||
touch $DST/.anyka-patched
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue