Skip to content

hi3516cv6xx: add Hi3516CV610/Hi3516CV608 family support#2167

Merged
widgetii merged 1 commit into
masterfrom
feat/hi3516cv6xx-family
Jun 3, 2026
Merged

hi3516cv6xx: add Hi3516CV610/Hi3516CV608 family support#2167
widgetii merged 1 commit into
masterfrom
feat/hi3516cv6xx-family

Conversation

@widgetii
Copy link
Copy Markdown
Member

@widgetii widgetii commented Jun 3, 2026

Summary

Add OpenIPC support for the HiSilicon Hi3516CV6XX family (lead chip Hi3516CV610, binned variant Hi3516CV608) — a modern HiSilicon IP-camera platform (Cortex-A7, kernel 5.10.221, ot_*.ko vendor module naming, FIT-image packaging). No trace of CV610/CV608 existed in this repo before this PR.

Sourced from third-party fork dimerr/firmware:hi3516cv610 (4 commits by Dmitry Ermakov on top of 8f513084, 2026-03-05). The fork was reviewed against PR #2143 fork-drift anti-pattern; four issues corrected before landing:

  1. Stripped the OPENIPC_REPO_OWNER/_TOOLCHAIN_OWNER/_KERNEL_OWNER GitHub-probe additions to general/external.mk (same anti-pattern as PR Remove duplicated rtl8188fu Config.in #2143). Both defconfigs use the standard hardcoded openipc org.
  2. Regenerated *.generic.config from hisilicon-hi3516cv6xx:arch/arm/configs/hi3516cv{608,610}_defconfig — the fork's saved configs were from a 4.9.37-era tree but the BSP is 5.10.221.
  3. Trimmed 70 commented-out $(INSTALL) lines from hisilicon-osdrv-hi3516cv6xx.mk (62 lines vs 132).
  4. Added the missing BR2_PACKAGE_HOST_UBOOT_TOOLS=y parent for the existing BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y in general/openipc.fragment (the FIT line was being silently dropped because its Kconfig parent wasn't enabled).

Companion repo

Kernel branch OpenIPC/linux:hisilicon-hi3516cv6xx (orphan ref, sha 533467722c14, kernel 5.10.221). str_firmware.bin (KoL suspend-to-RAM blob) ships at branch root, matching CONFIG_EXTRA_FIRMWARE="str_firmware.bin" in both *.generic.config files.

Family naming

SOC_FAMILY="hi3516cv6xx" covers both CV610 (lead) and CV608 (binned). Sharing the family identifier means:

  • One toolchain release asset: toolchain.hisilicon-hi3516cv6xx.tgz
  • One CI matrix entry: hi3516cv6xx_lite
  • One kernel branch: hisilicon-hi3516cv6xx
  • One board files dir: br-ext-chip-hisilicon/board/hi3516cv6xx/
  • One osdrv package: general/package/hisilicon-osdrv-hi3516cv6xx/

SOC_MODEL differs: hi3516cv610 (lead) vs hi3516cv608 (binned). Kernel configs differ only in CONFIG_ARCH_HI3516CV{08,10}=y.

Local verification (Arch + HOSTCC=gcc-13)

Built end-to-end from scratch:

  • ✓ Toolchain (musl 1.2.4 + GCC 13.3.0 + headers 5.10.221) — SDK tarball 184 MiB
  • ✓ Kernel 5.10.221 with str_firmware.bin resolved via drivers/base/firmware_loader/builtin/
  • ✓ DTB hi3516cv610-demb.dtb
  • ✓ Rootfs (squashfs/XZ, 7.2 MiB)
  • ✓ Post-image FIT generation (FIT 2.8 MiB + squashfs concatenated → firmware.bin 10 MiB)

Note: firmware.bin currently overshoots the 8 MiB NOR cap (BR2_OPENIPC_FLASH_SIZE="8"); follow-up will either rebalance to 16 MiB or trim rootfs. Out of scope for this scaffolding PR.

CI on Ubuntu 22 (GCC 11) will exercise the full toolchain matrix.

Test plan

  • CI green on feat/hi3516cv6xx-family (toolchain.yml matrix triggers hi3516cv6xx_lite; build.yml auto-discovers both hi3516cv6xx_lite_defconfig and hi3516cv608_lite_defconfig)
  • After CI uploads toolchain.hisilicon-hi3516cv6xx.tgz, retry full firmware build for both defconfigs
  • Flash + boot on physical hardware (cv610 board) — requires lab access
  • Verify regression: hi3516cv500_lite and hi3518ev300_lite continue to build (Makefile firmware.bin guard is wildcard-gated)

Co-Authored-By: Dmitry Ermakov ermakovdmitry8@gmail.com
🤖 Generated with Claude Code

@widgetii widgetii force-pushed the feat/hi3516cv6xx-family branch 2 times, most recently from 3086433 to 89b1e18 Compare June 3, 2026 16:29
Source: third-party fork dimerr/firmware:hi3516cv610. Companion kernel
branch hisilicon-hi3516cv6xx was pushed to OpenIPC/linux (orphan ref,
following the per-vendor BSP convention used by hisilicon-hi3516cv500
etc.).

Modern HiSilicon IP-camera platform: Cortex-A7, kernel 5.10.221, ot_*.ko
vendor module naming, FIT-image packaging. Hi3516CV608 and Hi3516CV610
share the same kernel binary (both ARCH_HI3516CV{08,10} enabled, runtime
chip detection), toolchain, osdrv, and board files — one CI target
(hi3516cv6xx_lite) covers the family.

Changes:
- br-ext-chip-hisilicon/board/hi3516cv6xx/: unified kernel config
  (regenerated from hisilicon-hi3516cv6xx:arch/arm/configs/hi3516cv610_defconfig
  with CONFIG_ARCH_HI3516CV608=y added, plus OpenIPC overlay-fs /
  namespaces / cgroups / KoL firmware tweaks), FIT image source,
  post-image.sh that concatenates the FIT and squashfs into a monolithic
  firmware.bin (NOR 8 MB cap).
- br-ext-chip-hisilicon/configs/hi3516cv6xx_lite_defconfig: ARM EABI,
  NEON+VFP4, GCC 13, musl, kernel 5.10.221.
- general/package/hisilicon-osdrv-hi3516cv6xx/: vendor osdrv with 33
  ot_*.ko kernel modules, 6 sensor blobs (gc4023, os04d10, sc431hai,
  sc4336p, sc450ai, sc500ai), load_hisilicon (with PR #2060 os_mem_size
  validation block) + set_allocator scripts.
- general/openipc.fragment: enable host uboot-tools (with FIT support)
  needed by post-image.sh mkimage step. Harmless for non-FIT boards.
- general/package/Config.in: register the new osdrv package.
- Makefile: extend repack: target to package firmware.bin when present
  (guarded by wildcard, no regression for boards without firmware.bin).
- .github/workflows/{toolchain,build}.yml: add hi3516cv6xx_lite to the
  matrices so the cross-toolchain release asset gets built once for the
  family.

Co-Authored-By: Dmitry Ermakov <ermakovdmitry8@gmail.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@widgetii widgetii force-pushed the feat/hi3516cv6xx-family branch from 89b1e18 to a23b5c3 Compare June 3, 2026 16:33
@widgetii widgetii merged commit 679c2c7 into master Jun 3, 2026
231 of 232 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant