Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
231 changes: 231 additions & 0 deletions br-ext-chip-hisilicon/board/hi3516av100/hi3516av100.neo.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
#
# Seed kernel config for hi3516av100_neo (V2A platform, modern kernel).
# Expand with: make ARCH=arm olddefconfig
#

# Architecture — Cortex-A7, ARMv7, single Linux CPU (vendor BSP layout)
CONFIG_ARM=y
CONFIG_ARCH_MULTI_V7=y
# CONFIG_ARCH_MULTI_V5 is not set
# CONFIG_ARCH_MULTI_V6 is not set
CONFIG_CPU_V7=y
# CONFIG_SMP is not set
CONFIG_AEABI=y
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_NEON=y
# CONFIG_THUMB2_KERNEL is not set
# CONFIG_CACHE_L2X0 is not set

# HiSilicon BVT platform — hi3516av100 (Cortex-A7, V2A)
CONFIG_ARCH_HISI_BVT=y
CONFIG_ARCH_HI3516AV100=y
# CONFIG_ARCH_HI3516A is not set
# CONFIG_ARCH_HI3516CV200 is not set
# CONFIG_ARCH_HI3516CV300 is not set
# CONFIG_ARCH_HI3516CV500 is not set
# CONFIG_ARCH_HI3516DV300 is not set
# CONFIG_ARCH_HI3516EV200 is not set
# CONFIG_ARCH_HI3516EV300 is not set
# CONFIG_ARCH_HI3518EV300 is not set
# CONFIG_ARCH_HI3516DV200 is not set
# CONFIG_HISI_MC is not set
# CONFIG_ARCH_HISI is not set

# Boot — appended DTB (uImage = zImage + DTB wrapped by neo-post-image.sh)
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_CMDLINE="earlycon=pl011,0x20080000"
CONFIG_CMDLINE_EXTEND=y
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0

# General
CONFIG_LOCALVERSION=""
CONFIG_DEFAULT_HOSTNAME="openipc"
CONFIG_SYSVIPC=y
# CONFIG_SWAP is not set
# CONFIG_USELIB is not set
# CONFIG_CROSS_MEMORY_ATTACH is not set
CONFIG_KERNEL_XZ=y

# Timer — Cortex-A7 architected ARM timer
CONFIG_ARM_ARCH_TIMER=y
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
CONFIG_HAVE_ARM_ARCH_TIMER=y
CONFIG_HZ_PERIODIC=y
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_PREEMPT_NONE=y

# Memory — 1 GiB RAM at 0x80000000; CMA for openhisilicon MMZ
CONFIG_CMA=y
CONFIG_DMA_CMA=y
CONFIG_CMA_SIZE_MBYTES=0
CONFIG_CMA_AREAS=7
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_FLATMEM=y
CONFIG_COMPACTION=y

# Clocks + reset — av100 CRG driver lives in upstream-patches via the
# companion openipc/linux PR (sibling of #43 for cv200).
CONFIG_COMMON_CLK_HI3516AV100=y
CONFIG_RESET_HISI=y

# Interrupt — av100 uses GIC (Cortex-A7 generic). NO SP804 timer.
CONFIG_ARM_GIC=y

# Block devices
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=65536

# MTD — SPI NOR flash (av100 boards typically 16MB NOR)
CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_SPI_NOR=y

# Network — HiSilicon higmac (av100 DT uses hisilicon,higmac)
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_PNP is not set
# CONFIG_NETFILTER is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_IPV6 is not set
CONFIG_NETDEVICES=y
CONFIG_ETHERNET=y
CONFIG_NET_VENDOR_HISILICON=y
CONFIG_HISI_HIGMAC=y
CONFIG_PHYLIB=y
CONFIG_FIXED_PHY=y
# Disable all other ethernet vendors
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_ALACRITECH is not set
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_AMD is not set
# CONFIG_NET_VENDOR_AQUANTIA is not set
# CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_VENDOR_ATHEROS is not set
# CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_NET_VENDOR_CADENCE is not set
# CONFIG_NET_VENDOR_CAVIUM is not set
# CONFIG_NET_VENDOR_CIRRUS is not set
# CONFIG_NET_VENDOR_CORTINA is not set
# CONFIG_NET_VENDOR_DAVICOM is not set
# CONFIG_NET_VENDOR_FARADAY is not set
# CONFIG_NET_VENDOR_FREESCALE is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MEDIATEK is not set
# CONFIG_NET_VENDOR_MELLANOX is not set
# CONFIG_NET_VENDOR_MICREL is not set
# CONFIG_NET_VENDOR_MICROCHIP is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_NETRONOME is not set
# CONFIG_NET_VENDOR_NI is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
# CONFIG_NET_VENDOR_REALTEK is not set
# CONFIG_NET_VENDOR_RENESAS is not set
# CONFIG_NET_VENDOR_SAMSUNG is not set
# CONFIG_NET_VENDOR_SEEQ is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_STMICRO is not set
# CONFIG_NET_VENDOR_SYNOPSYS is not set
# CONFIG_NET_VENDOR_TI is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
# CONFIG_NET_VENDOR_XILINX is not set
# CONFIG_WLAN is not set
# CONFIG_WIRELESS is not set

