Compare commits

..

28 Commits
master ... 15.6

Author SHA1 Message Date
zzh
e5d591e659 modify bin 2026-05-08 13:25:20 +08:00
zzh
48b1c0c3e8 modify e_player bin 2026-05-07 13:43:09 +08:00
zzh
d8c2cf152d change boot pic eplayer 2026-05-06 13:57:03 +08:00
zzh
37b3b54b50 change localtime 2026-05-06 13:56:43 +08:00
zzh
2aa0dc9607 ota /data dir 2026-05-06 10:38:41 +08:00
zzh
2eec57d66f change ota package path 2026-04-30 10:23:16 +08:00
zzh
0fde37e681 auto-mount OTA volume to /mnt/ota at boot 2026-04-27 18:37:07 +08:00
zzh
df0a1768ec add system ota 2026-04-27 18:10:26 +08:00
hyx
6976680043 update e_player and bt 2026-04-27 15:54:34 +08:00
zzh
54fe12b755 change rootfs size 2026-04-21 16:41:55 +08:00
zzh
ee169a5caa modify bluetooth script and btgatt-server permission 2026-04-21 14:47:02 +08:00
zzh
53aa17a9b6 add application new path and recovery path 2026-04-21 14:14:23 +08:00
zzh
d021abeaa0 modify partition 2026-04-21 14:13:17 +08:00
zzh
a34ee348b3 add e_player crash recovery 2026-04-21 14:11:44 +08:00
zzh
d1f54c3292 add e_player init start 2026-04-21 14:09:48 +08:00
hyx
6ebac57538 add audio 2026-04-17 17:45:42 +08:00
hyx
155c1db7ff add ntpd add acc 2026-04-15 15:04:57 +08:00
hyx
6cf426630a fix display video fail 2026-04-13 14:53:01 +08:00
hyx
17972d0511 change nand to 256M 2026-04-10 19:38:41 +08:00
hyx
16ee54451d bluetooth can be found e_player can run 2026-04-09 12:30:22 +08:00
hyx
356d026942 add tow nand support 2026-04-08 15:29:27 +08:00
hyx
988afb1801 add e_player lib remove wifi log 2026-04-07 19:45:10 +08:00
hyx
4c2ae49097 add wifibt driver aic8800d40l 2026-04-03 22:27:28 +08:00
hyx
5516f07924 add lt8911exb driver 2026-04-02 19:23:55 +08:00
hyx
6e767291b5 change CMA size 2026-03-09 16:40:10 +08:00
hyx
1d3a392fd3 add clean.sh 2026-03-07 13:43:33 +08:00
hyx
154fb84449 fix compile host-pcre-8.45 error 2026-03-07 13:35:51 +08:00
hyx
7c7662e99b add build.sh 2026-03-07 10:12:03 +08:00
87 changed files with 3304 additions and 222 deletions

906
.config Normal file
View File

