Skip to content

Commit 3e98d91

Browse files
authored
hisilicon/dv500: build kernel modules + sensors from source (opensdk) (#2205)
1 parent 16098a5 commit 3e98d91

2 files changed

Lines changed: 35 additions & 4 deletions

File tree

br-ext-chip-hisilicon/configs/hi3519dv500_ultimate_defconfig

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,10 @@ BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
6363
BR2_PACKAGE_AWS_WEBRTC=y
6464
BR2_PACKAGE_DROPBEAR_OPENIPC=y
6565
BR2_PACKAGE_EXFAT_OPENIPC=y
66-
# majestic, divinus and hisilicon-opensdk have no aarch64 DV500 build yet and
67-
# are left off; the MPP userspace .so ship via hisilicon-osdrv-hi3519dv500.
66+
# majestic and divinus have no aarch64 DV500 build yet and are left off.
67+
# hisilicon-opensdk builds the open_*.ko kernel modules + sensor .so from
68+
# source; hisilicon-osdrv-hi3519dv500 ships the closed MPP userspace .so.
69+
BR2_PACKAGE_HISILICON_OPENSDK=y
6870
BR2_PACKAGE_HISILICON_OSDRV_HI3519DV500=y
6971
BR2_PACKAGE_IPCTOOL=y
7072
BR2_PACKAGE_JSONFILTER=y

general/package/hisilicon-opensdk/hisilicon-opensdk.mk

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
################################################################################
66

77
HISILICON_OPENSDK_SITE = $(call github,openipc,openhisilicon,$(HISILICON_OPENSDK_VERSION))
8-
HISILICON_OPENSDK_VERSION = b1c4dae5
8+
HISILICON_OPENSDK_VERSION = 666a0958
99

1010
HISILICON_OPENSDK_LICENSE = GPL-3.0
1111
HISILICON_OPENSDK_LICENSE_FILES = LICENSE
@@ -35,6 +35,9 @@ endif
3535
ifeq ($(BR2_PACKAGE_HISILICON_OSDRV_HI3516CV6XX),y)
3636
HISILICON_OPENSDK_DEPENDENCIES += hisilicon-osdrv-hi3516cv6xx
3737
endif
38+
ifeq ($(BR2_PACKAGE_HISILICON_OSDRV_HI3519DV500),y)
39+
HISILICON_OPENSDK_DEPENDENCIES += hisilicon-osdrv-hi3519dv500
40+
endif
3841

3942
HISILICON_OPENSDK_MODULE_SUBDIRS = kernel
4043
HISILICON_OPENSDK_MODULE_MAKE_OPTS = \
@@ -73,6 +76,8 @@ else ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv500)
7376
HISILICON_OPENSDK_SDK_CODE = 0x3516C500
7477
else ifeq ($(OPENIPC_SOC_FAMILY),hi3516cv6xx)
7578
HISILICON_OPENSDK_SDK_CODE = 0x3516C610
79+
else ifeq ($(OPENIPC_SOC_FAMILY),hi3519dv500)
80+
HISILICON_OPENSDK_SDK_CODE = 0x3519D500
7681
endif
7782

7883
# for userspace libraries
@@ -229,6 +234,15 @@ HISILICON_OPENSDK_SENSORS_hi3516cv6xx = \
229234
smart_sc4336p/libsns_sc4336p \
230235
smart_sc450ai/libsns_sc450ai \
231236
smart_sc500ai/libsns_sc500ai
237+
HISILICON_OPENSDK_SENSORS_hi3519dv500 = \
238+
gst_412c/libsns_gst412c \
239+
omnivision_os04a10/libsns_os04a10 \
240+
omnivision_os04a10_slave/libsns_os04a10_slave \
241+
omnivision_os08a20/libsns_os08a20 \
242+
smart_sc450ai/libsns_sc450ai \
243+
smart_sc850sl/libsns_sc850sl \
244+
sony_imx347_slave/libsns_imx347_slave \
245+
sony_imx515/libsns_imx515
232246

233247
HISILICON_OPENSDK_SENSORS = $(HISILICON_OPENSDK_SENSORS_$(OPENIPC_SOC_FAMILY))
234248

@@ -518,6 +532,21 @@ define HISILICON_OPENSDK_INSTALL_TARGET_CMDS
518532
)
519533
endef
520534

535+
# hi3519dv500: V5 aarch64 — same as cv6xx, install open_*.ko verbatim
536+
# (load_hisilicon drives `modprobe open_*`) + the source-built sensor .so.
537+
else ifeq ($(OPENIPC_SOC_FAMILY),hi3519dv500)
538+
HISILICON_OPENSDK_KMOD_DST = $(HISILICON_OPENSDK_KMOD_BASE)
539+
define HISILICON_OPENSDK_INSTALL_TARGET_CMDS
540+
$(INSTALL) -m 755 -d $(HISILICON_OPENSDK_KMOD_DST)
541+
for ko in $(@D)/kernel/open_*.ko; do \
542+
[ -f $${ko} ] && $(INSTALL) -m 644 -t $(HISILICON_OPENSDK_KMOD_DST) $${ko} || true; \
543+
done
544+
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors
545+
$(foreach s,$(HISILICON_OPENSDK_SENSORS), \
546+
$(INSTALL) -D -m 0644 $(@D)/libraries/sensor/$(OPENIPC_SOC_FAMILY)/$(s).so $(TARGET_DIR)/usr/lib/sensors ; \
547+
)
548+
endef
549+
521550
else ifeq ($(OPENIPC_SOC_FAMILY),hi3520dv200)
522551
# hi3520dv200: V2-era 4-channel analog DVR SoC. Kernel 3.0.8. No
523552
# sensor blobs (NVP6114 analog video decoder kernel module is built
@@ -567,7 +596,7 @@ $(eval $(kernel-module))
567596
# TARGET_FINALIZE_HOOKS (linux package is processed before this one), so
568597
# it has already executed by the time we get here — we need a second pass
569598
# so modules.dep reflects the post-cleanup state.
570-
ifneq ($(filter hi3516cv500 hi3516cv200 hi3516cv100 hi3516av100 hi3519v101 hi3516cv300 hi3520dv200 hi3516cv6xx,$(OPENIPC_SOC_FAMILY)),)
599+
ifneq ($(filter hi3516cv500 hi3516cv200 hi3516cv100 hi3516av100 hi3519v101 hi3516cv300 hi3520dv200 hi3516cv6xx hi3519dv500,$(OPENIPC_SOC_FAMILY)),)
571600
define HISILICON_OPENSDK_FINALIZE_MODULES
572601
$(if $(BR2_PER_PACKAGE_DIRECTORIES),rsync -a $(PER_PACKAGE_DIR)/hisilicon-opensdk/target/lib/modules/ $(TARGET_DIR)/lib/modules/)
573602
rm -rf $(TARGET_DIR)/lib/modules/*/extra/open_*.ko

0 commit comments

Comments
 (0)