diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7d277d16d..32f7880d2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -121,7 +121,7 @@ jobs: - hi3516dv300_lite # Hisilicon [HI3516CV6XX] - - hi3516cv6xx_lite + - hi3516cv6xx_ultimate # Hisilicon [HI3516EV200] - hi3516dv200_lite diff --git a/.github/workflows/toolchain.yml b/.github/workflows/toolchain.yml index 21e360444..b4a63372e 100644 --- a/.github/workflows/toolchain.yml +++ b/.github/workflows/toolchain.yml @@ -26,7 +26,7 @@ jobs: - hi3516cv200_lite - hi3516cv300_lite - hi3516cv500_lite - - hi3516cv6xx_lite + - hi3516cv6xx_ultimate - hi3516ev200_lite - hi3519v101_lite - hi3520dv200_lite diff --git a/Makefile b/Makefile index a8449ed8e..2a83770c7 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,9 @@ endif @$(call BUNDLE_SDK) repack: -ifneq ($(wildcard $(TARGET)/images/firmware.bin),) +ifeq ($(BR2_OPENIPC_SOC_FAMILY),"hi3516cv6xx") + @$(call PREPARE_REPACK,firmware.bin,$(shell expr $(subst ",,$(BR2_OPENIPC_FLASH_SIZE)) \* 1024),,,nor) +else ifneq ($(wildcard $(TARGET)/images/firmware.bin),) @$(call PREPARE_REPACK,firmware.bin,8192,,,nor) else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS),y) diff --git a/br-ext-chip-hisilicon/configs/hi3516cv6xx_lite_defconfig b/br-ext-chip-hisilicon/configs/hi3516cv6xx_ultimate_defconfig similarity index 61% rename from br-ext-chip-hisilicon/configs/hi3516cv6xx_lite_defconfig rename to br-ext-chip-hisilicon/configs/hi3516cv6xx_ultimate_defconfig index 00f59f5c1..f74f33918 100644 --- a/br-ext-chip-hisilicon/configs/hi3516cv6xx_lite_defconfig +++ b/br-ext-chip-hisilicon/configs/hi3516cv6xx_ultimate_defconfig @@ -2,8 +2,11 @@ BR2_OPENIPC_SOC_VENDOR="hisilicon" BR2_OPENIPC_SOC_MODEL="hi3516cv6xx" BR2_OPENIPC_SOC_FAMILY="hi3516cv6xx" -BR2_OPENIPC_VARIANT="lite" -BR2_OPENIPC_FLASH_SIZE="8" +BR2_OPENIPC_VARIANT="ultimate" +BR2_OPENIPC_FLASH_SIZE="16" +# OPENIPC_MAJESTIC defaults to "lite" — only the "lite" flavor of the +# cv6xx majestic binary has been published to OpenIPC S3 so far. Bump +# to "ultimate" once an ultimate-flavored cv6xx binary is uploaded. # Architecture BR2_arm=y @@ -38,34 +41,52 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="hi3516cv610-demb" # Filesystem BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config" +BR2_PACKAGE_EXFATPROGS=y BR2_PACKAGE_UBOOT_TOOLS=y -BR2_PACKAGE_ZLIB=y # BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_MOSQUITTO=y +# BR2_PACKAGE_MOSQUITTO_BROKER is not set BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y BR2_PACKAGE_WIREGUARD_TOOLS=y +# Wireless stack omitted — openipc/linux hi3516cv6xx kernel has +# CONFIG_WIRELESS off, so cfg80211/mac80211-dependent USB WiFi drivers +# (mt7601u, rtl8188fu) and wpa_supplicant/wireless-tools have nothing +# to bind to. Re-enable once the kernel config gains the wireless stack. BR2_TARGET_ROOTFS_CPIO=y BR2_TARGET_ROOTFS_SQUASHFS=y BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y # Packages +BR2_PACKAGE_AWS_WEBRTC=y +BR2_PACKAGE_DIVINUS=y BR2_PACKAGE_DROPBEAR_OPENIPC=y -# BR2_PACKAGE_HISILICON_OPENSDK is not set +BR2_PACKAGE_EXFAT_OPENIPC=y +BR2_PACKAGE_HISILICON_OPENSDK=y BR2_PACKAGE_HISILICON_OSDRV_HI3516CV6XX=y BR2_PACKAGE_IPCTOOL=y BR2_PACKAGE_JSONFILTER=y -BR2_PACKAGE_LIBCURL_OPENIPC=y +BR2_PACKAGE_LAME_OPENIPC=y BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y # BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set # BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set # BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set BR2_PACKAGE_LIBEVENT_OPENIPC=y BR2_PACKAGE_LIBOGG_OPENIPC=y -# BR2_PACKAGE_MAJESTIC_FONTS=y -# BR2_PACKAGE_MAJESTIC_WEBUI=y -# BR2_PACKAGE_MAJESTIC=y -BR2_PACKAGE_MBEDTLS_OPENIPC=y -# BR2_PACKAGE_MOTORS=y +BR2_PACKAGE_LIBWEBSOCKETS_OPENIPC=y +BR2_PACKAGE_MAJESTIC=y +BR2_PACKAGE_MAJESTIC_FONTS=y +BR2_PACKAGE_MAJESTIC_WEBUI=y +BR2_PACKAGE_MOTORS=y BR2_PACKAGE_OPUS_OPENIPC=y BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y -# BR2_PACKAGE_VTUND_OPENIPC is not set +# protobuf-c is dynamically loaded by the cv6xx-flavored majestic binary +# (libprotobuf-c.so.1 appears in DT_NEEDED but no other ultimate config +# selects it — the vendor majestic build was linked against a private +# protobuf-c version). +BR2_PACKAGE_PROTOBUF_C=y +BR2_PACKAGE_QUIRC_OPENIPC=y +BR2_PACKAGE_UACME_OPENIPC=y +BR2_PACKAGE_VTUND_OPENIPC=y BR2_PACKAGE_YAML_CLI=y +BR2_PACKAGE_ZEROTIER_ONE=y diff --git a/general/package/all-patches/wireguard-tools/0001-netlink-fallback-define-NLM_F_DUMP_INTR.patch b/general/package/all-patches/wireguard-tools/0001-netlink-fallback-define-NLM_F_DUMP_INTR.patch new file mode 100644 index 000000000..0f410dac7 --- /dev/null +++ b/general/package/all-patches/wireguard-tools/0001-netlink-fallback-define-NLM_F_DUMP_INTR.patch @@ -0,0 +1,25 @@ +Provide a fallback NLM_F_DUMP_INTR define for toolchains whose +linux/netlink.h kernel UAPI headers predate kernel 3.16 (which is when +the flag was added in commit 1d4c8c29c7df). The cv6xx (V5) musl +toolchain shipped under openipc/firmware releases is built against a +pre-3.16 UAPI snapshot, so wireguard-tools 1.0.20210914 fails to compile +against it with "NLM_F_DUMP_INTR undeclared". The kernel-side value is +0x10 and has been stable since its introduction; defining it locally +when the system header omits it is safe across all targets. + +Signed-off-by: OpenIPC + +diff -urN a/src/netlink.h b/src/netlink.h +--- a/src/netlink.h ++++ b/src/netlink.h +@@ -21,6 +21,10 @@ + #include + #include + ++#ifndef NLM_F_DUMP_INTR ++#define NLM_F_DUMP_INTR 0x10 ++#endif ++ + #define MNL_SOCKET_AUTOPID 0 + #define MNL_ALIGNTO 4 + #define MNL_ALIGN(len) (((len)+MNL_ALIGNTO-1) & ~(MNL_ALIGNTO-1)) diff --git a/general/package/hisilicon-opensdk/hisilicon-opensdk.mk b/general/package/hisilicon-opensdk/hisilicon-opensdk.mk index ef25e4827..0f4d0742a 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 = 31a5e9f0 +HISILICON_OPENSDK_VERSION = b1c4dae5 HISILICON_OPENSDK_LICENSE = GPL-3.0 HISILICON_OPENSDK_LICENSE_FILES = LICENSE @@ -32,6 +32,9 @@ endif ifeq ($(BR2_PACKAGE_HISILICON_OSDRV_HI3520DV200),y) HISILICON_OPENSDK_DEPENDENCIES += hisilicon-osdrv-hi3520dv200 endif +ifeq ($(BR2_PACKAGE_HISILICON_OSDRV_HI3516CV6XX),y) +HISILICON_OPENSDK_DEPENDENCIES += hisilicon-osdrv-hi3516cv6xx +endif HISILICON_OPENSDK_MODULE_SUBDIRS = kernel HISILICON_OPENSDK_MODULE_MAKE_OPTS = \ @@ -51,12 +54,25 @@ endif HISILICON_OPENSDK_MODULE_MAKE_OPTS += DISABLE_VO=1 endif +# V5 (hi3516cv6xx) is encode-only — no VO, no HDMI, no TDE, no NNIE, no +# VDEC, no VEDU, no JPEGD, no GDC, no DIS, no MIPI_TX, no HIFB. These +# blobs simply don't exist in the CV610 SDK. The per-SoC .kbuild already +# omits the obj-m lines, but the shared Kbuild fallback path +# (kernel/Kbuild's `else` branch) gates on DISABLE_* macros — match those +# guards so any shared per-block Kbuild fragments that get pulled in via +# include() stay disabled. +ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv6xx) +HISILICON_OPENSDK_MODULE_MAKE_OPTS += DISABLE_VO=1 DISABLE_TDE=1 +endif + ifeq ($(OPENIPC_SOC_FAMILY),hi3516ev200) HISILICON_OPENSDK_SDK_CODE = 0x3516E200 else ifeq ($(OPENIPC_SOC_FAMILY),gk7205v200) HISILICON_OPENSDK_SDK_CODE = 0x7205200 else ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv500) HISILICON_OPENSDK_SDK_CODE = 0x3516C500 +else ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv6xx) + HISILICON_OPENSDK_SDK_CODE = 0x3516C610 endif # for userspace libraries @@ -74,6 +90,13 @@ define HISILICON_OPENSDK_BUILD_CMDS endef endif +# hi3516cv6xx (V5) builds the 6 sensor drivers from source. The MPP +# userspace libraries (libss_mpi_*.so, libvqe_*.so, libsvp_*.so etc.) +# don't have a source mirror yet and continue to ship prebuilt from +# hisilicon-osdrv-hi3516cv6xx. The default BUILD_CMDS runs +# `make -C libraries all` which the libraries/Makefile filters down +# to ./sensor/hi3516cv6xx/% for this CHIPARCH. + # Sensor install list per SoC family HISILICON_OPENSDK_SENSORS_hi3516ev200 = \ aptina_ar0237/libsns_ar0237 \ @@ -199,6 +222,13 @@ HISILICON_OPENSDK_SENSORS_hi3516cv200 = \ soi_jxf23/libsns_jxf23 \ soi_jxh42/libsns_jxh42 \ sony_imx222/libsns_imx222 +HISILICON_OPENSDK_SENSORS_hi3516cv6xx = \ + galaxycore_gc4023/libsns_gc4023 \ + omnivision_os04d10/libsns_os04d10 \ + smart_sc431hai/libsns_sc431hai \ + smart_sc4336p/libsns_sc4336p \ + smart_sc450ai/libsns_sc450ai \ + smart_sc500ai/libsns_sc500ai HISILICON_OPENSDK_SENSORS = $(HISILICON_OPENSDK_SENSORS_$(OPENIPC_SOC_FAMILY)) @@ -470,6 +500,24 @@ define HISILICON_OPENSDK_INSTALL_TARGET_CMDS done endef +# For hi3516cv6xx: V5 — install opensdk .ko directly to hisilicon/ keeping +# the open_* names. load_hisilicon (rewritten) drives `modprobe open_*`. +# Sensor .so files built from source under libraries/sensor/hi3516cv6xx/ +# get installed to /usr/lib/sensors/, overwriting any prebuilt vendor +# copies that hisilicon-osdrv-hi3516cv6xx may also have installed. +else ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv6xx) +HISILICON_OPENSDK_KMOD_DST = $(HISILICON_OPENSDK_KMOD_BASE) +define HISILICON_OPENSDK_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -d $(HISILICON_OPENSDK_KMOD_DST) + for ko in $(@D)/kernel/open_*.ko; do \ + [ -f $${ko} ] && $(INSTALL) -m 644 -t $(HISILICON_OPENSDK_KMOD_DST) $${ko} || true; \ + done + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors + $(foreach s,$(HISILICON_OPENSDK_SENSORS), \ + $(INSTALL) -D -m 0644 $(@D)/libraries/sensor/$(OPENIPC_SOC_FAMILY)/$(s).so $(TARGET_DIR)/usr/lib/sensors ; \ + ) +endef + else ifeq ($(OPENIPC_SOC_FAMILY),hi3520dv200) # hi3520dv200: V2-era 4-channel analog DVR SoC. Kernel 3.0.8. No # sensor blobs (NVP6114 analog video decoder kernel module is built @@ -519,7 +567,7 @@ $(eval $(kernel-module)) # TARGET_FINALIZE_HOOKS (linux package is processed before this one), so # it has already executed by the time we get here — we need a second pass # so modules.dep reflects the post-cleanup state. -ifneq ($(filter hi3516cv500 hi3516cv200 hi3516cv100 hi3516av100 hi3519v101 hi3516cv300 hi3520dv200,$(OPENIPC_SOC_FAMILY)),) +ifneq ($(filter hi3516cv500 hi3516cv200 hi3516cv100 hi3516av100 hi3519v101 hi3516cv300 hi3520dv200 hi3516cv6xx,$(OPENIPC_SOC_FAMILY)),) define HISILICON_OPENSDK_FINALIZE_MODULES $(if $(BR2_PER_PACKAGE_DIRECTORIES),rsync -a $(PER_PACKAGE_DIR)/hisilicon-opensdk/target/lib/modules/ $(TARGET_DIR)/lib/modules/) rm -rf $(TARGET_DIR)/lib/modules/*/extra/open_*.ko diff --git a/general/package/hisilicon-osdrv-hi3516cv6xx/files/script/load_hisilicon b/general/package/hisilicon-osdrv-hi3516cv6xx/files/script/load_hisilicon index 8f934ff93..bee805315 100755 --- a/general/package/hisilicon-osdrv-hi3516cv6xx/files/script/load_hisilicon +++ b/general/package/hisilicon-osdrv-hi3516cv6xx/files/script/load_hisilicon @@ -34,7 +34,9 @@ report_error() { exit 1 } -set_allocator(){} +set_allocator() { + fw_setenv mmz_allocator "$1" >/dev/null 2>&1 +} check_allocator() { allocator=$(grep mmz_allocator /proc/cmdline) @@ -48,126 +50,154 @@ check_allocator() { } insert_osal() { - # check_allocator - modprobe ot_osal proc_show=${DEBUG} + check_allocator + modprobe open_osal proc_show=${DEBUG} MMZ=$(awk -F '=' '$1=="mmz"{print $2}' RS=" " /proc/cmdline) if [ -z "$MMZ" ]; then - modprobe ot_mmz anony=1 mmz_allocator=ot mmz=anonymous,0,$mmz_start,$mmz_size mem_process_isolation=$((1 - DEBUG)) || report_error + modprobe open_mmz anony=1 mmz_allocator=ot mmz=anonymous,0,$mmz_start,$mmz_size mem_process_isolation=$((1 - DEBUG)) || report_error else - modprobe ot_mmz anony=1 mmz_allocator=cma mmz=$MMZ mem_process_isolation=$((1 - DEBUG)) || report_error + modprobe open_mmz anony=1 mmz_allocator=cma mmz=$MMZ mem_process_isolation=$((1 - DEBUG)) || report_error fi } function insert_audio() { - modprobe ot_aio - modprobe ot_ai - modprobe ot_ao - modprobe ot_aenc - modprobe ot_adec - modprobe ot_acodec + modprobe open_aio + modprobe open_ai + modprobe open_ao + modprobe open_aenc + modprobe open_adec + modprobe open_acodec } function remove_audio() { - rmmod ot_acodec - rmmod ot_adec - rmmod ot_aenc - rmmod ot_ao - rmmod ot_ai - rmmod ot_aio + rmmod open_acodec + rmmod open_adec + rmmod open_aenc + rmmod open_ao + rmmod open_ai + rmmod open_aio } function insert_security_subsys() { - modprobe ot_cipher - modprobe ot_km + # open_cipher and open_km are V5 closed-source security blobs not yet + # in the openhisilicon set — modprobe will return non-zero if missing. + # Run best-effort so the rest of the MPP pipeline still comes up. + modprobe open_cipher 2>/dev/null + modprobe open_km 2>/dev/null } function remove_security_subsys() { - rmmod ot_km - rmmod ot_cipher + rmmod open_km 2>/dev/null + rmmod open_cipher 2>/dev/null +} + +function insert_detect() +{ + # Minimal module set sufficient for `ipcinfo --short-sensor` probe. + # Mirrors ev200's insert_detect() — avoids paying the full MPP + # bring-up cost during sensor auto-detect (~3 sec vs ~15 sec). + modprobe open_sys_config sensors=sns0=$SNS_TYPE0,sns1=$SNS_TYPE1 board=$BOARD ir_auto=$IR_AUTO + insert_osal + modprobe open_base logmpp_show=${DEBUG} + modprobe open_isp + modprobe open_sensor_i2c + modprobe open_sensor_spi 2>/dev/null +} + +function remove_detect() +{ + rmmod open_sensor_spi 2>/dev/null + rmmod open_sensor_i2c 2>/dev/null + rmmod open_isp + rmmod open_base + rmmod open_mmz + rmmod open_osal + rmmod open_sys_config } insert_ko() { # sys config - modprobe sys_config sensors=sns0=$SNS_TYPE0,sns1=$SNS_TYPE1 board=$BOARD ir_auto=$IR_AUTO + modprobe open_sys_config sensors=sns0=$SNS_TYPE0,sns1=$SNS_TYPE1 board=$BOARD ir_auto=$IR_AUTO # driver load insert_osal - modprobe ot_base logmpp_show=${DEBUG} - modprobe ot_vb - modprobe ot_vca - modprobe ot_sys profile=$SYS_PROFILE - modprobe ot_rgn - modprobe ot_vpp - modprobe ot_vgs - modprobe ot_vpss - modprobe ot_vi - modprobe ot_isp - modprobe ot_chnl - modprobe ot_rc - modprobe ot_venc g_venc_max_chn_num=8 - modprobe ot_h264e - modprobe ot_h265e - - case ${socmodel} in 20g|00s|00g) modprobe ot_svac3e ;; esac - # modprobe ot_svac3e - modprobe ot_jpege - modprobe ot_svp_npu - modprobe ot_ive save_power=1 - # modprobe ot_pwm - # modprobe ot_piris - modprobe ot_sensor_i2c - # modprobe extdrv/ot_sensor_spi + modprobe open_base logmpp_show=${DEBUG} + modprobe open_vb + modprobe open_vca + modprobe open_sys profile=$SYS_PROFILE + modprobe open_rgn + modprobe open_vpp + modprobe open_vgs + modprobe open_vpss + modprobe open_vi + modprobe open_isp + modprobe open_chnl + modprobe open_rc + modprobe open_venc g_venc_max_chn_num=8 + modprobe open_h264e + modprobe open_h265e + + case ${socmodel} in 20g|00s|00g) modprobe open_svac3e ;; esac + # modprobe open_svac3e + modprobe open_jpege + modprobe open_svp_npu + modprobe open_ive save_power=1 + modprobe open_pwm + modprobe open_piris + modprobe open_sensor_i2c + modprobe open_sensor_spi 2>/dev/null insert_audio - modprobe ot_mipi_rx - # modprobe ot_user - case ${socmodel} in 20s|20g|00s|00g) modprobe ot_aiisp ;; esac - # modprobe ot_aiisp - # modprobe ot_uvc - modprobe ot_pm + modprobe open_mipi_rx + # modprobe open_user + case ${socmodel} in 20s|20g|00s|00g) modprobe open_aiisp ;; esac + # modprobe open_uvc + modprobe open_pm + modprobe open_wdt insert_security_subsys } remove_ko() { remove_security_subsys - rmmod ot_pm - # rmmod ot_uvc - rmmod ot_aiisp &> /dev/null - # rmmod ot_user - rmmod ot_mipi_rx + rmmod open_wdt 2>/dev/null + rmmod open_pm + # rmmod open_uvc + rmmod open_aiisp &> /dev/null + # rmmod open_user + rmmod open_mipi_rx remove_audio - #rmmod ot_sensor_spi &> /dev/null - rmmod ot_sensor_i2c &> /dev/null - # rmmod ot_piris - # rmmod ot_pwm - rmmod ot_ive - rmmod ot_svp_npu - rmmod ot_jpege - rmmod ot_h265e - rmmod ot_svac3e &> /dev/null - rmmod ot_h264e - rmmod ot_venc - rmmod ot_rc - rmmod ot_chnl - rmmod ot_vpss - rmmod ot_isp - rmmod ot_vi - rmmod ot_vgs - rmmod ot_vpp - rmmod ot_rgn - rmmod ot_sys - rmmod ot_vca - rmmod ot_vb - rmmod ot_base - rmmod ot_mmz - rmmod ot_osal - - rmmod sys_config + rmmod open_sensor_spi &> /dev/null + rmmod open_sensor_i2c &> /dev/null + rmmod open_piris 2>/dev/null + rmmod open_pwm 2>/dev/null + rmmod open_ive + rmmod open_svp_npu + rmmod open_jpege + rmmod open_h265e + rmmod open_svac3e &> /dev/null + rmmod open_h264e + rmmod open_venc + rmmod open_rc + rmmod open_chnl + rmmod open_vpss + rmmod open_isp + rmmod open_vi + rmmod open_vgs + rmmod open_vpp + rmmod open_rgn + rmmod open_sys + rmmod open_vca + rmmod open_vb + rmmod open_base + rmmod open_mmz + rmmod open_osal + + rmmod open_sys_config } load_usage() @@ -221,6 +251,9 @@ function parse_arg() if [ $b_arg_sensor0 -eq 1 ] ; then b_arg_sensor0=0; SNS_TYPE0=$arg; + # Mirror ev200: explicit sensor flag also seeds SENSOR + # so the auto-detect probe path is skipped. + export SENSOR=$arg fi if [ $b_arg_sensor1 -eq 1 ] ; then b_arg_sensor1=0; @@ -324,10 +357,10 @@ else export SENSOR=${SENSOR_ENV} logger -s -p daemon.info -t hisilicon "Get data from environment and set SENSOR as ${SENSOR}" else - insert_ko + insert_detect SENSOR_DETECT=$(ipcinfo --short-sensor) export SENSOR=${SENSOR_DETECT:=unknown} - remove_ko + remove_detect logger -s -p daemon.info -t hisilicon "Get data from ipcinfo and set SENSOR as ${SENSOR}" fw_setenv sensor $SENSOR && logger -s -p daemon.info -t hisilicon "Write detected ${SENSOR} to U-Boot ENV" fi diff --git a/general/package/hisilicon-osdrv-hi3516cv6xx/hisilicon-osdrv-hi3516cv6xx.mk b/general/package/hisilicon-osdrv-hi3516cv6xx/hisilicon-osdrv-hi3516cv6xx.mk index ab8bec9da..3c8a2bd2b 100644 --- a/general/package/hisilicon-osdrv-hi3516cv6xx/hisilicon-osdrv-hi3516cv6xx.mk +++ b/general/package/hisilicon-osdrv-hi3516cv6xx/hisilicon-osdrv-hi3516cv6xx.mk @@ -2,6 +2,24 @@ # # hisilicon-osdrv-hi3516cv6xx # +# Load script + vendor userspace MPP libraries for the Hi3516CV6xx (V5) +# family. Kernel modules and sensor drivers are no longer shipped here: +# * kernel modules now built against the running openipc/linux tree by +# hisilicon-opensdk (see ../hisilicon-opensdk/hisilicon-opensdk.mk). +# Shipping prebuilt vendor .ko caused init-time hangs because struct +# module / vermagic / config layouts didn't match openipc's kernel. +# * sensor drivers now built from vendor SDK source by hisilicon-opensdk +# via libraries/sensor/hi3516cv6xx/ and HISILICON_OPENSDK_SENSORS_hi3516cv6xx. +# +# Vendor MPP userspace .so blobs ship from files/lib/ — no openhisilicon +# V5 source mirror exists. The install list below is the transitive +# NEEDED closure of the majestic binary against the vendor lib set +# (computed via readelf -d), with libopus.so excluded because +# BR2_PACKAGE_OPUS_OPENIPC builds a source equivalent. The 13 libs not +# in the closure (libss_mpi_aibnr/bla/cipher/devstat/km/otp/smartae/ +# syskol/uvc, libss_bcd, libmbedtls_harden_adapt, libsvp_aicpu, +# libvqe_common) save ~660 KB and are intentionally omitted. +# ################################################################################ HISILICON_OSDRV_HI3516CV6XX_VERSION = @@ -9,53 +27,33 @@ HISILICON_OSDRV_HI3516CV6XX_SITE = HISILICON_OSDRV_HI3516CV6XX_LICENSE = MIT HISILICON_OSDRV_HI3516CV6XX_LICENSE_FILES = LICENSE -define HISILICON_OSDRV_HI3516CV6XX_INSTALL_TARGET_CMDS - - $(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/5.10.221/hisilicon - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/extdrv/ot_sensor_i2c.ko +# Vendor MPP userspace .so files needed by majestic (transitive NEEDED +# closure). Excludes libopus.so (provided by BR2_PACKAGE_OPUS_OPENIPC). +HISILICON_OSDRV_HI3516CV6XX_MPP_LIBS = \ + libaac_comm.so libaac_dec.so libaac_enc.so \ + libaac_sbr_dec.so libaac_sbr_enc.so \ + libacs.so libaiisp.so libbnr.so libcalcflicker.so \ + libdehaze.so libdnvqe.so libdrc.so \ + libextend_stats.so libir_auto.so libldci.so \ + libmp3_dec.so libmp3_enc.so libmp3_lame.so \ + libot_mpi_isp.so libot_osal.so libsecurec.so \ + libss_ivs_md.so \ + libss_mpi.so libss_mpi_ae.so libss_mpi_audio.so libss_mpi_audio_adp.so \ + libss_mpi_awb.so libss_mpi_isp.so libss_mpi_ive.so \ + libss_mpi_sysbind.so libss_mpi_sysmem.so \ + libsvp_acl.so libupvqe.so libvoice_engine.so \ + libvqe_aec.so libvqe_agc.so libvqe_anr.so libvqe_eq.so \ + libvqe_hpf.so libvqe_hs.so libvqe_record.so libvqe_res.so libvqe_talkv2.so - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_acodec.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_adec.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_aenc.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_ai.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_aio.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_ao.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_base.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_chnl.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_cipher.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_h264e.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_h265e.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_isp.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_ive.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_jpege.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_km.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_mipi_rx.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_mmz.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_osal.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_pm.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_rc.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_rgn.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_spi_dma_transfer.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_svp_npu.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_sys.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_vb.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_vca.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_venc.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_vgs.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_vi.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_vpp.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_vpss.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/ot_wdt.ko - $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/5.10.221/hisilicon $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/kmod/sys_config.ko +define HISILICON_OSDRV_HI3516CV6XX_INSTALL_TARGET_CMDS $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/script/load* - $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors - $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/sensor/*.so - $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib - + $(foreach lib,$(HISILICON_OSDRV_HI3516CV6XX_MPP_LIBS), \ + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib $(HISILICON_OSDRV_HI3516CV6XX_PKGDIR)/files/lib/$(lib) ; \ + ) endef