From b8a3f02abcdd5c9c3cc7d8ad9c3d4f9eb8a8cb85 Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin <6576495+widgetii@users.noreply.github.com> Date: Tue, 14 Apr 2026 14:20:19 +0300 Subject: [PATCH 1/2] hisilicon-opensdk: wire up CV200 open_ modules into firmware MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump opensdk to 1e2e1b4 which fixes 5 issues preventing open_ modules from working on hi3516cv200/hi3518ev200 hardware (openhisilicon#45). Wire up the CV200 module install — rename open_*.ko to vendor names in hisilicon/ so load_hisilicon picks them up transparently: - Source modules: mmz, himedia, sys_config, mipi, sensor_i2c/spi, etc. - Blob modules: hi3518e_base, hi3518e_sys, hi3518e_viu, etc. - Name mappings: open_vi.ko → hi3518e_viu.ko, open_rgn.ko → hi3518e_region.ko, open_acodec.ko → acodec.ko Enable TDE for CV200 (RGN blob depends on TDE symbols). Tested on hi3518ev200 board (64MB RAM, JXF22 sensor): all 29 modules load on boot, majestic streams H264+MJPEG 1080p, survives reboot. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../hisilicon-opensdk/hisilicon-opensdk.mk | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/general/package/hisilicon-opensdk/hisilicon-opensdk.mk b/general/package/hisilicon-opensdk/hisilicon-opensdk.mk index 05da1037a8..836802b638 100644 --- a/general/package/hisilicon-opensdk/hisilicon-opensdk.mk +++ b/general/package/hisilicon-opensdk/hisilicon-opensdk.mk @@ -5,7 +5,7 @@ ################################################################################ HISILICON_OPENSDK_SITE = $(call github,openipc,openhisilicon,$(HISILICON_OPENSDK_VERSION)) -HISILICON_OPENSDK_VERSION = 2001d3b +HISILICON_OPENSDK_VERSION = 1e2e1b4 HISILICON_OPENSDK_LICENSE = GPL-3.0 HISILICON_OPENSDK_LICENSE_FILES = LICENSE @@ -21,9 +21,12 @@ HISILICON_OPENSDK_MODULE_MAKE_OPTS = \ DISABLE_PM=1 \ CHIPARCH=$(OPENIPC_SOC_FAMILY) -# CV500 has TDE/VO blobs; other platforms don't support them yet +# CV500 and CV200 have TDE blobs; other platforms don't support TDE yet ifneq ($(OPENIPC_SOC_FAMILY),hi3516cv500) -HISILICON_OPENSDK_MODULE_MAKE_OPTS += DISABLE_TDE=1 DISABLE_VO=1 +ifneq ($(OPENIPC_SOC_FAMILY),hi3516cv200) +HISILICON_OPENSDK_MODULE_MAKE_OPTS += DISABLE_TDE=1 +endif +HISILICON_OPENSDK_MODULE_MAKE_OPTS += DISABLE_VO=1 endif ifeq ($(OPENIPC_SOC_FAMILY),hi3516ev200) @@ -46,9 +49,38 @@ HISILICON_OPENSDK_SENSORS_hi3516cv500 = sony_imx335/libsns_imx335 sony_imx307/li HISILICON_OPENSDK_SENSORS = $(HISILICON_OPENSDK_SENSORS_$(OPENIPC_SOC_FAMILY)) +# For hi3516cv200: install opensdk .ko to hisilicon/ with vendor names, +# replacing the osdrv vendor modules. +ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv200) +HISILICON_OPENSDK_KMOD_DST = $(TARGET_DIR)/lib/modules/4.9.37/hisilicon +define HISILICON_OPENSDK_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -d $(HISILICON_OPENSDK_KMOD_DST) + $(INSTALL) -m 644 $(@D)/kernel/open_mmz.ko $(HISILICON_OPENSDK_KMOD_DST)/mmz.ko + $(INSTALL) -m 644 $(@D)/kernel/open_himedia.ko $(HISILICON_OPENSDK_KMOD_DST)/hi_media.ko + $(INSTALL) -m 644 $(@D)/kernel/open_sys_config.ko $(HISILICON_OPENSDK_KMOD_DST)/sys_config.ko + $(INSTALL) -m 644 $(@D)/kernel/open_mipi_rx.ko $(HISILICON_OPENSDK_KMOD_DST)/hi_mipi.ko + $(INSTALL) -m 644 $(@D)/kernel/open_pwm.ko $(HISILICON_OPENSDK_KMOD_DST)/pwm.ko + $(INSTALL) -m 644 $(@D)/kernel/open_piris.ko $(HISILICON_OPENSDK_KMOD_DST)/piris.ko + $(INSTALL) -m 644 $(@D)/kernel/open_sensor_i2c.ko $(HISILICON_OPENSDK_KMOD_DST)/sensor_i2c.ko + $(INSTALL) -m 644 $(@D)/kernel/open_sensor_spi.ko $(HISILICON_OPENSDK_KMOD_DST)/sensor_spi.ko + $(INSTALL) -m 644 $(@D)/kernel/open_hi_user.ko $(HISILICON_OPENSDK_KMOD_DST)/hiuser.ko + $(INSTALL) -m 644 $(@D)/kernel/open_ir.ko $(HISILICON_OPENSDK_KMOD_DST)/ir.ko + $(INSTALL) -m 644 $(@D)/kernel/open_rtc.ko $(HISILICON_OPENSDK_KMOD_DST)/hi_rtc.ko + $(INSTALL) -m 644 $(@D)/kernel/open_wdt.ko $(HISILICON_OPENSDK_KMOD_DST)/wdt.ko + for mod in base sys isp vpss venc h264e jpege rc chnl vgs ive \ + tde aio ai ao aenc adec; do \ + [ -f $(@D)/kernel/open_$${mod}.ko ] && \ + $(INSTALL) -m 644 $(@D)/kernel/open_$${mod}.ko \ + $(HISILICON_OPENSDK_KMOD_DST)/hi3518e_$${mod}.ko || true; \ + done + $(INSTALL) -m 644 $(@D)/kernel/open_vi.ko $(HISILICON_OPENSDK_KMOD_DST)/hi3518e_viu.ko + $(INSTALL) -m 644 $(@D)/kernel/open_rgn.ko $(HISILICON_OPENSDK_KMOD_DST)/hi3518e_region.ko + $(INSTALL) -m 644 $(@D)/kernel/open_acodec.ko $(HISILICON_OPENSDK_KMOD_DST)/acodec.ko +endef + # For hi3516cv500: install opensdk .ko directly to hisilicon/ with vendor names, # replacing the osdrv vendor modules. This avoids doubling disk usage. -ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv500) +else ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv500) HISILICON_OPENSDK_CHIP = hi3516cv500 HISILICON_OPENSDK_KMOD_DST = $(TARGET_DIR)/lib/modules/4.9.37/hisilicon define HISILICON_OPENSDK_INSTALL_TARGET_CMDS @@ -89,7 +121,7 @@ $(eval $(generic-package)) # Must be registered AFTER $(eval $(kernel-module)) so our cleanup runs # after the kernel-module hook that populates extra/. -ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv500) +ifneq ($(filter hi3516cv500 hi3516cv200,$(OPENIPC_SOC_FAMILY)),) define HISILICON_OPENSDK_CLEANUP_EXTRA rm -rf $(TARGET_DIR)/lib/modules/*/extra/open_*.ko endef From 20e5e7373645aa0133b6cfa1d33c0532f5ab7bd3 Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin <6576495+widgetii@users.noreply.github.com> Date: Tue, 14 Apr 2026 14:43:32 +0300 Subject: [PATCH 2/2] hisilicon-opensdk: enable for hi3516cv200/hi3518ev200 boards Add BR2_PACKAGE_HISILICON_OPENSDK=y to both CV200-family defconfigs so the opensdk modules are built and installed into firmware images. Without this, the firmware only contains vendor osdrv modules and the opensdk install block in hisilicon-opensdk.mk has no effect. Tested end-to-end: sysupgrade to firmware with opensdk modules, camera boots, all 32 modules load, H264+MJPEG streaming confirmed. Co-Authored-By: Claude Opus 4.6 (1M context) --- br-ext-chip-hisilicon/configs/hi3516cv200_lite_defconfig | 1 + br-ext-chip-hisilicon/configs/hi3518ev200_lite_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/br-ext-chip-hisilicon/configs/hi3516cv200_lite_defconfig b/br-ext-chip-hisilicon/configs/hi3516cv200_lite_defconfig index d738c05c93..dcbf782da0 100644 --- a/br-ext-chip-hisilicon/configs/hi3516cv200_lite_defconfig +++ b/br-ext-chip-hisilicon/configs/hi3516cv200_lite_defconfig @@ -44,6 +44,7 @@ BR2_OPENIPC_FLASH_SIZE="8" # Packages BR2_PACKAGE_DROPBEAR_OPENIPC=y +BR2_PACKAGE_HISILICON_OPENSDK=y BR2_PACKAGE_HISILICON_OSDRV_HI3516CV200=y BR2_PACKAGE_IPCTOOL=y BR2_PACKAGE_JSONFILTER=y diff --git a/br-ext-chip-hisilicon/configs/hi3518ev200_lite_defconfig b/br-ext-chip-hisilicon/configs/hi3518ev200_lite_defconfig index 6c24fc426d..7d05b11f98 100644 --- a/br-ext-chip-hisilicon/configs/hi3518ev200_lite_defconfig +++ b/br-ext-chip-hisilicon/configs/hi3518ev200_lite_defconfig @@ -44,6 +44,7 @@ BR2_OPENIPC_FLASH_SIZE="8" # Packages BR2_PACKAGE_DROPBEAR_OPENIPC=y +BR2_PACKAGE_HISILICON_OPENSDK=y BR2_PACKAGE_HISILICON_OSDRV_HI3516CV200=y BR2_PACKAGE_IPCTOOL=y BR2_PACKAGE_JSONFILTER=y