@ -0,0 +1,906 @@
#
# Automatically generated file; DO NOT EDIT.
# ArtInChip Luban SDK Configuration
#
BR2_HAVE_DOT_CONFIG=y
BR2_JLEVEL=0
BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig"
BR2_DL_DIR="$(TOPDIR)/dl"
BR2_PACKAGES_DIR="$(TOPDIR)/source"
BR2_PREBUILT_DIR="$(TOPDIR)/prebuilt"
BR2_HOST_DIR="$(BASE_DIR)/host"
BR2_SHARED_STATIC_LIBS=y
BR2_WGET="wget --passive-ftp -nd -t 3"
BR2_SVN="svn --non-interactive"
BR2_BZR="bzr"
BR2_GIT="git"
BR2_CVS="cvs"
BR2_LOCALFILES="cp"
BR2_SCP="scp"
BR2_OPENSSH="ssh"
BR2_HG="hg"
BR2_ZCAT="gzip -d -c"
BR2_BZCAT="bzcat"
BR2_XZCAT="xzcat"
BR2_LZCAT="lzip -d -c"
BR2_TAR_OPTIONS=""
#
# Target options
#
BR2_ARCH_IS_64=y
BR2_ARCH_HAS_MMU_OPTIONAL=y
BR2_riscv=y
BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_5=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_6=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_7=y
BR2_ARCH="riscv64"
BR2_ENDIAN="LITTLE"
BR2_GCC_TARGET_ABI="lp64d"
BR2_BINFMT_SUPPORTS_SHARED=y
BR2_READELF_ARCH_NAME="RISC-V"
BR2_BINFMT_ELF=y
BR2_RISCV_ISA_RVI=y
BR2_RISCV_ISA_RVM=y
BR2_RISCV_ISA_RVA=y
BR2_RISCV_ISA_RVF=y
BR2_RISCV_ISA_RVD=y
BR2_RISCV_ISA_RVC=y
BR2_RISCV_ISA_RVXTHEAD=y
# BR2_riscv32_gcxthead is not set
# BR2_riscv32_gcvxthead is not set
BR2_riscv64_gcxthead=y
# BR2_riscv64_gcvxthead is not set
BR2_RISCV_64=y
BR2_RISCV_ABI_LP64D=y
LUBAN_CHIP_D211=y
LUBAN_BOARD_D211_PER1_MMC=y
# LUBAN_BOARD_D211_PER2_SPINOR is not set
# LUBAN_BOARD_D211_PER2_SPINAND is not set
# LUBAN_BOARD_D211_DEMO is not set
# LUBAN_BOARD_D211_DEMO88_NAND is not set
# LUBAN_BOARD_D211_PER1_MMC_SECURE_BOOT is not set
# LUBAN_BOARD_D211_OTA is not set
# LUBAN_BOARD_D211_DEMO100_NAND is not set
# LUBAN_BOARD_D211_DEMO128_NAND is not set
# LUBAN_BOARD_D211_OTA_EMMC is not set
# LUBAN_BOARD_D211_DEMO88_NOR is not set
# LUBAN_BOARD_D211_DEMO88_NOR_MUSL is not set
# LUBAN_BOARD_D211_QC128_MMC is not set
# LUBAN_BOARD_D211_AISHOOT88_NOR is not set
LUBAN_BOARD_OF_D211="per1"
LUBAN_CHIP_NAME="d211"
LUBAN_BOARD_NAME="per1"
#
# Toolchain
#
BR2_TOOLCHAIN=y
BR2_USE_MMU=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL=y
BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL="toolchain-external-custom"
BR2_TOOLCHAIN_EXTERNAL_PREFIX="$(ARCH)-linux"
BR2_TOOLCHAIN_EXTERNAL_URL=""
BR2_TOOLCHAIN_EXTERNAL_REL_BIN_PATH="bin"
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(ARCH)-linux"
BR2_TOOLCHAIN_EXTERNAL_GCC_11=y
# BR2_TOOLCHAIN_EXTERNAL_GCC_10 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_9 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_8 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_7 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_6 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_5 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_4_9 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_4_8 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_4_7 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_4_6 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_4_5 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_4_4 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 is not set
# BR2_TOOLCHAIN_EXTERNAL_GCC_OLD is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_15 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_14 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_13 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_12 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_11 is not set
BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_10=y
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_8 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_7 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_6 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_5 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_4 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_3 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_2 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_1 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_0 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_20 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_19 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_18 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_17 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_15 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_11 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0 is not set
# BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD is not set
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC=y
# BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC is not set
# BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL is not set
BR2_TARGET_OPTIMIZATION=""
#
# Advance setting
#
# BR2_TOOLCHAIN_EXTERNAL_WCHAR is not set
# BR2_TOOLCHAIN_EXTERNAL_LOCALE is not set
BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS=y
BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG=y
BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL=y
# BR2_TOOLCHAIN_EXTERNAL_HAS_SSP is not set
# BR2_TOOLCHAIN_EXTERNAL_INET_RPC is not set
BR2_TOOLCHAIN_EXTERNAL_CXX=y
# BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY is not set
BR2_TOOLCHAIN_EXTRA_LIBS=""
BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS=y
BR2_INSTALL_LIBSTDCPP=y
BR2_TOOLCHAIN_HAS_THREADS=y
BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y
BR2_TOOLCHAIN_HAS_THREADS_NPTL=y
BR2_TOOLCHAIN_HAS_SYNC_4=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10=y
BR2_HOST_GCC_AT_LEAST_4_9=y
BR2_HOST_GCC_AT_LEAST_5=y
BR2_HOST_GCC_AT_LEAST_6=y
#
# Build options
#
BR2_MAKE_WITH_MULTI_THREAD=y
# BR2_OPTIMIZE_0 is not set
# BR2_OPTIMIZE_1 is not set
# BR2_OPTIMIZE_2 is not set
# BR2_OPTIMIZE_3 is not set
BR2_OPTIMIZE_S=y
# BR2_ENABLE_DEBUG is not set
BR2_STRIP_strip=y
BR2_STRIP_EXCLUDE_FILES=""
BR2_STRIP_EXCLUDE_DIRS=""
# BR2_FORCE_BUILD_FROM_SOURCE is not set
# BR2_GENERATE_PREBUILT_TARBALL is not set
#
# System configuration
#
BR2_TARGET_GENERIC_HOSTNAME="aic"
BR2_TARGET_GENERIC_ISSUE="Welcome to ArtInChip Luban Linux"
BR2_TARGET_ENABLE_ROOT_LOGIN=y
BR2_TARGET_GENERIC_ROOT_PASSWD=""
BR2_SYSTEM_DHCP=""
# BR2_TARGET_TZ_INFO is not set
BR2_ROOTFS_USERS_TABLES=""
BR2_ROOTFS_OVERLAY="target/$(LUBAN_CHIP_NAME)/$(LUBAN_BOARD_NAME)/rootfs_overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT=""
BR2_ROOTFS_POST_FAKEROOT_SCRIPT=""
BR2_ROOTFS_POST_IMAGE_SCRIPT=""
#
# Advance setting
#
BR2_ROOTFS_SKELETON_DEFAULT=y
BR2_INIT_BUSYBOX=y
# BR2_INIT_SYSV is not set
# BR2_INIT_NONE is not set
BR2_TARGET_INSTALL_ETC_CONFIG=y
BR2_ENABLE_LOCALE_PURGE=y
BR2_ENABLE_LOCALE_WHITELIST="C en_US"
#
# NLS support needs a toolchain w/ wchar, dynamic library
#
BR2_TARGET_GENERIC_GETTY=y
BR2_TARGET_GENERIC_GETTY_PORT="console"
BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP=y
# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set
# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set
# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set
# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set
# BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200 is not set
BR2_TARGET_GENERIC_GETTY_BAUDRATE="0"
BR2_TARGET_GENERIC_GETTY_TERM="vt100"
BR2_TARGET_GENERIC_GETTY_OPTIONS=""
# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y
# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set
# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set
BR2_ROOTFS_DEVICE_TABLE="package/system/device_table.txt"
# BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is not set
# BR2_ROOTFS_MERGED_USR is not set
BR2_TARGET_GENERIC_PASSWD_SHA256=y
# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set
BR2_SYSTEM_BIN_SH_BUSYBOX=y
#
# bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
#
# BR2_SYSTEM_BIN_SH_NONE is not set
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_TARGET_GENERIC_PASSWD_METHOD="sha-256"
BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin"
#
# Filesystem images
#
#
# RootFS images
#
# BR2_TARGET_ROOTFS_EXT2 is not set
# BR2_TARGET_ROOTFS_CPIO is not set
# BR2_TARGET_ROOTFS_INITRAMFS is not set
# BR2_TARGET_ROOTFS_JFFS2 is not set
# BR2_TARGET_ROOTFS_SQUASHFS is not set
BR2_TARGET_ROOTFS_TAR=y
BR2_TARGET_ROOTFS_TAR_NONE=y
# BR2_TARGET_ROOTFS_TAR_GZIP is not set
# BR2_TARGET_ROOTFS_TAR_BZIP2 is not set
# BR2_TARGET_ROOTFS_TAR_LZ4 is not set
# BR2_TARGET_ROOTFS_TAR_LZMA is not set
# BR2_TARGET_ROOTFS_TAR_LZO is not set
# BR2_TARGET_ROOTFS_TAR_XZ is not set
BR2_TARGET_ROOTFS_TAR_OPTIONS=""
BR2_UBI_DEVICE_SPI_NAND_2K_128K=y
BR2_UBI_DEVICE_SPI_NAND_4K_256K=y
BR2_UBI_PARAM_ALL_SPI_NAND=y
# BR2_UBI_PARAM_SPI_NAND_2K_128K is not set
# BR2_UBI_PARAM_SPI_NAND_4K_256K is not set
# BR2_UBI_PARAM_USER_CUSTOM is not set
# BR2_TARGET_ROOTFS_UBI is not set
# BR2_TARGET_ROOTFS_UBIFS is not set
# BR2_TARGET_USERFS1 is not set
# BR2_TARGET_USERFS2 is not set
# BR2_TARGET_USERFS3 is not set
# BR2_GENERATE_BURNER_IMAGE is not set
# BR2_GENERATE_IMAGE_AUTO_CALCULATE_SIZE is not set
#
# Bootloader
#
#
# OpenSBI
#
BR2_PACKAGE_OPENSBI=y
# BR2_PACKAGE_OPENSBI_USE_PREBUILT is not set
BR2_PACKAGE_OPENSBI_FW_TEXT_BASE=0x40000000
#
# U-Boot
#
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_VERSION="2021.10"
BR2_TARGET_UBOOT_USE_DEFCONFIG=y
BR2_TARGET_UBOOT_BOARD_DEFCONFIG=""
#
# Advance setting
#
BR2_TARGET_UBOOT_NEEDS_PYTHON_NONE=y
# BR2_TARGET_UBOOT_NEEDS_PYTHON2 is not set
# BR2_TARGET_UBOOT_NEEDS_PYTHON3 is not set
BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
BR2_TARGET_UBOOT_NEEDS_OPENSBI=y
#
# U-Boot binary format
#
BR2_TARGET_UBOOT_FORMAT_BIN=y
# BR2_TARGET_UBOOT_FORMAT_DTB is not set
# BR2_TARGET_UBOOT_FORMAT_DTB_BIN is not set
# BR2_TARGET_UBOOT_FORMAT_NODTB_BIN is not set
# BR2_TARGET_UBOOT_FORMAT_NAND_BIN is not set
# BR2_TARGET_UBOOT_FORMAT_ELF is not set
# BR2_TARGET_UBOOT_FORMAT_IMG is not set
# BR2_TARGET_UBOOT_FORMAT_DTB_IMG is not set
# BR2_TARGET_UBOOT_FORMAT_ITB is not set
# BR2_TARGET_UBOOT_FORMAT_CUSTOM is not set
# BR2_TARGET_UBOOT_SPL is not set
BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS=""
#
# Linux kernel
#
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=""
BR2_LINUX_KERNEL_VERSION=""
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG=""
#
# Advance setting
#
BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH=""
BR2_LINUX_KERNEL_IMAGE=y
# BR2_LINUX_KERNEL_IMAGEBZ2 is not set
# BR2_LINUX_KERNEL_IMAGEGZ is not set
# BR2_LINUX_KERNEL_IMAGELZ4 is not set
# BR2_LINUX_KERNEL_IMAGEXZ is not set
# BR2_LINUX_KERNEL_IMAGELZMA is not set
# BR2_LINUX_KERNEL_IMAGELZO is not set
# BR2_LINUX_KERNEL_VMLINUX is not set
# BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM is not set
#
# Linux Kernel Tools
#
#
# bpftool needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads
#
# BR2_PACKAGE_LINUX_TOOLS_CPUPOWER is not set
# BR2_PACKAGE_LINUX_TOOLS_GPIO is not set
# BR2_PACKAGE_LINUX_TOOLS_SPI is not set
# BR2_PACKAGE_LINUX_TOOLS_IIO is not set
# BR2_PACKAGE_LINUX_TOOLS_PCI is not set
# BR2_PACKAGE_LINUX_TOOLS_PERF is not set
# BR2_PACKAGE_LINUX_TOOLS_TMON is not set
# BR2_PACKAGE_LINUX_TOOLS_TESTUSB is not set
#
# ArtInChip packages
#
BR2_PACKAGE_OPENSSL_HWENGINE=y
# BR2_PACKAGE_OPENSSL_HWENGINE_USE_PREBUILT is not set
BR2_PACKAGE_AIC_AUTHORIZATION=y
# BR2_PACKAGE_AIC_AUTHORIZATION_USE_PREBUILT is not set
BR2_PACKAGE_AIC_MPP=y
# BR2_PACKAGE_AIC_MPP_USE_PREBUILT is not set
BR2_PACKAGE_AIC_MPP_MIDDLEWARE=y
# BR2_PACKAGE_AIC_MPP_AAC_DECODER is not set
# BR2_PACKAGE_AIC_MPP_WAV_DEMUXER is not set
# BR2_PACKAGE_AIC_MPP_AVI_DEMUXER is not set
# BR2_PACKAGE_AIC_MPP_MKV_DEMUXER is not set
# BR2_PACKAGE_AIC_MPP_TS_DEMUXER is not set
# BR2_PACKAGE_AIC_MPP_FLV_DEMUXER is not set
# BR2_PACKAGE_AIC_MPP_RTSP_DEMUXER is not set
BR2_PACKAGE_AIC_LOGO=y
BR2_PACKAGE_LIBUSERID=y
# BR2_PACKAGE_LIBUSERID_USE_PREBUILT is not set
# BR2_PACKAGE_GST1_PLUGINS_AIC is not set
# BR2_PACKAGE_AWTK_UI is not set
# BR2_PACKAGE_LVGL_UI is not set
BR2_PACKAGE_AICP_DEC=y
BR2_PACKAGE_AIC_MEM=y
BR2_PACKAGE_AIC_MEM_USE_PREBUILT=y
# BR2_PACKAGE_WIFIMANAGER is not set
# BR2_PACKAGE_P2P_AUTO is not set
# BR2_PACKAGE_HTTP_WIFICONFIG is not set
#
# Sample code
#
BR2_PACKAGE_TEST_MTOP=y
# BR2_PACKAGE_TEST_MTOP_USE_PREBUILT is not set
BR2_PACKAGE_TEST_CE=y
# BR2_PACKAGE_TEST_CE_USE_PREBUILT is not set
BR2_PACKAGE_TEST_DMA_BUF=y
# BR2_PACKAGE_TEST_DMA_BUF_USE_PREBUILT is not set
BR2_PACKAGE_TEST_DVP=y
# BR2_PACKAGE_TEST_DVP_USE_PREBUILT is not set
BR2_PACKAGE_TEST_FB=y
# BR2_PACKAGE_TEST_FB_USE_PREBUILT is not set
BR2_PACKAGE_TEST_TOUCHSCREEN=y
# BR2_PACKAGE_TEST_TOUCHSCREEN_USE_PREBUILT is not set
BR2_PACKAGE_TEST_UART=y
# BR2_PACKAGE_TEST_UART_USE_PREBUILT is not set
BR2_PACKAGE_TEST_WATCHDOG=y
# BR2_PACKAGE_TEST_WATCHDOG_USE_PREBUILT is not set
# BR2_PACKAGE_TEST_LIBMAD is not set
BR2_PACKAGE_TEST_CLOCK=y
# BR2_PACKAGE_TEST_CLOCK_USE_PREBUILT is not set
BR2_PACKAGE_TEST_KEYADC=y
# BR2_PACKAGE_TEST_KEYADC_USE_PREBUILT is not set
# BR2_PACKAGE_TEST_BATTERY is not set
BR2_PACKAGE_REG_DUMP=y
# BR2_PACKAGE_REG_DUMP_USE_PREBUILT is not set
BR2_PACKAGE_TEST_GPIO=y
# BR2_PACKAGE_TEST_GPIO_USE_PREBUILT is not set
BR2_PACKAGE_TEST_CAN=y
# BR2_PACKAGE_TEST_CAN_USE_PREBUILT is not set
BR2_PACKAGE_TEST_ETH=y
# BR2_PACKAGE_TEST_ETH_USE_PREBUILT is not set
BR2_PACKAGE_TEST_AUDIO=y
# BR2_PACKAGE_TEST_AUDIO_USE_PREBUILT is not set
BR2_PACKAGE_TEST_BLKDEV=y
# BR2_PACKAGE_TEST_BLKDEV_USE_PREBUILT is not set
# BR2_PACKAGE_TEST_TP2825 is not set
# BR2_PACKAGE_TEST_PM_MBOX is not set
BR2_PACKAGE_TEST_EFUSE=y
# BR2_PACKAGE_TEST_EFUSE_USE_PREBUILT is not set
BR2_PACKAGE_TEST_COREDUMP=y
# BR2_PACKAGE_TEST_COREDUMP_USE_PREBUILT is not set
#
# Launchers
#
# BR2_PACKAGE_QTLAUNCHER is not set
#
# Vendor packages
#
# BR2_PACKAGE_MSNLINK is not set
# BR2_PACKAGE_ZJINNOVA is not set
# BR2_PACKAGE_CARBIT is not set
#
# Third-party packages
#
#
# ************************ System ******************************
#
BR2_PACKAGE_BUSYBOX=y
BR2_PACKAGE_BUSYBOX_USE_PREBUILT=y
BR2_PACKAGE_BUSYBOX_CONFIG="package/third-party/busybox/busybox.config"
BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES=""
# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set
# BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES is not set
# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set
BR2_PACKAGE_INITSCRIPTS=y
# BR2_PACKAGE_KMOD is not set
BR2_PACKAGE_SKELETON=y
BR2_PACKAGE_HAS_SKELETON=y
BR2_PACKAGE_PROVIDES_SKELETON="skeleton-init-sysv"
BR2_PACKAGE_SKELETON_INIT_COMMON=y
BR2_PACKAGE_SKELETON_INIT_SYSV=y
# BR2_PACKAGE_UTIL_LINUX is not set
# BR2_PACKAGE_GPERF is not set
#
# eudev needs eudev /dev management
#
#
# eudev needs a toolchain w/ wchar, dynamic library
#
# BR2_PACKAGE_GMP is not set
BR2_PACKAGE_GDB_ARCH_SUPPORTS=y
#
# gdb/gdbserver >= 8.x needs a toolchain w/ C++, gcc >= 4.8
#
#
# binutils needs a toolchain w/ wchar
#
# BR2_PACKAGE_SQLITE is not set
BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS=y
# BR2_PACKAGE_LIBATOMIC_OPS is not set
# BR2_PACKAGE_LIBPTHREAD_STUBS is not set
# BR2_PACKAGE_LIBDAEMON is not set
#
# ************************ Multimedia **************************
#
BR2_PACKAGE_ALSA_LIB=y
BR2_PACKAGE_ALSA_LIB_USE_PREBUILT=y
BR2_PACKAGE_ALSA_LIB_DEVDIR="/dev/snd"
BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS="all"
BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS="all"
BR2_PACKAGE_ALSA_LIB_ALOAD=y
BR2_PACKAGE_ALSA_LIB_MIXER=y
BR2_PACKAGE_ALSA_LIB_PCM=y
BR2_PACKAGE_ALSA_LIB_RAWMIDI=y
BR2_PACKAGE_ALSA_LIB_HWDEP=y
BR2_PACKAGE_ALSA_LIB_SEQ=y
BR2_PACKAGE_ALSA_LIB_UCM=y
BR2_PACKAGE_ALSA_LIB_ALISP=y
BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS=y
# BR2_PACKAGE_ALSA_UTILS is not set
BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC=y
#
# pulseaudio needs a toolchain w/ wchar, threads, dynamic library
#
# BR2_PACKAGE_LIBSAMPLERATE is not set
#
# directfb needs a glibc or uClibc toolchain w/ C++, NPTL, gcc >= 4.5, dynamic library
#
# BR2_PACKAGE_FREETYPE is not set
# BR2_PACKAGE_FONTCONFIG is not set
# BR2_PACKAGE_JPEG is not set
# BR2_PACKAGE_LIBPNG is not set
# BR2_PACKAGE_LIBSNDFILE is not set
# BR2_PACKAGE_QT is not set
BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y
#
# Qt5 needs host g++ >= 5.0, and a toolchain w/ gcc >= 5.0, wchar, NPTL, C++, dynamic library
#
#
# gstreamer 1.x needs a toolchain w/ wchar, threads
#
# BR2_PACKAGE_FBDUMP is not set
# BR2_PACKAGE_LIBDRM is not set
# BR2_PACKAGE_LIBMAD is not set
# BR2_PACKAGE_SBC is not set
# BR2_PACKAGE_FFMPEG is not set
# BR2_PACKAGE_CAIRO is not set
# BR2_PACKAGE_PIXMAN is not set
# BR2_PACKAGE_FAAD2 is not set
# BR2_PACKAGE_LAME is not set
# BR2_PACKAGE_MPG123 is not set
# BR2_PACKAGE_LIBPJSIP is not set
# BR2_PACKAGE_V4L_UTILS is not set
#
# ************************ Network *****************************
#
# BR2_PACKAGE_LIBMODBUS is not set
# BR2_PACKAGE_CAN_UTILS is not set
# BR2_PACKAGE_ETHTOOL is not set
# BR2_PACKAGE_IPROUTE2 is not set
# BR2_PACKAGE_IPERF3 is not set
# BR2_PACKAGE_LIBMNL is not set
# BR2_PACKAGE_LIBNL is not set
# BR2_PACKAGE_LIBTIRPC is not set
# BR2_PACKAGE_NETPERF is not set
# BR2_PACKAGE_WPA_SUPPLICANT is not set
# BR2_PACKAGE_WIRELESS_TOOLS is not set
# BR2_PACKAGE_PPPD is not set
# BR2_PACKAGE_LIBPCAP is not set
# BR2_PACKAGE_HOSTAPD is not set
# BR2_PACKAGE_AIC8800_FW is not set
# BR2_PACKAGE_ASR5505S_FW is not set
# BR2_PACKAGE_TCPDUMP is not set
# BR2_PACKAGE_AVAHI is not set
#
# ************************ Security ****************************
#
#
# libselinux needs a toolchain w/ threads, dynamic library, gcc >= 5
#
#
# libsepol needs a toolchain w/ threads, gcc >= 5
#
# BR2_PACKAGE_LIBSRTP is not set
BR2_PACKAGE_LIBKCAPI=y
BR2_PACKAGE_LIBKCAPI_USE_PREBUILT=y
BR2_PACKAGE_LIBKCAPI_ASYM=y
# BR2_PACKAGE_LIBKCAPI_DGSTAPP is not set
# BR2_PACKAGE_LIBKCAPI_ENCAPP is not set
# BR2_PACKAGE_LIBKCAPI_HASHER is not set
# BR2_PACKAGE_LIBKCAPI_KPP is not set
# BR2_PACKAGE_LIBKCAPI_RNGAPP is not set
# BR2_PACKAGE_LIBKCAPI_SPEED is not set
# BR2_PACKAGE_LIBKCAPI_TEST is not set
# BR2_PACKAGE_OPENSSL is not set
BR2_PACKAGE_PROVIDES_HOST_OPENSSL="host-libopenssl"
# BR2_PACKAGE_CRYPTSETUP is not set
#
# linux-pam needs a toolchain w/ wchar, locale, dynamic library
#
# BR2_PACKAGE_FSCRYPT is not set
#
# ************************ Memory ******************************
#
# BR2_PACKAGE_E2FSPROGS is not set
# BR2_PACKAGE_IOZONE is not set
# BR2_PACKAGE_MEMTESTER is not set
# BR2_PACKAGE_MTD is not set
# BR2_PACKAGE_SQUASHFS is not set
#
# ************************ Connectivity ************************
#
BR2_PACKAGE_TSLIB=y
BR2_PACKAGE_TSLIB_USE_PREBUILT=y
# BR2_PACKAGE_LIBGPIOD is not set
#
# ************* Debugging, profiling and benchmark *************
#
# BR2_PACKAGE_TRACE_CMD is not set
#
# ************************ Other Tools *************************
#
# BR2_PACKAGE_ACL is not set
#
# bluez-alsa needs a toolchain w/ wchar, NPTL, headers >= 3.4, dynamic library, gcc >= 4.9
#
# BR2_PACKAGE_BLUEZ5_UTILS_HEADERS is not set
#
# bluez5-utils needs a toolchain w/ wchar, threads, headers >= 3.4, dynamic library
#
# BR2_PACKAGE_NCURSES is not set
# BR2_PACKAGE_PKGCONF is not set
# BR2_PACKAGE_ATTR is not set
# BR2_PACKAGE_DBUS is not set
# BR2_PACKAGE_EXPAT is not set
# BR2_PACKAGE_FLEX is not set
# BR2_PACKAGE_GETTEXT is not set
BR2_PACKAGE_PROVIDES_HOST_GETTEXT="host-gettext-tiny"
# BR2_PACKAGE_JSON_C is not set
# BR2_PACKAGE_LIBAIO is not set
# BR2_PACKAGE_LIBARGON2 is not set
# BR2_PACKAGE_LIBFFI is not set
#
# libglib2 needs a toolchain w/ wchar, threads
#
# BR2_PACKAGE_LIBTOOL is not set
# BR2_PACKAGE_LVM2 is not set
# BR2_PACKAGE_ANDROID_TOOLS is not set
# BR2_PACKAGE_BZIP2 is not set
# BR2_PACKAGE_LRZSZ is not set
# BR2_PACKAGE_LZ4 is not set
# BR2_PACKAGE_LZIP is not set
# BR2_PACKAGE_LZO is not set
# BR2_PACKAGE_LZOP is not set
# BR2_PACKAGE_PCRE is not set
# BR2_PACKAGE_PCRE2 is not set
# BR2_PACKAGE_POPT is not set
# BR2_PACKAGE_READLINE is not set
# BR2_PACKAGE_XZ is not set
BR2_PACKAGE_ZLIB=y
BR2_PACKAGE_ZLIB_USE_PREBUILT=y
BR2_PACKAGE_LIBZLIB_USE_PREBUILT=y
BR2_PACKAGE_ZLIB_NG_USE_PREBUILT=y
BR2_PACKAGE_LIBZLIB=y
BR2_PACKAGE_HAS_ZLIB=y
BR2_PACKAGE_PROVIDES_ZLIB="libzlib"
BR2_PACKAGE_PROVIDES_HOST_ZLIB="host-libzlib"
# BR2_PACKAGE_ZSTD is not set
# BR2_PACKAGE_PYTHON_SETUPTOOLS is not set
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_UBOOT_TOOLS_USE_PREBUILT=y
BR2_PACKAGE_LIBUBOOTENV=y
BR2_PACKAGE_LIBUBOOTENV_USE_PREBUILT=y
BR2_PACKAGE_LIBCONFIG=y
BR2_PACKAGE_LIBCONFIG_USE_PREBUILT=y
BR2_PACKAGE_LIBCURL=y
BR2_PACKAGE_LIBCURL_USE_PREBUILT=y
# BR2_PACKAGE_LIBCURL_CURL is not set
# BR2_PACKAGE_LIBCURL_VERBOSE is not set
BR2_PACKAGE_LIBCURL_PROXY_SUPPORT=y
BR2_PACKAGE_LIBCURL_COOKIES_SUPPORT=y
BR2_PACKAGE_LIBCURL_EXTRA_PROTOCOLS_FEATURES=y
BR2_PACKAGE_LIBCURL_TLS_NONE=y
BR2_PACKAGE_SWUPDATE=y
BR2_PACKAGE_SWUPDATE_USE_PREBUILT=y
BR2_PACKAGE_SWUPDATE_CONFIG="package/third-party/swupdate/luban_swupdate.config"
#
# swupdate usb needs systemd
#
BR2_PACKAGE_SWUPDATE_WEBSERVER=y
BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE=y
# BR2_PACKAGE_PERL is not set
# BR2_PACKAGE_OPENSSH is not set
# BR2_PACKAGE_CJSON is not set
# BR2_PACKAGE_LIVE555 is not set
# BR2_PACKAGE_RTL8733BS_BT_FW is not set
# BR2_PACKAGE_RTL8733BU_BT_FW is not set
#
# ************************ MTP Tools *************************
#
# BR2_PACKAGE_LIBFUSE is not set
# BR2_PACKAGE_LIBICONV is not set
#
# libusb needs a toolchain w/ threads, gcc >= 4.9
#
# BR2_PACKAGE_MTPFS is not set
# BR2_PACKAGE_UMTPRD is not set
# BR2_PACKAGE_LIBMTP is not set
#
# Host utilities
#
#
# ************************ System ******************************
#
BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS_USE_PREBUILT=y
BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS=y
BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GO_BOOTSTRAP_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GO_BOOTSTRAP_ARCH_SUPPORTS_USE_PREBUILT=y
# BR2_PACKAGE_HOST_COREUTILS is not set
BR2_PACKAGE_HOST_FAKEROOT=y
BR2_PACKAGE_HOST_FAKEROOT_USE_PREBUILT=y
BR2_PACKAGE_HOST_KMOD=y
BR2_PACKAGE_HOST_KMOD_USE_PREBUILT=y
# BR2_PACKAGE_HOST_KMOD_GZ is not set
# BR2_PACKAGE_HOST_KMOD_ZSTD is not set
# BR2_PACKAGE_HOST_KMOD_XZ is not set
BR2_PACKAGE_HOST_MAKEDEVS=y
BR2_PACKAGE_HOST_MAKEDEVS_USE_PREBUILT=y
BR2_PACKAGE_HOST_MKPASSWD=y
BR2_PACKAGE_HOST_MKPASSWD_USE_PREBUILT=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
BR2_PACKAGE_HOST_UBOOT_TOOLS_USE_PREBUILT=y
# BR2_PACKAGE_HOST_UTIL_LINUX is not set
BR2_PACKAGE_HOST_ZIC=y
BR2_PACKAGE_HOST_ZIC_USE_PREBUILT=y
BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS=y
#
# Host GDB Options
#
# BR2_PACKAGE_HOST_GDB is not set
#
# Binutils Options
#
BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI=y
# BR2_BINUTILS_VERSION_2_37_X is not set
BR2_BINUTILS_VERSION_2_38_X=y
# BR2_BINUTILS_VERSION_2_39_X is not set
BR2_BINUTILS_VERSION="2.38"
BR2_BINUTILS_EXTRA_CONFIG_OPTIONS=""
#
# ************************ Storage/Memory **********************
#
# BR2_PACKAGE_HOST_E2FSPROGS is not set
# BR2_PACKAGE_HOST_MTD is not set
# BR2_PACKAGE_HOST_SQUASHFS is not set
#
# ************************ Security ****************************
#
# BR2_PACKAGE_HOST_CRYPTSETUP is not set
#
# ************************ Multimedia **************************
#
#
# ************************ Compression *************************
#
# BR2_PACKAGE_HOST_TAR is not set
# BR2_PACKAGE_HOST_BZIP2 is not set
# BR2_PACKAGE_HOST_GZIP is not set
# BR2_PACKAGE_HOST_LZ4 is not set
# BR2_PACKAGE_HOST_LZMA is not set
# BR2_PACKAGE_HOST_LZO is not set
# BR2_PACKAGE_HOST_LZOP is not set
# BR2_PACKAGE_HOST_XZ is not set
# BR2_PACKAGE_HOST_LIBZLIB is not set
# BR2_PACKAGE_HOST_ZSTD is not set
#
# ************************ Tools *******************************
#
# BR2_PACKAGE_HOST_ANDROID_TOOLS is not set
# BR2_PACKAGE_HOST_ACL is not set
# BR2_PACKAGE_HOST_ATTR is not set
BR2_PACKAGE_HOST_AUTOCONF=y
BR2_PACKAGE_HOST_AUTOCONF_USE_PREBUILT=y
# BR2_PACKAGE_HOST_AUTOCONF_ARCHIVE is not set
BR2_PACKAGE_HOST_AUTOMAKE=y
BR2_PACKAGE_HOST_AUTOMAKE_USE_PREBUILT=y
BR2_PACKAGE_HOST_BISON=y
BR2_PACKAGE_HOST_BISON_USE_PREBUILT=y
# BR2_PACKAGE_HOST_CMAKE is not set
# BR2_PACKAGE_HOST_FLEX is not set
# BR2_PACKAGE_HOST_LIBTOOL is not set
# BR2_PACKAGE_HOST_MAKE is not set
# BR2_PACKAGE_HOST_MESON is not set
# BR2_PACKAGE_HOST_NINJA is not set
# BR2_PACKAGE_HOST_PKGCONF is not set
BR2_PACKAGE_HOST_PATCHELF=y
BR2_PACKAGE_HOST_PATCHELF_USE_PREBUILT=y
# BR2_PACKAGE_HOST_PYTHON3 is not set
BR2_PACKAGE_HOST_PYTHON3_FDT=y
BR2_PACKAGE_HOST_PYTHON3_FDT_USE_PREBUILT=y
BR2_PACKAGE_HOST_PYTHON3_PYCRYPTODOMEX=y
BR2_PACKAGE_HOST_PYTHON3_PYCRYPTODOMEX_USE_PREBUILT=y
# BR2_PACKAGE_HOST_SWIG is not set
#
# Firmwares
#