# I2C
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_HIBVT=y

# SPI
CONFIG_SPI=y
CONFIG_SPI_PL022=y

# GPIO
CONFIG_GPIOLIB=y
CONFIG_GPIO_PL061=y

# Serial / UART
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_SERIAL_EARLYCON=y

# Power
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_SYSCON=y

# Regulator + CPU freq + PM_OPP — vendor open_pm.ko references these for
# the av100 AVS (adaptive voltage scaling) path. Enable so modpost
# resolves the symbols; at runtime the blob's regulator binding doesn't
# match any node in our DT, so the avs path stays dormant.
CONFIG_REGULATOR=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_PM=y
CONFIG_PM_OPP=y

# Filesystems
CONFIG_TMPFS=y
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_XZ=y
CONFIG_OVERLAY_FS=y
CONFIG_JFFS2_FS=y
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y

# Initrd / initramfs
CONFIG_BLK_DEV_INITRD=y
CONFIG_RD_XZ=y
# CONFIG_RD_GZIP is not set
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
# CONFIG_RD_ZSTD is not set

# Debug — earlycon for boot debugging
CONFIG_EARLY_PRINTK=y

# Trim — av100 is RAM-permissive (1 GiB) but keep kernel small
# CONFIG_COREDUMP is not set
# CONFIG_ETHTOOL_NETLINK is not set
# CONFIG_BPF_SYSCALL is not set
# CONFIG_AUDIT is not set
# CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set
# CONFIG_FTRACE is not set
# CONFIG_KALLSYMS is not set
# CONFIG_PRINTK_TIME is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y

# Disable subsystems not needed on IP cameras
# CONFIG_INPUT is not set
# CONFIG_VT is not set
# CONFIG_SOUND is not set
# CONFIG_FB is not set
# CONFIG_SCSI is not set
# CONFIG_F2FS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_CONFIGFS_FS is not set
# CONFIG_CGROUPS is not set
# CONFIG_NAMESPACES is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_WATCHDOG is not set
# CONFIG_MMC is not set
# CONFIG_CRAMFS is not set
37 changes: 37 additions & 0 deletions br-ext-chip-hisilicon/board/hi3516av100/neo-post-image.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/sh
# Post-image: append av100 DTB to zImage and wrap as uImage for hi3516av100_neo.
IMAGES_DIR="${BINARIES_DIR:-$1}"
BUILD_DIR="${BUILD_DIR:-$(dirname $IMAGES_DIR)/build}"
HOST_DIR="${HOST_DIR:-$(dirname $IMAGES_DIR)/host}"
KDIR="$BUILD_DIR/linux-custom"
ZIMAGE="$IMAGES_DIR/zImage"
DTB="$KDIR/arch/arm/boot/dts/hisilicon/hi3516av100-demb.dtb"
LOADADDR=0x80008000

MKIMAGE=""
for p in \
"${HOST_DIR}/bin/mkimage" \
"$(dirname $IMAGES_DIR)/host/bin/mkimage" \
"$(find $(dirname $IMAGES_DIR)/per-package -name mkimage -type f 2>/dev/null | head -1)" \
"$(which mkimage 2>/dev/null)"; do
[ -x "$p" ] && MKIMAGE="$p" && break
done
[ -z "$MKIMAGE" ] && echo "neo-post-image: ERROR: mkimage not found" >&2 && exit 1

[ -f "$ZIMAGE" ] || exit 0
[ -f "$DTB" ] || exit 0

KREL=$(sed 's/-//g' "$KDIR/include/config/kernel.release")

cat "$ZIMAGE" "$DTB" > "${IMAGES_DIR}/zImage-dtb"
$MKIMAGE -A arm -O linux -T kernel -C none \
-a $LOADADDR -e $LOADADDR \
-n "Linux-${KREL}-hi3516av100" \
-d "${IMAGES_DIR}/zImage-dtb" "${IMAGES_DIR}/uImage"
rm -f "${IMAGES_DIR}/zImage-dtb"
if [ -f "${IMAGES_DIR}/uImage" ]; then
echo "neo-post-image: uImage $(( $(stat -c%s ${IMAGES_DIR}/uImage) / 1024 ))KB"
else
echo "neo-post-image: ERROR: mkimage failed" >&2
exit 1
fi
Loading
Loading