[Buildroot] [PATCH 08/12] package/freescale-imx/isp-imx: add package

Arnout Vandecappelle arnout at mind.be
Wed Oct 13 19:37:16 UTC 2021



On 06/10/2021 22:41, Chris Dimich wrote:
> i.MX Verisilicon Software ISP.

  Same as for vvcam, I wonder if it makes sense to add a symbol for this in 
freescal-imx/Config.in

> 
> 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

  Again: remove the 1/1 part.

  The patch needs your signed-off-by as well.

  Please send the patch upstream, and add something like

Upstream: <URL>

If there's no upstream to send to (likely, in this case), add something like:

Upstream: nowhere to send it to

[snip]
> 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

  Instead of depending on g2d, you should select it (and copy its dependencies, 
with a comment behind them to show where they come from).

> +	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)

  Is there really no 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

  A CMake package usually has a working install command. If it doesn't work in 
this case, please explain in the commit log why not.

  If the cmake install just misses a few files, then you can install those in a 
post-install hook.

> +	mkdir -p $(TARGET_DIR)/opt/imx8-isp/bin

  We don't install stuff in /opt. In fact, we go out of our way to patch scripts 
etc. so we can install things in /usr. There could be an exception for this 
package, but then there needs to be a *very* good explanation in the commit message.

  Regards,
  Arnout

> +	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))
> 


More information about the buildroot mailing list