3
build.sh Executable file
View File

@ -0,0 +1,3 @@
make list
make d211_demo128_nand_defconfig
make

61
clean.sh Executable file
View File

@ -0,0 +1,61 @@
make distclean
#rm source/uboot-2021.10/include/configs/image_cfg.json
rm -fr output/*
rm tools/scripts/Cryptodome/Cipher/AES.pyc
rm tools/scripts/Cryptodome/Cipher/__init__.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_cbc.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_ccm.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_cfb.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_ctr.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_eax.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_ecb.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_gcm.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_ocb.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_ofb.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_openpgp.pyc
rm tools/scripts/Cryptodome/Cipher/_mode_siv.pyc
rm tools/scripts/Cryptodome/Hash/BLAKE2s.pyc
rm tools/scripts/Cryptodome/Hash/CMAC.pyc
rm tools/scripts/Cryptodome/Hash/HMAC.pyc
rm tools/scripts/Cryptodome/Hash/MD5.pyc
rm tools/scripts/Cryptodome/Hash/SHA1.pyc
rm tools/scripts/Cryptodome/Hash/SHA256.pyc
rm tools/scripts/Cryptodome/Hash/__init__.pyc
rm tools/scripts/Cryptodome/Math/Numbers.pyc
rm tools/scripts/Cryptodome/Math/Primality.pyc
rm tools/scripts/Cryptodome/Math/_IntegerBase.pyc
rm tools/scripts/Cryptodome/Math/_IntegerGMP.pyc
rm tools/scripts/Cryptodome/Math/__init__.pyc
rm tools/scripts/Cryptodome/Protocol/KDF.pyc
rm tools/scripts/Cryptodome/Protocol/__init__.pyc
rm tools/scripts/Cryptodome/PublicKey/RSA.pyc
rm tools/scripts/Cryptodome/PublicKey/__init__.pyc
rm tools/scripts/Cryptodome/Random/__init__.pyc
rm tools/scripts/Cryptodome/Signature/PKCS1_v1_5.pyc
rm tools/scripts/Cryptodome/Signature/__init__.pyc
rm tools/scripts/Cryptodome/Signature/pkcs1_15.pyc
rm tools/scripts/Cryptodome/Util/__init__.pyc
rm tools/scripts/Cryptodome/Util/_cpu_features.pyc
rm tools/scripts/Cryptodome/Util/_file_system.pyc
rm tools/scripts/Cryptodome/Util/_raw_api.pyc
rm tools/scripts/Cryptodome/Util/asn1.pyc
rm tools/scripts/Cryptodome/Util/number.pyc
rm tools/scripts/Cryptodome/Util/py3compat.pyc
rm tools/scripts/Cryptodome/Util/strxor.pyc
rm tools/scripts/Cryptodome/__init__.pyc
rm tools/scripts/asn1crypto/__init__.pyc
rm tools/scripts/asn1crypto/_errors.pyc
rm tools/scripts/asn1crypto/_iri.pyc
rm tools/scripts/asn1crypto/_ordereddict.pyc
rm tools/scripts/asn1crypto/_teletex_codec.pyc
rm tools/scripts/asn1crypto/_types.pyc
rm tools/scripts/asn1crypto/core.pyc
rm tools/scripts/asn1crypto/parser.pyc
rm tools/scripts/asn1crypto/util.pyc
rm tools/scripts/asn1crypto/version.pyc
rm tools/scripts/gmssl/__init__.pyc
rm tools/scripts/gmssl/func.pyc
rm tools/scripts/gmssl/sm2.pyc
rm tools/scripts/gmssl/sm3.pyc
rm tools/scripts/gmssl/sm4.pyc

1
defconfig Normal file
View File

@ -0,0 +1 @@
BR2_PACKAGE_SWUPDATE=y

1
doc/net_doc.txt Executable file
View File

@ -0,0 +1 @@
https://aicdoc.artinchip.com/topics/sdk/wifi/wifi-rtl8821cs-luban.html

View File

@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.34.1
# Tue Nov 21 10:34:55 2023
# Wed Apr 15 10:32:02 2026
#
CONFIG_HAVE_DOT_CONFIG=y
@ -936,10 +936,10 @@ CONFIG_FEATURE_NETSTAT_PRG=y
# CONFIG_NSLOOKUP is not set
# CONFIG_FEATURE_NSLOOKUP_BIG is not set
# CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS is not set
# CONFIG_NTPD is not set
# CONFIG_FEATURE_NTPD_SERVER is not set
# CONFIG_FEATURE_NTPD_CONF is not set
# CONFIG_FEATURE_NTP_AUTH is not set
CONFIG_NTPD=y
CONFIG_FEATURE_NTPD_SERVER=y
CONFIG_FEATURE_NTPD_CONF=y
CONFIG_FEATURE_NTP_AUTH=y
CONFIG_PING=y
# CONFIG_PING6 is not set
CONFIG_FEATURE_FANCY_PING=y

View File

@ -25,3 +25,4 @@ for i in /etc/init.d/S??* ;do
esac
done
/data/bin/e_player &

View File

@ -288,4 +288,15 @@ define SWUPDATE_INSTALL_INIT_SYSV
$(TARGET_DIR)/usr/lib/swupdate
endef
# When BR2_PACKAGE_SWUPDATE_USE_PREBUILT is enabled, the package infrastructure
# installs files from the prebuilt tarball into TARGET_DIR/STAGING_DIR.
# Ensure our local helper scripts override any prebuilt versions.
define SWUPDATE_OVERWRITE_HELPER_SCRIPTS
$(INSTALL) -D -m 755 $(SWUPDATE_PKGDIR)/swupdate_cmd.sh \
$(TARGET_DIR)/usr/lib/swupdate/swupdate_cmd.sh
$(INSTALL) -D -m 755 $(SWUPDATE_PKGDIR)/swupdate_end.sh \
$(TARGET_DIR)/usr/lib/swupdate/swupdate_end.sh
endef
SWUPDATE_POST_INSTALL_TARGET_HOOKS += SWUPDATE_OVERWRITE_HELPER_SCRIPTS
$(eval $(kconfig-package))

View File

@ -29,8 +29,8 @@ swupdate_cmd()
echo "###now do swupdate###"
echo "##swupdate -v$swu_param -e "$swu_boardname,$swu_entry" ##"
swupdate -v$swu_param -e "$swu_boardname,$swu_entry"
echo "##swupdate -v $swu_param -e "$swu_boardname,$swu_entry" ##"
swupdate -v $swu_param -e "$swu_boardname,$swu_entry"
swu_reboot=$(fw_printenv -n swu_reboot 2>/dev/null)
echo "swu_reboot: ##$swu_reboot##"

View File

@ -569,10 +569,21 @@ $(BUILD_DIR)/%/.stamp_prebuilt_rsynced:
$(Q)touch $@
$(BUILD_DIR)/%/.stamp_prebuilt_patched:
$(Q)touch $@
#$(BUILD_DIR)/%/.stamp_prebuilt_extracted:
# @$(call MESSAGE,"Extracting prebuilt binary tarball")
# $($(PKG)_PREBUILT_EXTRACT_CMDS)
# @tools/support/scripts/fix-prebuilt-rpath.sh $($(PKG)_NAME) $($(PKG)_BASENAME) $($(PKG)_DIR)
# $(Q)touch $@
$(BUILD_DIR)/%/.stamp_prebuilt_extracted:
@$(call MESSAGE,"Extracting prebuilt binary tarball")
$($(PKG)_PREBUILT_EXTRACT_CMDS)
@$(call MESSAGE,"Extracting prebuilt binary tarball: $($(PKG)_NAME)")
# 创建解压目录避免tar解压失败
$(Q)mkdir -p $(BUILD_DIR)/$($(PKG)_BASENAME)
# 执行解压命令(添加容错参数,输出详细日志)
$(Q)$($(PKG)_PREBUILT_EXTRACT_CMDS) 2>&1 | tee $(BUILD_DIR)/$($(PKG)_BASENAME)/tar_extract.log || \
(echo "WARN: Extract failed, skip error files..." && true)
# 修复预编译包的RPATH运行时库路径
@tools/support/scripts/fix-prebuilt-rpath.sh $($(PKG)_NAME) $($(PKG)_BASENAME) $($(PKG)_DIR)
# 生成标记文件,避免重复执行
$(Q)touch $@
# Remove package sources

View File

@ -94,11 +94,14 @@ CONFIG_NET_ARTINCHIP_MAC=y
# CONFIG_NET_VENDOR_WIZNET is not set
# CONFIG_NET_VENDOR_XILINX is not set
CONFIG_REALTEK_PHY=y
# CONFIG_RTL_CARDS is not set
CONFIG_AIC_WLAN_SUPPORT=y
CONFIG_AIC8800_WLAN_SUPPORT=m
CONFIG_AIC8800_BTLPM_SUPPORT=m
CONFIG_INPUT_EVDEV=y
CONFIG_KEYBOARD_GPIO=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_ARTINCHIP=y
CONFIG_TOUCHSCREEN_GT9XX=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
@ -127,11 +130,12 @@ CONFIG_FB=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_PWM=y
CONFIG_BACKLIGHT_GPIO=y
CONFIG_LT8911EXB=y
CONFIG_ARTINCHIP_GE=y
CONFIG_ARTINCHIP_VE=y
CONFIG_ARTINCHIP_FB=y
CONFIG_AIC_DISP_LVDS=y
CONFIG_AIC_PANEL_LVDS_GENERAL=y
CONFIG_AIC_DISP_MIPI_DSI=y
CONFIG_AIC_PANEL_DSI_SIMPLE=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_SOC=y
@ -197,8 +201,8 @@ CONFIG_CRYPTO_STATS=y
CONFIG_CRYPTO_USER_API_AKCIPHER=y
CONFIG_CRYPTO_DEV_ARTINCHIP_CE=y
CONFIG_DMA_CMA=y
CONFIG_CMA_SIZE_MBYTES=24
CONFIG_CMA_MPP_SIZE_MBYTES=16
CONFIG_CMA_SIZE_MBYTES=52
CONFIG_CMA_MPP_SIZE_MBYTES=28
CONFIG_PRINTK_TIME=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_FS=y

View File

@ -46,12 +46,17 @@ extern int aicwf_dbg_level_bsp;
#define AICWF_LOG "AICWFDBG("
#define AICWFDBG(level, args, arg...) \
//#define AICWFDBG(level, args, arg...) \
do { \
if (aicwf_dbg_level_bsp & level) { \
printk(AICWF_LOG#level")\t" args, ##arg); \
} \
} while (0)
#define AICWFDBG(level, args, arg...) \
do { \
if (aicwf_dbg_level_bsp & level) { \
} \
} while (0)
#define RWNX_DBG(fmt, ...) \
do { \

View File

@ -20,12 +20,17 @@ void rwnx_data_dump(char* tag, void* data, unsigned long len);
#define AICWF_LOG "AICWFDBG("
#define AICWFDBG(level, args, arg...) \
//#define AICWFDBG(level, args, arg...) \
do { \
if (aicwf_dbg_level & level) { \
printk(AICWF_LOG#level")\t" args, ##arg); \
} \
} while (0)
#define AICWFDBG(level, args, arg...) \
do { \
if (aicwf_dbg_level & level) { \
} \
} while (0)
#define RWNX_DBG(fmt, ...) \
do { \

View File

@ -24,6 +24,7 @@ source "drivers/video/fbdev/Kconfig"
endmenu
source "drivers/video/backlight/Kconfig"
source "drivers/video/lt8911exb/Kconfig"
config VGASTATE
tristate

View File

@ -9,6 +9,7 @@ obj-y += backlight/
obj-y += fbdev/
obj-y += artinchip/
obj-y += lt8911exb/
obj-$(CONFIG_VIDEOMODE_HELPERS) += display_timing.o videomode.o
ifeq ($(CONFIG_OF),y)

View File

@ -71,15 +71,15 @@ static struct aic_panel_funcs panel_funcs = {
/* Init the videomode parameter, dts will override the initial value. */
static struct videomode panel_vm = {
.pixelclock = 130000000,
.hactive = 1200,
.hfront_porch = 160,
.hback_porch = 160,
.hsync_len = 40,
.vactive = 1920,
.vfront_porch = 10,
.vback_porch = 20,
.vsync_len = 8,
.pixelclock = 150 * 1000 * 1000,
.hactive = 1920,
.hfront_porch = 188,
.hback_porch = 148,
.hsync_len = 44,
.vactive = 1080,
.vfront_porch = 4,
.vback_porch = 36,
.vsync_len = 5,
.flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_POSEDGE
};

