[Buildroot] [PATCH 08/12] package/freescale-imx/isp-imx: add package
Chris Dimich
chris.dimich at boundarydevices.com
Wed Oct 6 20:41:31 UTC 2021
i.MX Verisilicon Software ISP.
Signed-off-by: Chris Dimich <chris.dimich at boundarydevices.com>
---
package/freescale-imx/Config.in | 1 +
.../isp-imx/0001-run.sh-fix-bashisms.patch | 201 ++++++++++++++++++
...rt_isp.sh-refine-device-tree-parsing.patch | 28 +++
package/freescale-imx/isp-imx/Config.in | 15 ++
package/freescale-imx/isp-imx/S80isp | 18 ++
package/freescale-imx/isp-imx/isp-imx.hash | 4 +
package/freescale-imx/isp-imx/isp-imx.mk | 65 ++++++
7 files changed, 332 insertions(+)
create mode 100644 package/freescale-imx/isp-imx/0001-run.sh-fix-bashisms.patch
create mode 100644 package/freescale-imx/isp-imx/0001-start_isp.sh-refine-device-tree-parsing.patch
create mode 100644 package/freescale-imx/isp-imx/Config.in
create mode 100755 package/freescale-imx/isp-imx/S80isp
create mode 100644 package/freescale-imx/isp-imx/isp-imx.hash
create mode 100644 package/freescale-imx/isp-imx/isp-imx.mk
diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in
index 5f02d24909..0f0f5c50fd 100644
--- a/package/freescale-imx/Config.in
+++ b/package/freescale-imx/Config.in
@@ -117,6 +117,7 @@ source "package/freescale-imx/imx-sc-firmware/Config.in"
source "package/freescale-imx/imx-seco/Config.in"
source "package/freescale-imx/imx-vpu-hantro-vc/Config.in"
source "package/freescale-imx/isp-vvcam-module/Config.in"
+source "package/freescale-imx/isp-imx/Config.in"
if (BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 || BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53)
source "package/freescale-imx/gpu-amd-bin-mx51/Config.in"
source "package/freescale-imx/libz160/Config.in"
diff --git a/package/freescale-imx/isp-imx/0001-run.sh-fix-bashisms.patch b/package/freescale-imx/isp-imx/0001-run.sh-fix-bashisms.patch
new file mode 100644
index 0000000000..cbbc31906c
--- /dev/null
+++ b/package/freescale-imx/isp-imx/0001-run.sh-fix-bashisms.patch
@@ -0,0 +1,201 @@
+From 7c5c07a24c9e77d69002c6a9aefd1cc5a7a0615f Mon Sep 17 00:00:00 2001
+From: Chris Dimich <Chris.Dimich at boundarydevices.com>
+Date: Tue, 28 Sep 2021 17:27:33 -0700
+Subject: [PATCH 1/1] run.sh: fix bashisms
+
+---
+ imx/run.sh | 63 ++++++++++++++++++++++++++----------------------------
+ 1 file changed, 30 insertions(+), 33 deletions(-)
+
+diff --git a/imx/run.sh b/imx/run.sh
+index d3bb03a08..bab13c370 100755
+--- a/imx/run.sh
++++ b/imx/run.sh
+@@ -15,17 +15,17 @@ LOCAL_RUN="0" # search modules in /lib/modules and libraries in /usr/lib
+ RUN_OPTION=""
+ LOCAL_RUN="0"
+ # an array with the modules to load, insertion order
+-declare -a MODULES=("imx8-media-dev" "vvcam-video" "vvcam-dwe" "vvcam-isp")
++MODULES="imx8-media-dev vvcam-video vvcam-dwe vvcam-isp"
+
+ USAGE="Usage:\n"
+-USAGE+="run.sh -c <isp_config> &\n"
+-USAGE+="Supported configurations:\n"
+-USAGE+="\tbasler_1080p60 - single basler camera on MIPI-CSI1, 1920x1080, 60 fps\n"
+-USAGE+="\tdual_basler_1080p60 - dual basler cameras on MIPI-CSI1/2, 1920x1080, 60 fps\n"
+-USAGE+="\tbasler_4k - single basler camera on MIPI-CSI1, 3840x2160, 30 fps\n"
+-USAGE+="\tbasler_1080p60hdr - single basler camera on MIPI-CSI1, 1920x1080, 60 fps, HDR configuration\n"
+-USAGE+="\tdual_basler_1080p60hdr - dual basler cameras on MIPI-CSI1/2, 1920x1080, 60 fps, HDR configuration\n"
+-USAGE+="\tbasler_4khdr - single basler camera on MIPI-CSI1, 3840x2160, 30 fps, HDR configuration\n"
++USAGE=$USAGE"run.sh -c <isp_config> &\n"
++USAGE=$USAGE"Supported configurations:\n"
++USAGE=$USAGE"\tbasler_1080p60 - single basler camera on MIPI-CSI1, 1920x1080, 60 fps\n"
++USAGE=$USAGE"\tdual_basler_1080p60 - dual basler cameras on MIPI-CSI1/2, 1920x1080, 60 fps\n"
++USAGE=$USAGE"\tbasler_4k - single basler camera on MIPI-CSI1, 3840x2160, 30 fps\n"
++USAGE=$USAGE"\tbasler_1080p60hdr - single basler camera on MIPI-CSI1, 1920x1080, 60 fps, HDR configuration\n"
++USAGE=$USAGE"\tdual_basler_1080p60hdr - dual basler cameras on MIPI-CSI1/2, 1920x1080, 60 fps, HDR configuration\n"
++USAGE=$USAGE"\tbasler_4khdr - single basler camera on MIPI-CSI1, 3840x2160, 30 fps, HDR configuration\n"
+
+
+ # parse command line arguments
+@@ -182,21 +182,18 @@ load_module () {
+
+ load_modules () {
+ # remove any previous instances of the modules
+- n=${#MODULES_TO_REMOVE[*]}
+- for (( i = n-1; i >= 0; i-- ))
++ for i in "${MODULES_TO_REMOVE}"
+ do
+- echo "Removing ${MODULES_TO_REMOVE[i]}..."
+- rmmod ${MODULES_TO_REMOVE[i]} &>/dev/null
+- #LSMOD_STATUS=`lsmod | grep "${MODULES[i]}"`
+- #echo "LSMOD_STATUS=$LSMOD_STATUS"
+- if lsmod | grep "${MODULES_TO_REMOVE[i]}" ; then
+- echo "Removing ${MODULES_TO_REMOVE[i]} failed!"
++ echo "Removing $i..."
++ rmmod $i &>/dev/null
++ if lsmod | grep "$i" ; then
++ echo "Removing $i failed!"
+ exit 1
+ fi
+ done
+
+ # and now clean load the modules
+- for i in "${MODULES[@]}"
++ for i in "${MODULES}"
+ do
+ echo "Loading module $i ..."
+ load_module $i
+@@ -206,10 +203,10 @@ load_modules () {
+ write_default_mode_files
+
+ echo "Trying configuration \"$ISP_CONFIG\"..."
+-MODULES_TO_REMOVE=( "basler-camera-driver-vvcam" "os08a20" "ov2775" "${MODULES[@]}")
++MODULES_TO_REMOVE="basler-camera-driver-vvcam os08a20 ov2775 ${MODULES}"
+ case "$ISP_CONFIG" in
+ basler_4k )
+- MODULES=("basler-camera-driver-vvcam" "${MODULES[@]}")
++ MODULES="basler-camera-driver-vvcam ${MODULES}"
+ RUN_OPTION="CAMERA0"
+ CAM_NAME="basler-vvcam"
+ DRV_FILE="DAA3840_30MC_4K.drv"
+@@ -218,7 +215,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor0_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ basler_1080p60 )
+- MODULES=("basler-camera-driver-vvcam" "${MODULES[@]}")
++ MODULES="basler-camera-driver-vvcam ${MODULES}"
+ RUN_OPTION="CAMERA0"
+ CAM_NAME="basler-vvcam"
+ DRV_FILE="DAA3840_30MC_1080P.drv"
+@@ -227,7 +224,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor0_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ dual_basler_1080p60 )
+- MODULES=("basler-camera-driver-vvcam" "${MODULES[@]}")
++ MODULES="basler-camera-driver-vvcam ${MODULES}"
+ RUN_OPTION="DUAL_CAMERA"
+ CAM_NAME="basler-vvcam"
+ DRV_FILE="DAA3840_30MC_1080P.drv"
+@@ -237,7 +234,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor1_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ basler_4khdr )
+- MODULES=("basler-camera-driver-vvcam" "${MODULES[@]}")
++ MODULES="basler-camera-driver-vvcam ${MODULES}"
+ RUN_OPTION="CAMERA0"
+ CAM_NAME="basler-vvcam"
+ DRV_FILE="DAA3840_30MC_4K.drv"
+@@ -246,7 +243,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor0_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ basler_1080p60hdr )
+- MODULES=("basler-camera-driver-vvcam" "${MODULES[@]}")
++ MODULES="basler-camera-driver-vvcam ${MODULES}"
+ RUN_OPTION="CAMERA0"
+ CAM_NAME="basler-vvcam"
+ DRV_FILE="DAA3840_30MC_1080P.drv"
+@@ -255,7 +252,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor0_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ dual_basler_1080p60hdr )
+- MODULES=("basler-camera-driver-vvcam" "${MODULES[@]}")
++ MODULES="basler-camera-driver-vvcam ${MODULES}"
+ RUN_OPTION="DUAL_CAMERA"
+ CAM_NAME="basler-vvcam"
+ DRV_FILE="DAA3840_30MC_1080P.drv"
+@@ -265,7 +262,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor1_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ dual_basler_1080p25hdr )
+- MODULES=("basler-camera-driver-vvcam" "${MODULES[@]}")
++ MODULES="basler-camera-driver-vvcam ${MODULES}"
+ RUN_OPTION="DUAL_CAMERA"
+ CAM_NAME="basler-vvcam"
+ DRV_FILE="DAA3840_30MC_1080P.drv"
+@@ -275,7 +272,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor1_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ ov2775_1080p30 )
+- MODULES=("ov2775" "${MODULES[@]}")
++ MODULES="ov2775 ${MODULES}"
+ RUN_OPTION="CAMERA0"
+ CAM_NAME="ov2775"
+ DRV_FILE="ov2775.drv"
+@@ -284,7 +281,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor0_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ dual_ov2775_1080p30 )
+- MODULES=("ov2775" "${MODULES[@]}")
++ MODULES="ov2775 ${MODULES}"
+ RUN_OPTION="DUAL_CAMERA"
+ CAM_NAME="ov2775"
+ DRV_FILE="ov2775.drv"
+@@ -294,7 +291,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor1_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ ov2775_1080p30hdr )
+- MODULES=("ov2775" "${MODULES[@]}")
++ MODULES="ov2775 ${MODULES}"
+ RUN_OPTION="CAMERA0"
+ CAM_NAME="ov2775"
+ DRV_FILE="ov2775.drv"
+@@ -303,7 +300,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor0_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ dual_ov2775_1080p30hdr )
+- MODULES=("ov2775" "${MODULES[@]}")
++ MODULES="ov2775 ${MODULES}"
+ RUN_OPTION="DUAL_CAMERA"
+ CAM_NAME="ov2775"
+ DRV_FILE="ov2775.drv"
+@@ -313,7 +310,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor1_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ ov2775_1080p30hdr_native )
+- MODULES=("ov2775" "${MODULES[@]}")
++ MODULES="ov2775 ${MODULES}"
+ RUN_OPTION="CAMERA0"
+ CAM_NAME="ov2775"
+ DRV_FILE="ov2775.drv"
+@@ -322,7 +319,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor0_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ ov2775_720p )
+- MODULES=("ov2775" "${MODULES[@]}")
++ MODULES="ov2775 ${MODULES}"
+ RUN_OPTION="CAMERA0"
+ CAM_NAME="ov2775"
+ DRV_FILE="ov2775.drv"
+@@ -331,7 +328,7 @@ case "$ISP_CONFIG" in
+ write_sensor_cfg_file "Sensor0_Entry.cfg" $CAM_NAME $DRV_FILE $MODE_FILE $MODE
+ ;;
+ os08a20_4k )
+- MODULES=("os08a20" "${MODULES[@]}")
++ MODULES="os08a20 ${MODULES}"
+ RUN_OPTION="CAMERA0"
+ CAM_NAME="os08a20"
+ DRV_FILE="os08a20.drv"
+--
+2.31.1
+
diff --git a/package/freescale-imx/isp-imx/0001-start_isp.sh-refine-device-tree-parsing.patch b/package/freescale-imx/isp-imx/0001-start_isp.sh-refine-device-tree-parsing.patch
new file mode 100644
index 0000000000..cc98460b5f
--- /dev/null
+++ b/package/freescale-imx/isp-imx/0001-start_isp.sh-refine-device-tree-parsing.patch
@@ -0,0 +1,28 @@
+From ee98a802554a6a962b78bc65a951d84b5d60d526 Mon Sep 17 00:00:00 2001
+From: Chris Dimich <chris.dimich at boundarydevices.com>
+Date: Sun, 3 Oct 2021 10:29:31 -0700
+Subject: [PATCH 1/1] start_isp.sh: refine device tree parsing
+
+Signed-off-by: Chris Dimich <chris.dimich at boundarydevices.com>
+---
+ imx/start_isp.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/imx/start_isp.sh b/imx/start_isp.sh
+index 6daabc59c..892b7c061 100755
+--- a/imx/start_isp.sh
++++ b/imx/start_isp.sh
+@@ -7,8 +7,8 @@
+ #
+
+ RUNTIME_DIR="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
+-NR_DEVICE_TREE_BASLER=$(grep basler-camera-vvcam /sys/firmware/devicetree/base/soc at 0/*/i2c@*/*/compatible -l | wc -l 2> /dev/null)
+-NR_DEVICE_TREE_OV5640=$(grep ov5640 /sys/firmware/devicetree/base/soc at 0/*/i2c@*/*/compatible -l | wc -l 2> /dev/null)
++NR_DEVICE_TREE_BASLER=$(grep basler-camera-vvcam `find /sys/firmware/devicetree/base/soc at 0/ -name compatible | grep i2c` -l | wc -l 2> /dev/null)
++NR_DEVICE_TREE_OV5640=$(grep ov5640 `find /sys/firmware/devicetree/base/soc at 0/ -name compatible | grep i2c` -l | wc -l 2> /dev/null)
+
+ # check if the basler device has been enabled in the device tree
+ if [ $NR_DEVICE_TREE_BASLER -eq 1 ]; then
+--
+2.31.1
+
diff --git a/package/freescale-imx/isp-imx/Config.in b/package/freescale-imx/isp-imx/Config.in
new file mode 100644
index 0000000000..04d17284d4
--- /dev/null
+++ b/package/freescale-imx/isp-imx/Config.in
@@ -0,0 +1,15 @@
+comment "isp-imx requires aarch64"
+ depends on !BR2_aarch64
+
+comment "isp-imx requires g2d library"
+ depends on !BR2_PACKAGE_IMX_GPU_G2D
+
+config BR2_PACKAGE_ISP_IMX
+ bool "isp-imx"
+ depends on BR2_aarch64 # Only relevant for i.MX8
+ depends on BR2_PACKAGE_IMX_GPU_G2D
+ select BR2_PACKAGE_LIBDRM
+ select BR2_PACKAGE_LINUX_IMX_HEADERS
+ select BR2_PACKAGE_PYTHON3
+ help
+ i.MX Verisilicon Software ISP.
diff --git a/package/freescale-imx/isp-imx/S80isp b/package/freescale-imx/isp-imx/S80isp
new file mode 100755
index 0000000000..a41028fde8
--- /dev/null
+++ b/package/freescale-imx/isp-imx/S80isp
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+case "$1" in
+ start|"")
+ /bin/sh /opt/imx8-isp/bin/start_isp.sh &
+ ;;
+ stop)
+ ;;
+ restart|reload)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop}" >&2
+ exit 1
+ ;;
+esac
diff --git a/package/freescale-imx/isp-imx/isp-imx.hash b/package/freescale-imx/isp-imx/isp-imx.hash
new file mode 100644
index 0000000000..03bc61347f
--- /dev/null
+++ b/package/freescale-imx/isp-imx/isp-imx.hash
@@ -0,0 +1,4 @@
+# Locally computed:
+sha256 e775975684aab4211f0bf8c5e2c6604ba46b83c5586937000675e044a50d77b8 isp-imx-4.2.2.13.0.bin
+sha256 ea58636bf34f589048fcd46e38497c47229fde8498df086ff5fb52f9ef8e15ee COPYING
+sha256 50099e283cfd307f84f159aeb1a6f462351320273dbcdb80d7f2c9db0494b71c EULA
diff --git a/package/freescale-imx/isp-imx/isp-imx.mk b/package/freescale-imx/isp-imx/isp-imx.mk
new file mode 100644
index 0000000000..a05b7749b1
--- /dev/null
+++ b/package/freescale-imx/isp-imx/isp-imx.mk
@@ -0,0 +1,65 @@
+################################################################################
+#
+# isp-imx
+#
+################################################################################
+
+ISP_IMX_VERSION = 4.2.2.13.0
+ISP_IMX_SITE = $(FREESCALE_IMX_SITE)
+ISP_IMX_SOURCE = isp-imx-$(ISP_IMX_VERSION).bin
+ISP_IMX_DEPENDENCIES = linux linux-imx-headers python3 libdrm imx-gpu-g2d
+ISP_IMX_LICENSE = NXP Semiconductor Software License Agreement
+ISP_IMX_LICENSE_FILES = EULA COPYING
+ISP_IMX_REDISTRIBUTE = NO
+ISP_IMX_SUBDIR = appshell
+
+ISP_IMX_CONF_OPTS += \
+ -DCMAKE_BUILD_TYPE=release \
+ -DISP_VERSION=ISP8000NANO_V1802 \
+ -DPLATFORM=ARM64 \
+ -DAPPMODE=V4L2 \
+ -DQTLESS=1 \
+ -DFULL_SRC_COMPILE=1 \
+ -DWITH_DRM=1 \
+ -DWITH_DWE=1 \
+ -DSERVER_LESS=1 \
+ -DSUBDEV_V4L2=1 \
+ -DENABLE_IRQ=1 \
+ -DPARTITION_BUILD=0 \
+ -D3A_SRC_BUILD=0 \
+ -Wno-dev
+
+ISP_IMX_CONF_ENV += SDKTARGETSYSROOT=$(STAGING_DIR)
+
+define ISP_IMX_EXTRACT_CMDS
+ $(call FREESCALE_IMX_EXTRACT_HELPER,$(ISP_IMX_DL_DIR)/$(ISP_IMX_SOURCE))
+endef
+
+define ISP_IMX_INSTALL_TARGET_CMDS
+ mkdir -p $(TARGET_DIR)/opt/imx8-isp/bin
+ cp -r $(@D)/$(ISP_IMX_SUBDIR)/generated/release/bin/*2775* $(TARGET_DIR)/opt/imx8-isp/bin
+ cp -r $(@D)/$(ISP_IMX_SUBDIR)/generated/release/bin/isp_media_server $(TARGET_DIR)/opt/imx8-isp/bin
+ cp -r $(@D)/$(ISP_IMX_SUBDIR)/generated/release/bin/*_test $(TARGET_DIR)/opt/imx8-isp/bin
+ cp -r $(@D)/$(ISP_IMX_SUBDIR)/generated/release/bin/vvext $(TARGET_DIR)/opt/imx8-isp/bin
+ cp -r $(@D)/dewarp/dewarp_config $(TARGET_DIR)/opt/imx8-isp/bin
+ cp -r $(@D)/mediacontrol/case/ $(TARGET_DIR)/opt/imx8-isp/bin
+ cp -r $(@D)/$(ISP_IMX_SUBDIR)/generated/release/lib/*.so* $(TARGET_DIR)/usr/lib/
+
+ cp $(@D)/imx/run.sh $(TARGET_DIR)/opt/imx8-isp/bin
+ cp $(@D)/imx/start_isp.sh $(TARGET_DIR)/opt/imx8-isp/bin
+
+ chmod +x $(TARGET_DIR)/opt/imx8-isp/bin/run.sh
+ chmod +x $(TARGET_DIR)/opt/imx8-isp/bin/start_isp.sh
+endef
+
+define ISP_IMX_INSTALL_INIT_SYSTEMD
+ $(INSTALL) -D -m 644 $(@D)/imx/imx8-isp.service \
+ $(TARGET_DIR)/usr/lib/systemd/system/imx8-isp.service
+endef
+
+define ISP_IMX_INSTALL_INIT_SYSV
+ $(INSTALL) -D -m 755 package/freescale-imx/isp-imx/S80isp \
+ $(TARGET_DIR)/etc/init.d/S80isp
+endef
+
+$(eval $(cmake-package))
--
2.31.1
More information about the buildroot
mailing list