View File

@ -0,0 +1,10 @@
config LT8911EXB
tristate "LT8911EXB Driver"
default n
help
Control LT8911EXB Chip
Select m:build as a separate module;
Select y:Build into the kernel
Select n:Not build

View File

@ -0,0 +1,32 @@
#include "include/include.h"
bool g_irq_flag = 0;
int LT8911EXB_Main(void *data)
{
printk("LT8911EXB Init Start:");
LT8911_Reset();
msleep(100);
LT8911_ChipID();
LT8911_SetVideoTiming(&video);
LT8911_Init(&video);
LT8911_LinkTrain();
LT8911_LinkTrainResultCheck();
LT8911_video_check() ;
LT8911_pcr_mk_printk();
LT8911_htotal_stable_printk();
while(!atomic_read(&thread_should_stop))
{
LT8911_MainLoop(&video);
msleep(500);
}
return 0;
}

View File

@ -0,0 +1,283 @@
#include "include/include.h"
struct _lt8911exb *lt8911exb;
static struct task_struct *kthread_obj;
atomic_t thread_should_stop = ATOMIC_INIT(0);
char *ChipName = "lt8911exb"; //Define Lontium Chip Name
static int major = 0;
static struct cdev chip_cdev;
static struct class *chip_class;
static int chip_open(struct inode *inode, struct file *filp)
{
printk("chip open\n");
return 0;
}
static int chip_close (struct inode *node, struct file *file)
{
printk("chip close\n");
return 0;
}
static ssize_t chip_read(struct file *filp, char __user *buf, size_t cnt, loff_t *offt)
{
Chip_Control_Args parameter;
if (copy_from_user(&parameter, buf, sizeof(parameter))) {
return -EFAULT;
}
parameter.value = HDMI_ReadI2C_Byte(parameter.address);
if (copy_to_user(buf, &parameter, sizeof(parameter))) {
return -EFAULT;
}
return sizeof(parameter);
}
static ssize_t chip_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt)
{
Chip_Control_Args parameter;
if (copy_from_user(&parameter, buf, sizeof(parameter))) {
return -EFAULT;
}
HDMI_WriteI2C_Byte(parameter.address, parameter.value);
return sizeof(parameter);
}
static struct file_operations chip_drv = {
.owner = THIS_MODULE,
.open = chip_open,
.release = chip_close,
.read = chip_read,
.write = chip_write,
};
static int chip_dev_init(void)
{
int ret;
dev_t devid;
ret = alloc_chrdev_region(&devid, 0, 1, ChipName);
if (ret < 0) {
return ret;
}
major = MAJOR(devid);
cdev_init(&chip_cdev, &chip_drv);
cdev_add(&chip_cdev, devid, 1);
chip_class = class_create(THIS_MODULE, "chip_class");
if (IS_ERR(chip_class)) {
unregister_chrdev(major, ChipName);
return -1;
}
device_create(chip_class, NULL, MKDEV(major, 0), NULL, ChipName); /* /dev/ChipName */
return 0;
}
static void chip_dev_exit(void)
{
device_destroy(chip_class, MKDEV(major, 0));
class_destroy(chip_class);
cdev_del(&chip_cdev);
unregister_chrdev_region(MKDEV(major,0), 1);
}
static const struct regmap_range chip_ranges[] = {
{ .range_min = 0, .range_max = 0xffff },
};
static const struct regmap_access_table chip_table = {
.yes_ranges = chip_ranges,
.n_yes_ranges = ARRAY_SIZE(chip_ranges),
};
static const struct regmap_config chip_regmap_config = {
.reg_bits = 8,
.val_bits = 8,
.volatile_table = &chip_table,
.cache_type = REGCACHE_NONE,
};
/*
* devm_gpiod_get_optional - If this fails, NULL is returned and no error pointer.
*
* devm_gpiod_get - If this fails, an error pointer is returned, usually ERR_PTR(-ENOENT).
*
* The devm_gpiod_get function is recommended for practical use.
*/
static int chip_parse_dts(struct device *dev)
{
//Gets the handle to power gpio in dts
lt8911exb->power_gpio=devm_gpiod_get_optional(dev, "power", GPIOD_OUT_LOW);
if (IS_ERR(lt8911exb->power_gpio)) {
dev_err(dev, "Failed to get power GPIO\n");
return PTR_ERR(lt8911exb->power_gpio);
}
//Gets the handle to reset gpio in dts
lt8911exb->reset_gpio=devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
if (IS_ERR(lt8911exb->reset_gpio)) {
dev_err(dev, "Failed to get reset GPIO\n");
return PTR_ERR(lt8911exb->reset_gpio);
}
// Additional GPIO pins can be added here if needed
return 0;
}
static int chip_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
int ret;
chip_dev_init();
lt8911exb = devm_kzalloc(&client->dev, sizeof(*lt8911exb), GFP_KERNEL);
if (lt8911exb == NULL)
return -ENOMEM;
lt8911exb->trans_i2c = client;
lt8911exb->dev = &client->dev;
lt8911exb->chip_regmap = devm_regmap_init_i2c(client, &chip_regmap_config);
if (IS_ERR(lt8911exb->chip_regmap)) {
dev_err(&client->dev, "Failed to initialize regmap\n");
return PTR_ERR(lt8911exb->chip_regmap);
}
ret = chip_parse_dts(lt8911exb->dev);
if (ret<0){
dev_err(&client->dev, "Failed to parse device tree\n");
return ret;
}
i2c_set_clientdata(client, lt8911exb);
kthread_obj = kthread_run(LT8911EXB_Main, NULL, "LT8911EXB_kthread");
if (IS_ERR(kthread_obj)) {
kthread_obj = NULL;
chip_dev_exit();
dev_err(&client->dev, "Failed to create kernel thread\n");
return PTR_ERR(kthread_obj);
}
return 0;
}
static int chip_remove(struct i2c_client *client)
{
if (kthread_obj) {
atomic_set(&thread_should_stop, 1);
kthread_stop(kthread_obj);
kthread_obj = NULL;
}
chip_dev_exit();
printk("driver removed\n");
return 0;
}
static int chip_suspend(struct device *dev)
{
//power off
atomic_set(&thread_should_stop, 1);
kthread_stop(kthread_obj);
msleep(5);
gpiod_set_value(lt8911exb->power_gpio,0);
printk(KERN_INFO "lt8911exb Suspend");
return 0;
}
static int chip_resume(struct device *dev)
{
//power on
gpiod_set_value(lt8911exb->power_gpio,1);
msleep(5);
atomic_set(&thread_should_stop, 0);
kthread_obj = kthread_run(LT8911EXB_Main, NULL, "LT8911EXB_kthread");
printk(KERN_INFO "lt8911exb Resume");
return 0;
}
static const struct dev_pm_ops chip_pm_ops = {
.suspend = chip_suspend,
.resume = chip_resume,
};
static const struct i2c_device_id chip_ids[] = {
{"lt8911exb", 0},
{ }
};
MODULE_DEVICE_TABLE(i2c, chip_ids);
static const struct of_device_id chip_id_table[] = {
{.compatible = "lontium,lt8911exb"},
{ }
};
MODULE_DEVICE_TABLE(of, chip_id_table);
static struct i2c_driver chip_driver = {
.driver = {
.owner = THIS_MODULE,
.name = "lt8911exb",
.pm = &chip_pm_ops,
.of_match_table = chip_id_table,
},
.probe = chip_probe,
.remove = chip_remove,
.id_table = chip_ids,
};
module_i2c_driver(chip_driver);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("LT8911EXB driver");
MODULE_AUTHOR("Tony <syyang@lontium.com>");

View File

@ -0,0 +1,5 @@
lt8911exb-y := LontiumDrv.o LT8911EXB_Main.o OcmI2cMaster.o lt8911.o
obj-$(CONFIG_LT8911EXB) += lt8911exb.o

View File

@ -0,0 +1,72 @@
#include "include/include.h"
static unsigned char g_ucLogLevel = LOG_DEBUG;
static char *messageTypeStr[] = {"DEBUG","INFO","WARN", "ERROR","CRIT"};
//void Ocm_PrintLevel_Set(unsigned char ucLvl)
//{
// g_ucLogLevel = ucLvl;
//}
void LTLog(unsigned char ucLvl, const char *fmt, ...)
{
char buf[MAX_NUMBER_BYTES] = {0};
va_list args;
if (ucLvl > LOG_NOTRACE)
{
return;
}
//打印大于等于该级别的字符串
if(ucLvl >= g_ucLogLevel)
{
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
//左对齐5个字符
printk("\n[%-5s] %s", messageTypeStr[ucLvl], buf);
}
}
int HDMI_WriteI2C_Byte(u8 addr,u8 data)
{
int ret = 0;
ret = regmap_write(lt8911exb->chip_regmap, addr, data);
if (ret < 0) {
printk("regmap_write error: (0x%02x 0x%02x 0x%02x) %d",
lt8911exb->trans_i2c->addr, addr, data, ret);
return ret;
}
return 0;
}
int HDMI_ReadI2C_Byte(u8 addr)
{
int ret = 0;
unsigned int val = 0;
ret = regmap_read(lt8911exb->chip_regmap, addr, &val);
if (ret < 0) {
printk("regmap_read error: (0x%02x 0x%02x) %d",
lt8911exb->trans_i2c->addr, addr, ret);
return ret;
}
return (u8)val;
}
EXPORT_SYMBOL(HDMI_WriteI2C_Byte);
EXPORT_SYMBOL(HDMI_ReadI2C_Byte);

View File

@ -0,0 +1,11 @@
#ifndef _LT8911EXB_MAIN_H_
#define _LT8911EXB_MAIN_H_
extern bool g_irq_flag;
extern int LT8911EXB_Main(void *data);
#endif

View File

@ -0,0 +1,27 @@
#ifndef _LONTIUMDRV_H_
#define _LONTIUMDRV_H_
struct _lt8911exb{
struct device *dev;
struct mutex ocm_lock;
struct gpio_desc *reset_gpio;
struct gpio_desc *power_gpio;
struct i2c_client *trans_i2c;
struct regmap *chip_regmap;
};
typedef struct
{
u8 address; // 寄存器地址
u8 value; // 寄存器值
} Chip_Control_Args;
extern struct _lt8911exb *lt8911exb;
extern atomic_t thread_should_stop;
#endif

View File

@ -0,0 +1,22 @@
#ifndef _OCMI2CMASTER_H_
#define _OCMI2CMASTER_H_
#define MAX_NUMBER_BYTES 128
typedef enum
{
LOG_DEBUG =0x00,
LOG_INFO,
LOG_WARN,
LOG_ERROR,
LOG_CRITICAL,
LOG_NOTRACE,
} LT_LogLevel;
void LTLog(unsigned char ucLvl, const char *fmt, ...);
extern int HDMI_WriteI2C_Byte(u8 addr,u8 data);
extern int HDMI_ReadI2C_Byte(u8 addr);
#endif

View File

@ -0,0 +1,39 @@
#ifndef _INCLUDE_H_
#define _INCLUDE_H_
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
#include <linux/gpio.h>
#include <linux/kobject.h>
#include <linux/sysfs.h>
#include <linux/printk.h>
#include <linux/miscdevice.h>
#include <linux/kernel.h>
#include <linux/major.h>
#include <linux/mutex.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/stat.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/tty.h>
#include <linux/kmod.h>
#include <linux/gfp.h>
#include <linux/module.h>
#include <linux/kthread.h>
#include <linux/atomic.h>
#include "type.h"
#include "LontiumDrv.h"
#include "LT8911EXB_Main.h"
#include "lt8911.h"
#include "OcmI2cMaster.h"
#endif

View File

@ -0,0 +1,72 @@
#ifndef _LT8911EXB_H_
#define _LT8911EXB_H_
//////////////////////LT8911 Config///////////////////
//#define _1920x1200_eDP_Panel_
#define _1080P_eDP_Panel_
//#define _1366x768_eDP_Panel_
//#define _1280x800_eDP_Panel_
//#define _1600x900_eDP_Panel_
#define SCRAMBLE_MODE 0x00 //0x80: edp, 0x00: dp
//#define sync_polarity 0x00 //0x00: no_adj; 0x20: vs_adj; 0x10: hs_adj; 0x30: H/Vs adj;
//#define _6bit_
//#define _dither_enable_
#define _eDP_2G7_
//#define _eDP_1G62_
#define _link_train_enable_
//////////option for debug///////////
//#define _read_edid_
//#define _EDP_Pattern_
//#define _Msa_Active_Only_
#define _pcr_mk_printk_
#define _htotal_stable_check_
//#define _gpio_sync_output_
//#define sync_source 0x01 //gpio output lvds Rx sync
#define sync_source 0x02 //gpio output lvds portA sync
//#define sync_source 0x03 //gpio output lvds portB sync
//gpio2: de, gpio3: vs, gpio4: hs.
struct video_timing{
u16 hfp;
u16 hs;
u16 hbp;
u16 hact;
u16 htotal;
u16 vfp;
u16 vs;
u16 vbp;
u16 vact;
u16 vtotal;
u32 pclk_khz;
};
struct Lane_No{
u8 swing_high_byte;
u8 swing_low_byte;
u8 emph_high_byte;
u8 emph_low_byte;
};
extern struct video_timing video;
extern void LT8911_Reset(void);
extern void LT8911_ChipID(void);
extern void LT8911_SetVideoTiming(struct video_timing *video_format);
extern void LT8911_Init(struct video_timing *video_format);
extern void LT8911_LinkTrain(void);
extern void LT8911_LinkTrainResultCheck(void);
extern void LT8911_video_check(void);
extern void LT8911_pcr_mk_printk(void);
extern void LT8911_htotal_stable_printk(void);
extern void LT8911_MainLoop(struct video_timing *video_format);
#endif

View File

@ -0,0 +1,10 @@
#ifndef _TYPE_H_
#define _TYPE_H_
#define HIGH 1
#define LOW 0
#endif

File diff suppressed because it is too large Load Diff

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.

View File

@ -0,0 +1,4 @@
---- LT8911_Init Matches (3 in 3 files) ----
Lt8911.c (d:\龙迅产品程序整理(深圳)\lt8911\lt8911\lt8911exb\democode\for linux\lt8911exb_linux_driver_v1.0.2):void LT8911_Init(struct video_timing *video_format)
Lt8911.h (d:\龙迅产品程序整理(深圳)\lt8911\lt8911\lt8911exb\democode\for linux\lt8911exb_linux_driver_v1.0.2\include):extern void LT8911_Init(struct video_timing *video_format);
LT8911EXB_Main.c (d:\龙迅产品程序整理(深圳)\lt8911\lt8911\lt8911exb\democode\for linux\lt8911exb_linux_driver_v1.0.2): LT8911_Init();

Binary file not shown.

View File

@ -99,6 +99,7 @@ CONFIG_NAND_BBT_OFFSET=0x240000
CONFIG_SYS_SPI_NAND_U_BOOT_LOCATIONS=y
CONFIG_SPI_NAND_WINBOND=y
CONFIG_SPI_NAND_GIGADEVICE=y
CONFIG_SPI_NAND_TOSHIBA=y
CONFIG_SPI_NAND_FMSH=y
CONFIG_SPI_NAND_FORESEE=y
CONFIG_SPI_NAND_ZBIT=y
@ -138,8 +139,8 @@ CONFIG_DM_VIDEO=y
CONFIG_DISPLAY=y
CONFIG_ARTINCHIP_GRAPHICS=y
CONFIG_VIDEO_ARTINCHIP=y
CONFIG_AIC_DISP_LVDS=y
CONFIG_AIC_PANEL_LVDS_GENERAL=y
CONFIG_AIC_DISP_MIPI_DSI=y
CONFIG_AIC_PANEL_DSI_SIMPLE=y
# CONFIG_WATCHDOG is not set
# CONFIG_WATCHDOG_AUTOSTART is not set
CONFIG_WDT=y

View File

@ -139,12 +139,16 @@ static struct aic_pll clk_plls[] = {
0, AIC_PLL_INT),
CLK_PLL(CLK_PLL_INT1, PLL_INT1_GEN_REG, PLL_INT1_CFG_REG,
0, AIC_PLL_INT),
// CLK_PLL(CLK_PLL_FRA0, PLL_FRA0_GEN_REG, PLL_FRA0_CFG_REG,
// PLL_FRA0_SDM_REG, AIC_PLL_SDM),
CLK_PLL(CLK_PLL_FRA0, PLL_FRA0_GEN_REG, PLL_FRA0_CFG_REG,
PLL_FRA0_SDM_REG, AIC_PLL_SDM),
PLL_FRA0_SDM_REG, AIC_PLL_FRA),
CLK_PLL(CLK_PLL_FRA1, PLL_FRA1_GEN_REG, PLL_FRA1_CFG_REG,
PLL_FRA1_SDM_REG, AIC_PLL_FRA),
// CLK_PLL_VIDEO(CLK_PLL_FRA2, PLL_FRA2_GEN_REG, PLL_FRA2_CFG_REG,
// PLL_FRA2_SDM_REG, AIC_PLL_SDM, 0, 1200000000),
CLK_PLL_VIDEO(CLK_PLL_FRA2, PLL_FRA2_GEN_REG, PLL_FRA2_CFG_REG,
PLL_FRA2_SDM_REG, AIC_PLL_SDM, 0, 1200000000),
PLL_FRA2_SDM_REG, AIC_PLL_FRA, 0, 1200000000),
};

View File

@ -192,6 +192,26 @@ static const struct spinand_info gigadevice_spinand_table[] = {
SPINAND_HAS_QE_BIT,
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
gd5fxgq4uexxg_ecc_get_status)),
SPINAND_INFO("GD5F2GM7UEY1G",
SPINAND_ID(0x92),
NAND_MEMORG(1, 2048, 128, 64, 2048, 1, 1, 1),
NAND_ECCREQ(8, 512),
SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
&write_cache_variants,
&update_cache_variants),
SPINAND_HAS_QE_BIT,
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
gd5fxgq4uexxg_ecc_get_status)),
SPINAND_INFO("GD5F2GQ5UEY1G",
SPINAND_ID(0x52),
NAND_MEMORG(1, 2048, 128, 64, 2048, 1, 1, 1),
NAND_ECCREQ(8, 512),
SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
&write_cache_variants,
&update_cache_variants),
SPINAND_HAS_QE_BIT,
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
gd5fxgq4uexxg_ecc_get_status)),
};
static int gigadevice_spinand_detect(struct spinand_device *spinand)

View File

@ -281,7 +281,7 @@ static void aicfb_video_init(struct udevice *dev)
uc_priv->fb = (void *)priv->fb_start;
uc_priv->fb_size = dt->stride * dt->height;
memset(uc_priv->fb, 0xFF, uc_priv->fb_size);
memset(uc_priv->fb, 0, uc_priv->fb_size);
flush_dcache_range(priv->fb_start, priv->fb_start + uc_priv->fb_size);
#endif
}

View File

@ -62,6 +62,15 @@ static struct aic_panel_funcs panel_funcs = {
/* Init the videomode parameter, dts will override the initial value. */
static struct fb_videomode panel_vm = {
.pixclock = 150 * 1000 * 1000,
.xres = 1920,
.right_margin = 188,
.left_margin = 148,
.hsync_len = 44,
.yres = 1080,
.lower_margin = 4,
.upper_margin = 36,
.vsync_len = 5,
.flag = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_POSEDGE
};

View File

@ -0,0 +1 @@
/opt/linuxOS_D21X/target/d211/demo128_nand/image_cfg.json

View File

@ -7,7 +7,7 @@ BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
BR2_TARGET_GENERIC_HOSTNAME="ArtInChip-Device"
# BR2_TARGET_ENABLE_ROOT_LOGIN is not set
BR2_TARGET_TZ_INFO=y
BR2_TARGET_LOCALTIME="Asia/Shanghai"
BR2_TARGET_LOCALTIME="UTC"
BR2_ROOTFS_POST_IMAGE_SCRIPT="target/d211/common/post-image.sh"
# BR2_TARGET_GENERIC_GETTY is not set
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
@ -17,6 +17,15 @@ BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
BR2_TARGET_ROOTFS_UBI=y
BR2_TARGET_ROOTFS_UBIFS_MAX_SIZE=0x4000000
BR2_TARGET_ROOTFS_UBIFS_OPTS="-F"
BR2_TARGET_USERFS1=y
BR2_TARGET_USERFS1_NAME="system"
BR2_TARGET_USERFS1_TYPE_UBIFS=y
BR2_TARGET_USERFS1_OVERLAY="target/$(LUBAN_CHIP_NAME)/$(LUBAN_BOARD_NAME)/system"
BR2_TARGET_USERFS2=y
BR2_TARGET_USERFS2_NAME="data"
BR2_TARGET_USERFS2_TYPE_UBIFS=y
BR2_TARGET_USERFS2_OVERLAY="target/$(LUBAN_CHIP_NAME)/$(LUBAN_BOARD_NAME)/data"
BR2_GENERATE_BURNER_IMAGE=y
BR2_GENERATE_IMAGE_AUTO_CALCULATE_SIZE=y
BR2_PACKAGE_OPENSBI_FW_TEXT_BASE=0x47FE0000
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="d211_demo128_nand"
@ -35,9 +44,10 @@ BR2_LINUX_KERNEL_DEFCONFIG="d211_demo128_nand"
BR2_LINUX_KERNEL_IMAGEGZ=y
BR2_PACKAGE_LINUX_TOOLS_SELFTESTS=y
# BR2_PACKAGE_AIC_AUTHORIZATION is not set
BR2_PACKAGE_LVGL_UI=y
BR2_PACKAGE_AIC_MPP_AAC_DECODER=y
# BR2_PACKAGE_TEST_DVP is not set
# BR2_PACKAGE_TEST_TOUCHSCREEN is not set
# BR2_PACKAGE_BUSYBOX_USE_PREBUILT is not set
BR2_PACKAGE_BUSYBOX_CONFIG="package/third-party/busybox/configs/d211_demo128_nand_defconfig"
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_UTIL_LINUX_BINARIES=y
@ -50,12 +60,31 @@ BR2_PACKAGE_ALSA_UTILS_ACONNECT=y
BR2_PACKAGE_FBDUMP=y
BR2_PACKAGE_CAN_UTILS=y
BR2_PACKAGE_ETHTOOL=y
BR2_PACKAGE_IPERF3=y
BR2_PACKAGE_LIBMNL=y
BR2_PACKAGE_LIBNL_TOOLS=y
BR2_PACKAGE_NETPERF=y
BR2_PACKAGE_WPA_SUPPLICANT=y
# BR2_PACKAGE_WPA_SUPPLICANT_USE_PREBUILT is not set
BR2_PACKAGE_WPA_SUPPLICANT_WEXT=y
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
BR2_PACKAGE_WPA_SUPPLICANT_WPA3=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
BR2_PACKAGE_WIRELESS_TOOLS=y
# BR2_PACKAGE_WIRELESS_TOOLS_USE_PREBUILT is not set
BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
BR2_PACKAGE_HOSTAPD=y
# BR2_PACKAGE_HOSTAPD_USE_PREBUILT is not set
BR2_PACKAGE_HOSTAPD_DRIVER_WIRED=y
BR2_PACKAGE_HOSTAPD_EAP=y
BR2_PACKAGE_HOSTAPD_WPS=y
BR2_PACKAGE_HOSTAPD_WPA3=y
BR2_PACKAGE_AIC8800_FW=y
BR2_PACKAGE_LIBKCAPI_ENCAPP=y
BR2_PACKAGE_LIBKCAPI_HASHER=y
BR2_PACKAGE_LIBKCAPI_RNGAPP=y
@ -73,6 +102,7 @@ BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y
BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL=y
BR2_PACKAGE_BLUEZ_TOOLS=y
BR2_PACKAGE_ANDROID_TOOLS=y
BR2_PACKAGE_SWUPDATE=y
BR2_PACKAGE_RTL8733BS_BT_FW=y
# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set
BR2_PACKAGE_HOST_E2FSPROGS=y

Binary file not shown.

View File

@ -1481,8 +1481,8 @@
<AIC_PINMUX('C', 2, 2)>,
<AIC_PINMUX('C', 3, 2)>,
<AIC_PINMUX('C', 4, 2)>,
<AIC_PINMUX('C', 5, 2)>,
<AIC_PINMUX('C', 6, 2)>;
<AIC_PINMUX('C', 5, 2)>;
//<AIC_PINMUX('C', 6, 2)>;
bias-pull-up;
drive-strength = <3>;
};

View File

@ -34,7 +34,7 @@ kernel_comp_size=0x1000000
# set_commonargs=setenv bootargs earlycon=${earlycon} earlyprintk rdinit=${init} initramfs_dbg=${ramfs_dbg}
set_commonargs_recovery=setenv bootargs earlycon=${earlycon} earlyprintk rdinit=/linuxrc
# Case 2: Mount rootfs directly
set_commonargs=setenv bootargs quiet earlycon=${earlycon} earlyprintk init=/linuxrc firmware_class.path=/etc/firmware
set_commonargs=setenv bootargs earlycon=${earlycon} earlyprintk init=/linuxrc firmware_class.path=/etc/firmware
#===============================================================================
@ -63,7 +63,7 @@ set_nand_mtdargs=env delete mtdparts
set_nand_bootargs=run set_nand_mtdargs; \
run set_commonargs; \
setenv bootargs ${bootargs} mtdparts=${MTD} ubi.mtd=${ubi_rootfs_mtd} root=${nand_root} rootfstype=${nand_rootfstype}
setenv bootargs ${bootargs} mtdparts=${MTD} ubi.mtd=${ubi_rootfs_mtd} ubi.mtd=11 root=${nand_root} rootfstype=${nand_rootfstype}
set_nand_bootargs_recovery=run set_nand_mtdargs; \
run set_commonargs_recovery; \

View File

@ -167,106 +167,49 @@
};
#endif
panel_rgb {
compatible = "artinchip,aic-general-rgb-panel";
status = "disabled";
enable-gpios = <&gpio_e 19 GPIO_ACTIVE_HIGH>;
rgb-mode = <PRGB>;
interface-format = <PRGB_16BIT_LD>;
clock-phase = <DEGREE_0>;
data-order = <RGB>;
disp-dither = <DITHER_RGB565>;
panel_dsi {
compatible = "artinchip,aic-dsi-panel-simple";
u-boot,dm-pre-reloc;
port {
u-boot,dm-pre-reloc;
panel_rgb_in: endpoint {
remote-endpoint = <&rgb0_out>;
u-boot,dm-pre-reloc;
};
};
display-timings {
native-mode = <&timing0>;
u-boot,dm-pre-reloc;
timing0: 1024x600 {
clock-frequency = <52000000>;
hactive = <1024>;
vactive = <600>;
hback-porch = <160>;
hfront-porch = <160>;
hsync-len = <20>;
vback-porch = <12>;
vfront-porch = <20>;
vsync-len = <3>;
de-active = <1>;
pixelclk-active = <1>;
u-boot,dm-pre-reloc;
};
};
};
panel_lvds {
compatible = "artinchip,aic-general-lvds-panel";
data-mapping = "vesa-24";
data-channel = "single-link1";
backlight = <&backlight>;
status = "okay";
u-boot,dm-pre-reloc;
enable-gpios = <&gpio_c 7 GPIO_ACTIVE_HIGH>;
sleep-gpios = <&gpio_a 3 GPIO_ACTIVE_HIGH>;
//reset-gpios = <&gpio_e 1 GPIO_ACTIVE_HIGH>;
port {
panel_lvds_in: endpoint {
remote-endpoint = <&lvds0_out>;
u-boot,dm-pre-reloc;
};
};
display-timings {
native-mode = <&timing1>;
u-boot,dm-pre-reloc;
timing1: 1024x600 {
clock-frequency = <52000000>;
hactive = <1024>;
vactive = <600>;
hback-porch = <160>;
hfront-porch = <160>;
hsync-len = <20>;
vback-porch = <20>;
vfront-porch = <12>;
vsync-len = <3>;
de-active = <1>;
pixelclk-active = <1>;
panel_dsi_in: endpoint {
u-boot,dm-pre-reloc;
remote-endpoint = <&dsi0_out>;
};
};
};
};
backlight: backlight {
compatible = "pwm-backlight";
/* pwm node name; pwm device No.; period_ns; pwm_polarity */
pwms = <&pwm 3 1000000 0>;
pwms = <&pwm 0 1000000 0>;
brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
default-brightness-level = <6>;
u-boot,dm-pre-reloc;
status = "disabled";
status = "okay";
};
rfkill_bt {
compatible = "rfkill-gpio";
rfkill-name = "bluetooth";
rfkill-type = <2>;
reset-gpios = <&gpio_d 3 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio_c 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
/*
rfkill_wlan {
compatible = "rfkill-gpio";
rfkill-name = "wlan";
rfkill-type = <1>;
reset-gpios = <&gpio_d 1 GPIO_ACTIVE_HIGH>;
//reset-gpios = <&gpio_c 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
*/
keys: gpio-keys {
compatible = "gpio-keys";
@ -370,8 +313,9 @@
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&uart2_pins_a>;
status = "disabled";
//pinctrl-0 = <&uart2_pins_a>;
pinctrl-0 = <&uart2_pins_a>, <&uart2_rts_pins_a>, <&uart2_cts_pins_a>;
status = "okay";
};
&uart3 {
@ -409,11 +353,16 @@
&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins_b>;
status = "disabled";
rtc@32 {
compatible = "epson,rx8010";
reg = <0x32>;
status = "okay";
lt8911exb@29 {
status = "okay";
compatible = "lontium,lt8911exb";
reg = <0x29>;
reset-gpios = <&gpio_e 6 GPIO_ACTIVE_HIGH>;
power-gpios = <&gpio_e 2 GPIO_ACTIVE_HIGH>;
};
};
&i2c1 {
@ -431,10 +380,10 @@
&i2c3 {
pinctrl-names = "default";
pinctrl-0 = <&i2c3_pins_a>;
status = "okay";
status = "disabled";
gt9xx@5d {
status = "okay";
status = "disabled";
compatible = "goodix,gt9xx";
reg = <0x5d>;
reset-gpios = <&gpio_a 8 GPIO_ACTIVE_LOW>;
@ -501,10 +450,14 @@
&sdmc1 {
pinctrl-names = "default";
pinctrl-0 = <&sdmc1_pins>;
max-frequency= <40000000>;
//power-gpios = <&gpio_c 6 GPIO_ACTIVE_HIGH>;
bus-width = <4>;
cap-sd-highspeed;
no-mmc;
no-sd;
non-removable;
cap-sdio-irq;
status = "okay";
u-boot,dm-pre-reloc;
};
&sdmc2 {
@ -515,7 +468,7 @@
no-sd;
non-removable;
cap-sdio-irq;
status = "okay";
status = "disabled";
};
/* case 1: USB0 = OTG Enable */
@ -610,9 +563,9 @@
};
};
pwm3_pins_d: pwm3-3 {
pwm0_pins_d: pwm0-3 {
pins {
pinmux = <AIC_PINMUX('E', 19, 5)>;
pinmux = <AIC_PINMUX('E', 1, 8)>;
bias-disable;
drive-strength = <3>;
};
@ -643,12 +596,12 @@
gpio_f: bank-5 {
u-boot,dm-pre-reloc;
};
lvds1_pins: lvds1-0 {
u-boot,dm-pre-reloc;
pins {
u-boot,dm-pre-reloc;
};
};
dsi_pins: dsi-0 {
u-boot,dm-pre-reloc;
pins {
u-boot,dm-pre-reloc;
};
};
uart0_pins_a: uart0-0 {
u-boot,dm-pre-reloc;
pins1 {
@ -664,6 +617,12 @@
u-boot,dm-pre-reloc;
};
};
pwm0_pins_d: pwm0-3 {
u-boot,dm-pre-reloc;
pins {
u-boot,dm-pre-reloc;
};
};
sdmc1_pins: sdmc1-0 {
u-boot,dm-pre-reloc;
pins {
@ -683,7 +642,7 @@
aic,use_extclk;
status = "okay";
status = "disabled";
gmac0_mdio: mdio {
compatible = "aicmac-mdio";
@ -701,8 +660,8 @@
&codec {
pinctrl-names = "default";
pinctrl-0 = <&spk_pins_d>, <&dmic_pins_a>;
pa-gpios = <&gpio_a 7 GPIO_ACTIVE_LOW>;
pinctrl-0 = <&spk_pins_c>, <&dmic_pins_a>;
pa-gpios = <&gpio_a 7 GPIO_ACTIVE_HIGH>;
status = "okay";
};
@ -718,7 +677,7 @@
&fb0 {
artinchip,uboot-logo-on=<1>;
height-virtual = <1200>;
height-virtual = <2160>;
u-boot,dm-pre-reloc;
port {
u-boot,dm-pre-reloc;
@ -739,6 +698,7 @@
port@0 {
reg = <0>;
u-boot,dm-pre-reloc;
de0_in: endpoint {
remote-endpoint = <&fb0_out>;
u-boot,dm-pre-reloc;
@ -747,48 +707,27 @@
port@1 {
reg = <1>;
u-boot,dm-pre-reloc;
de0_out: endpoint {
remote-endpoint = <&lvds0_in>;
remote-endpoint = <&dsi0_in>;
u-boot,dm-pre-reloc;
};
};
};
&rgb0 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&lcd_rgb565_ld_pins>;
pinctrl-1 = <&lcd_rgb565_ld_sleep_pins>;
u-boot,dm-pre-reloc;
status = "disabled";
port@0 {
reg = <0>;
u-boot,dm-pre-reloc;
rgb0_in: endpoint {
remote-endpoint = <&rgb0_in>;
u-boot,dm-pre-reloc;
};
};
port@1 {
reg = <1>;
u-boot,dm-pre-reloc;
rgb0_out: endpoint {
remote-endpoint = <&panel_rgb_in>;
u-boot,dm-pre-reloc;
};
};
};
&lvds0 {
&dsi0 {
pinctrl-names = "default";
pinctrl-0 = <&lvds1_pins>;
pinctrl-0 = <&dsi_pins>;
status = "okay";
u-boot,dm-pre-reloc;
data-lanes = <3 2 1 0>;
lane-polarities = <0 0 0 0>;
port@0 {
reg = <0>;
lvds0_in: endpoint {
u-boot,dm-pre-reloc;
dsi0_in: endpoint {
remote-endpoint = <&de0_out>;
u-boot,dm-pre-reloc;
};
@ -796,8 +735,9 @@
port@1 {
reg = <1>;
lvds0_out: endpoint {
remote-endpoint = <&panel_lvds_in>;
u-boot,dm-pre-reloc;
dsi0_out: endpoint {
remote-endpoint = <&panel_dsi_in>;
u-boot,dm-pre-reloc;
};
};
@ -877,10 +817,10 @@
};
&pwm {
status = "disabled";
status = "okay";
u-boot,dm-pre-reloc;
pinctrl-names = "default";
pinctrl-0 = <&pwm3_pins_d>;
pinctrl-0 = <&pwm0_pins_d>;
/* mode: up-count, down-count, up-down-count
action: none, low, high, inverse */
pwm0 {
@ -891,7 +831,7 @@
/* CBD, CBU, CAD, CAU, PRD, ZRO */
aic,action0 = "none", "none", "none", "low", "none", "high";
aic,action1 = "none", "none", "none", "high", "none", "low";
status = "disabled";
status = "okay";
u-boot,dm-pre-reloc;
};

Binary file not shown.

View File

@ -1,6 +1,6 @@
{
"spi-nand": { // Device, The name should be the same with string in image:info:media:type
"size": "128m", // Size of SPI NAND
"size": "256m", // Size of SPI NAND
"partitions": {
"spl": { "size": "1m" },
"uboot": { "size": "1m" },
@ -13,7 +13,7 @@
"kernel": { "size": "12m" },
"recovery": { "size": "16m" },
"ubiroot": {
"size": "64m",
"size": "40m",
"ubi": { // Volume in UBI device
"rootfs": { "size": "-" },
},
@ -21,7 +21,8 @@
"ubisystem": {
"size": "-",
"ubi": { // Volume in UBI device
"user": { "size": "-" },
"system": { "size": "8m" },
"data": { "size": "-" },
},
},
}
@ -103,10 +104,15 @@
"attr": ["ubi", "required"],
"part": ["ubiroot:rootfs"]
},
"app": {
"file": "user*.ubifs",
"system": {
"file": "system*.ubifs",
"attr": ["ubi", "optional"],
"part": ["ubisystem:user"]
"part": ["ubisystem:system"]
},
"data": {
"file": "data*.ubifs",
"attr": ["ubi", "optional"],
"part": ["ubisystem:data"]
},
},
},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1 @@
placeholder

View File

@ -0,0 +1,11 @@
# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root / ext2 rw,noauto 0 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /tmp tmpfs mode=1777 0 0
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
sysfs /sys sysfs defaults 0 0
ubi1:system /system ubifs ro,defaults 0 0
ubi1:data /data ubifs defaults 0 0

View File

@ -0,0 +1,55 @@
#!/bin/sh
#
# Auto-create and mount UBI volumes for system and data partitions
#
start() {
echo "Initializing UBI volumes..."
# Check if ubi1 device exists
if [ ! -e /dev/ubi1 ]; then
echo "ubi1 device not found, skipping..."
return 0
fi
# Create mount points
mkdir -p /system /data
# Mount system (read-only)
if ! mountpoint -q /system; then
echo "Mounting /system..."
mount -t ubifs -o ro ubi1:system /system 2>/dev/null || echo "Failed to mount /system"
fi
# Mount data (read-write)
if ! mountpoint -q /data; then
echo "Mounting /data..."
mount -t ubifs ubi1:data /data 2>/dev/null || echo "Failed to mount /data"
fi
echo "UBI volumes initialized"
}
stop() {
echo "Unmounting UBI volumes..."
umount /data 2>/dev/null
umount /system 2>/dev/null
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

View File

@ -0,0 +1,114 @@
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
HCI_DEV=hci0
UART_DEV=/dev/ttyS2
HCIATTACH_BIN=/usr/bin/hciattach
HCIATTACH_ARGS="-s 1500000 ${UART_DEV} any 1500000 flow nosleep"
HCI_TOOL=/usr/bin/bt-hci-tool
BTGATT_BIN=/usr/bin/btgatt-server
BTGATT_ARGS="-m 256 -i ${HCI_DEV} -s low -t public"
BLUETOOTHD_BIN=/usr/libexec/bluetooth/bluetoothd
BT_LOCAL_NAME="AIC-BT"
HCI_WAIT_TIMEOUT=10
ATTACH_PIDFILE=/var/run/hciattach.pid
BTGATT_PIDFILE=/var/run/btgatt-server.pid
BLUETOOTHD_PIDFILE=/var/run/bluetoothd.pid
wait_for_hci()
{
"${HCI_TOOL}" wait "${HCI_DEV}" "${HCI_WAIT_TIMEOUT}"
}
bring_hci_up()
{
"${HCI_TOOL}" up "${HCI_DEV}"
}
start_bt()
{
echo "[BT] Init AIC8800..."
insmod /lib/modules/5.10.44/kernel/drivers/net/wireless/aic8800/aic8800_btlpm/aic8800_btlpm.ko 2>/dev/null
sleep 1
killall hciattach 2>/dev/null
killall bluetoothd 2>/dev/null
killall btgatt-server 2>/dev/null
rm -f "${ATTACH_PIDFILE}" "${BLUETOOTHD_PIDFILE}" "${BTGATT_PIDFILE}"
"${HCIATTACH_BIN}" ${HCIATTACH_ARGS} &
echo $! > "${ATTACH_PIDFILE}"
if ! wait_for_hci; then
echo "[BT] ERROR: ${HCI_DEV} not ready"
return 1
fi
if ! bring_hci_up; then
echo "[BT] ERROR: failed to bring ${HCI_DEV} up"
return 1
fi
# 先启动 LE 广播
hciconfig ${HCI_DEV} leadv 0
sleep 1
# <20><><EFBFBD>动 bluetoothd
"${BLUETOOTHD_BIN}" &
echo $! > "${BLUETOOTHD_PIDFILE}"
echo "[BT] Waiting 10 seconds before init..."
sleep 10
# 启动 btgatt-server
"${BTGATT_BIN}" ${BTGATT_ARGS} >/dev/null 2>&1 &
echo $! > "${BTGATT_PIDFILE}"
echo "[BT] Bluetooth ready with GATT server"
}
stop_bt()
{
hciconfig ${HCI_DEV} noleadv 2>/dev/null
if [ -f "${BTGATT_PIDFILE}" ]; then
kill "$(cat "${BTGATT_PIDFILE}")" 2>/dev/null
rm -f "${BTGATT_PIDFILE}"
else
killall btgatt-server 2>/dev/null
fi
if [ -f "${BLUETOOTHD_PIDFILE}" ]; then
kill "$(cat "${BLUETOOTHD_PIDFILE}")" 2>/dev/null
rm -f "${BLUETOOTHD_PIDFILE}"
else
killall bluetoothd 2>/dev/null
fi
if [ -f "${ATTACH_PIDFILE}" ]; then
kill "$(cat "${ATTACH_PIDFILE}")" 2>/dev/null
rm -f "${ATTACH_PIDFILE}"
else
killall hciattach 2>/dev/null
fi
}
case "$1" in
start)
start_bt >/dev/null 2>&1 &
;;
stop)
stop_bt
;;
restart)
stop_bt
sleep 1
start_bt
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $?

View File

@ -0,0 +1,42 @@
# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
#
# Note: BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use
# sysvinit.
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id == tty to run on, or empty for /dev/console
# runlevels == ignored
# action == one of sysinit, respawn, askfirst, wait, and once
# process == program to run
# Startup the system
::sysinit:/bin/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,rw /
::sysinit:/bin/mkdir -p /dev/pts /dev/shm
::sysinit:/bin/mount -a
::sysinit:/sbin/swapon -a
null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd
null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin
null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout
null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr
::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS
# e_player monitor and auto-restart
::respawn:/usr/bin/e_player_wrapper
::sysinit:/bin/cat /etc/issue # Put a getty on the serial port
console::respawn:-/bin/sh # GENERIC_SERIAL
# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r

View File

@ -0,0 +1 @@
demo128_nand-ota-marker=2026-04-27_v1001

View File

@ -2,33 +2,13 @@
# Run the swupdate daemon
case "$1" in
start)
echo -n "Starting swupdate... "
# obtain ubisystem mtd number
param=$(cat /proc/mtd | grep "ubisystem")
mtd_param=$(echo "$param" | awk -F ':' '{print $1}')
mtd_num=$(echo "$mtd_param" | awk -F 'mtd' '{print $2}')
echo "ubisystem mtd number is $mtd_num"
ubiattach /dev/ubi_ctrl -m $mtd_num
# obtain the ota part device node
param=$(grep -H -r "ota" /sys/class/ubi/* | sed 1q)
ubi_param=$(echo "$param" | awk -F '/name:ota' '{print $1}')
ubi_param=$(echo "$ubi_param" | awk -F '/sys/class/ubi/' '{print $2}')
ubi_param=$(echo "$ubi_param" | awk -F '/' '{print $2}')
echo "ota part device node is /dev/$ubi_param"
if [ -c "/dev/$ubi_param" ]; then
mkdir -p /mnt/ota
mount -t ubifs /dev/$ubi_param /mnt/ota
fi
start)
echo "swupdate_main: /data should already be mounted by S01ubivol"
mountpoint -q /data && echo "/data is ready" || \
echo "Warning: /data is NOT mounted"
;;
stop)
echo -n "Stopping swupdate... "
umount /mnt/ota
;;
echo "swupdate_main: nothing to do (/data is managed by S01ubivol)"
;;
esac

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.

View File

@ -0,0 +1,106 @@
#!/bin/sh
# e_player 崩溃监控和恢复脚本
CRASH_COUNT_FILE="/data/.e_player_crash_count"
STABLE_COUNT_FILE="/data/.e_player_stable_count"
MAX_CRASH=5
CHECK_INTERVAL=1
STABLE_CHECKS=120 # 连续检测120s 进程存在才认为稳定
if [ ! -f "$CRASH_COUNT_FILE" ]; then
echo 0 > "$CRASH_COUNT_FILE"
fi
if [ ! -f "$STABLE_COUNT_FILE" ]; then
echo 0 > "$STABLE_COUNT_FILE"
fi
echo "$(date): e_player_wrapper starting, waiting for e_player..." >> /data/crash.log
WAIT_COUNT=0
while [ $WAIT_COUNT -lt 20 ]; do
if ps | grep -v grep | grep -v e_player_wrapper | grep e_player > /dev/null; then
echo "$(date): e_player detected after ${WAIT_COUNT} checks, starting monitoring..." >> /data/crash.log
break
fi
sleep 3
WAIT_COUNT=$((WAIT_COUNT + 1))
done
if ! ps | grep -v grep | grep -v e_player_wrapper | grep e_player > /dev/null; then
echo "$(date): WARNING - e_player not found after 60s, will monitor anyway..." >> /data/crash.log
fi
echo "$(date): Starting main monitoring loop..." >> /data/crash.log
HEARTBEAT=0
while true; do
HEARTBEAT=$((HEARTBEAT + 1))
if [ $HEARTBEAT -ge 120 ]; then
echo "$(date): [Heartbeat] Monitoring active, stable_count=$(cat $STABLE_COUNT_FILE)" >> /data/crash.log
HEARTBEAT=0
fi
if ! ps | grep -v grep | grep -v e_player_wrapper | grep e_player > /dev/null; then
# 进程不存在,崩溃了
echo 0 > "$STABLE_COUNT_FILE" # 重置稳定计数
COUNT=$(cat "$CRASH_COUNT_FILE")
COUNT=$((COUNT + 1))
echo $COUNT > "$CRASH_COUNT_FILE"
echo "$(date): e_player crashed, count: $COUNT" >> /data/crash.log
if [ $COUNT -ge $MAX_CRASH ]; then
echo "$(date): Crash count exceeded $MAX_CRASH, restoring from factory..." >> /data/crash.log
# 从factory恢复bin文件
if [ -f /system/factory/bin/e_player ]; then
cp /system/factory/bin/e_player /data/bin/e_player
chmod +x /data/bin/e_player
echo "$(date): Restored e_player from factory" >> /data/crash.log
fi
if [ -f /system/factory/bin/lbh_client ]; then
cp /system/factory/bin/lbh_client /data/bin/lbh_client
chmod +x /data/bin/lbh_client
echo "$(date): Restored lbh_client from factory" >> /data/crash.log
fi
# 恢复配置文件
if [ -f /system/factory/system_properties.cfg ]; then
cp /system/factory/system_properties.cfg /data/system_properties.cfg
echo "$(date): Restored system_properties.cfg from factory" >> /data/crash.log
fi
# 重置崩溃计数,重新开始
echo 0 > "$CRASH_COUNT_FILE"
echo "$(date): Reset crash count, retrying..." >> /data/crash.log
fi
echo "$(date): Restarting e_player..." >> /data/crash.log
killall -9 e_player 2>/dev/null
sleep 1
export LD_LIBRARY_PATH=/data/bin/libs:/vendor/qua/lib:/lib:/usr/lib:$LD_LIBRARY_PATH
cd /data
/data/bin/e_player &
sleep 3
else
# 进程存在,累加稳定计数
STABLE=$(cat "$STABLE_COUNT_FILE")
STABLE=$((STABLE + 1))
echo $STABLE > "$STABLE_COUNT_FILE"
# 如果稳定运行120秒重置崩溃计数
if [ $STABLE -ge $STABLE_CHECKS ]; then
COUNT=$(cat "$CRASH_COUNT_FILE")
if [ $COUNT -gt 0 ]; then
echo "$(date): e_player stable, resetting crash count" >> /data/crash.log
echo 0 > "$CRASH_COUNT_FILE"
fi
echo 0 > "$STABLE_COUNT_FILE" # 重置稳定计数,下次再累计
fi
fi
sleep $CHECK_INTERVAL
done

View File

@ -1,6 +1,6 @@
software =
{
version = "1.0.0.0";
version = "1.0.0.1";
description = "Firmware update for Luban Project";
stable = {
@ -66,6 +66,16 @@ software =
* Step1: Download and upgrade partitons
* Step2: Setup ENV variables, and mark OTA "finish"
* Step3: Reboot to main system
*
* data UBIFS (ubi1:data, ubisystem):
* Optional factory/user data image built from
* target/.../data/ overlay (see image_cfg.json "data").
* Listed last so earlier images are processed first.
*
* IMPORTANT: If the .swu file itself is stored on /data (ubi1:data),
* updating this volume can corrupt the stream while it is being read.
* Prefer placing the package in RAM (/tmp), on the network, or on
* external media for OTA that includes "data".
*/
upgrade_kernel = {
images: (
@ -86,6 +96,12 @@ software =
volume = "rootfs";
installed-directly = true;
sha256 = "@rootfs";
},
{
filename = "data";
volume = "data";
installed-directly = true;
sha256 = "@data";
}
);

View File

@ -4,5 +4,7 @@ ${BINARIES_DIR}/recovery.itb:recovery
${BINARIES_DIR}/kernel.itb:kernel
${BINARIES_DIR}/logo.itb:logo
${BINARIES_DIR}/rootfs_page_2k_block_128k.ubifs:rootfs
${BINARIES_DIR}/data_page_2k_block_128k.ubifs:data
#${BINARIES_DIR}/rootfs_page_4k_block_256k.ubifs:rootfs
#${BINARIES_DIR}/data_page_4k_block_256k.ubifs:data
)

Binary file not shown.

View File

@ -1,34 +1,152 @@
#!/bin/sh
# Run the swupdate daemon
# Run the swupdate daemon (recovery side, second stage of OTA)
attach_ubi_by_name()
{
want="$1"
mtdline=$(grep "\"$want\"" /proc/mtd)
[ -z "$mtdline" ] && {
echo "S91: cannot find mtd partition '$want'"
return 1
}
mtd_num=$(echo "$mtdline" | sed -e 's/^mtd//' -e 's/:.*//')
echo "S91: '$want' is on mtd${mtd_num}"
# If some ubi device is already on this mtd, do nothing.
for u in /sys/class/ubi/ubi[0-9]*; do
[ -e "$u/mtd_num" ] || continue
cur=$(cat "$u/mtd_num" 2>/dev/null)
[ "x$cur" = "x$mtd_num" ] && {
echo "S91: $u already attached to mtd${mtd_num}"
return 0
}
done
ubiattach /dev/ubi_ctrl -m "$mtd_num" 2>&1
}
# If the .swu path in swu_param is under /data, swupdate cannot rewrite the
# ubi "data" volume while UBIFS holds it mounted (kernel: ubi_open_volume -EBUSY).
# Copy the archive to a dedicated tmpfs and umount /data before swupdate_cmd runs.
# Note: the .swu must fit in RAM (tmpfs quota below).
#
# Initramfs root is often ramfs/tmpfs where "remount,size=" does not give swupdate's
# statvfs() enough reported space; it then fails extracting kernel with ~8 MiB free.
# A fresh tmpfs on /mnt/swutmp with an explicit size= fixes that; TMPDIR must point
# there before swupdate runs (see start).
relocate_swu_off_data()
{
swu_param=$(fw_printenv -n swu_param 2>/dev/null) || return 0
[ -z "$swu_param" ] && return 0
set -- $swu_param
swu_in=""
while [ $# -gt 0 ]; do
if [ "$1" = "-i" ] && [ -n "$2" ]; then
swu_in="$2"
break
fi
shift
done
[ -z "$swu_in" ] && return 0
[ ! -f "$swu_in" ] && return 0
case "$swu_in" in
/data/*) ;;
*) return 0 ;;
esac
SWU_STAGED=/mnt/swutmp/ota.swu
mkdir -p /mnt/swutmp
umount /mnt/swutmp 2>/dev/null
echo "S91: mount dedicated tmpfs on /mnt/swutmp for .swu + swupdate extract"
if ! mount -t tmpfs -o size=110m,nr_inodes=16k tmpfs /mnt/swutmp; then
echo "S91: ERROR: tmpfs mount /mnt/swutmp failed"
return 1
fi
echo "S91: OTA package on $swu_in — copy to $SWU_STAGED and umount /data (unlock ubi data volume)"
if ! cp "$swu_in" "$SWU_STAGED"; then
echo "S91: ERROR: copy to $SWU_STAGED failed (increase tmpfs size= ?)"
umount /mnt/swutmp 2>/dev/null
return 1
fi
sync
if ! umount /data; then
echo "S91: ERROR: umount /data failed"
umount /mnt/swutmp 2>/dev/null
return 1
fi
set -- $swu_param
new_param=""
first=1
while [ $# -gt 0 ]; do
if [ "$1" = "-i" ] && [ -n "$2" ]; then
if [ $first -eq 1 ]; then
new_param="-i $SWU_STAGED"
first=0
else
new_param="$new_param -i $SWU_STAGED"
fi
shift 2
continue
fi
if [ $first -eq 1 ]; then
new_param="$1"
first=0
else
new_param="$new_param $1"
fi
shift
done
# Values starting with "-i" are parsed as fw_setenv options; use import file.
printf 'swu_param=%s\n' "$new_param" > /tmp/swu_param.relocsave
fw_setenv -s /tmp/swu_param.relocsave
sync
echo "S91: swu_param is now $(fw_printenv -n swu_param 2>/dev/null)"
touch /mnt/swutmp/.ota_use_tmpdir
return 0
}
case "$1" in
start)
echo -n "Starting swupdate... "
# obtain ubisystem mtd number
param=$(cat /proc/mtd | grep "ubisystem")
mtd_param=$(echo "$param" | awk -F ':' '{print $1}')
mtd_num=$(echo "$mtd_param" | awk -F 'mtd' '{print $2}')
echo "S91: starting OTA second stage"
echo "ubisystem mtd number is $mtd_num"
ubiattach dev/ubi_ctrl -m $mtd_num
# Attach both UBI devices so swupdate can write to:
# /dev/mtdX (logo, kernel, recovery)
# ubi0:rootfs (ubiroot)
# ubi1:data (ubisystem) -- holds the .swu package
attach_ubi_by_name "ubiroot"
attach_ubi_by_name "ubisystem"
# obtain the ota part device node
param=$(grep -H -r "ota" /sys/class/ubi/* | sed 1q)
ubi_param=$(echo "$param" | awk -F '/name:ota' '{print $1}')
ubi_param=$(echo "$ubi_param" | awk -F '/sys/class/ubi/' '{print $2}')
ubi_param=$(echo "$ubi_param" | awk -F '/' '{print $2}')
echo "ota part device node is /dev/$ubi_param"
if [ -c "/dev/$ubi_param" ]; then
mkdir -p /mnt/ota
mount -t ubifs /dev/$ubi_param /mnt/ota
# Mount ubi*:data so we can read the .swu placed there by main system.
mkdir -p /data
if ! mountpoint -q /data; then
# Try ubi0 then ubi1 — depending on attach order data may be on either.
for d in /dev/ubi1 /dev/ubi0; do
[ -e "$d" ] || continue
idx=$(echo "$d" | sed 's|.*ubi||')
if mount -t ubifs "ubi${idx}:data" /data 2>/dev/null; then
echo "S91: mounted ubi${idx}:data on /data"
break
fi
done
mountpoint -q /data || echo "S91: WARNING /data not mounted"
fi
./usr/lib/swupdate/swupdate_cmd.sh
if ! relocate_swu_off_data; then
echo "S91: ERROR: could not move OTA package off /data; aborting swupdate"
exit 1
fi
if [ -f /mnt/swutmp/.ota_use_tmpdir ]; then
export TMPDIR=/mnt/swutmp
echo "S91: TMPDIR=$TMPDIR (swupdate extract uses same tmpfs as .swu)"
fi
exec /usr/lib/swupdate/swupdate_cmd.sh
;;
stop)
echo -n "Stopping swupdate... "
umount /mnt/ota
umount /data 2>/dev/null
umount /mnt/swutmp 2>/dev/null
;;
esac

View File

@ -9,7 +9,7 @@ case "$1" in
mkdir -p /mnt/ota
mount /dev/mmcblk0p11 /mnt/ota
./usr/lib/swupdate/swupdate_cmd.sh
/usr/lib/swupdate/swupdate_cmd.sh
;;
stop)
echo -n "Stopping swupdate... "