From 9c93cc85aeb6597b1a04ee0bed46507fab5da24f Mon Sep 17 00:00:00 2001 From: Brandon Brnich Date: Thu, 31 Oct 2024 10:40:08 -0500 Subject: [PATCH 1/2] fix(config): Add IMG Encoder to J722s and AM67 Documentation 10.0 introduced support for the E5010 JPEG Encoder on the J722s platform. Add documentation to relevant config to pull in during build. Signed-off-by: Brandon Brnich --- configs/AM67/AM67_linux_toc.txt | 1 + configs/J722S/J722S_linux_toc.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/configs/AM67/AM67_linux_toc.txt b/configs/AM67/AM67_linux_toc.txt index 47034a6af..cc7fe9d88 100644 --- a/configs/AM67/AM67_linux_toc.txt +++ b/configs/AM67/AM67_linux_toc.txt @@ -45,6 +45,7 @@ linux/Foundational_Components/Kernel/Kernel_Drivers/Audio linux/Foundational_Components/Kernel/Kernel_Drivers/Camera/CSI2RX linux/Foundational_Components/Kernel/Kernel_Drivers/Crypto linux/Foundational_Components/Kernel/Kernel_Drivers/Display/DSS7 +linux/Foundational_Components/Kernel/Kernel_Drivers/E5010_JPEG_Encoder linux/Foundational_Components/Kernel/Kernel_Drivers/GPIO linux/Foundational_Components/Kernel/Kernel_Drivers/I2C linux/Foundational_Components/Kernel/Kernel_Drivers/MCAN diff --git a/configs/J722S/J722S_linux_toc.txt b/configs/J722S/J722S_linux_toc.txt index d24ded4a7..0f73d400f 100644 --- a/configs/J722S/J722S_linux_toc.txt +++ b/configs/J722S/J722S_linux_toc.txt @@ -46,6 +46,7 @@ linux/Foundational_Components/Kernel/Kernel_Drivers/Audio linux/Foundational_Components/Kernel/Kernel_Drivers/Camera/CSI2RX linux/Foundational_Components/Kernel/Kernel_Drivers/Crypto linux/Foundational_Components/Kernel/Kernel_Drivers/Display/DSS7 +linux/Foundational_Components/Kernel/Kernel_Drivers/E5010_JPEG_Encoder linux/Foundational_Components/Kernel/Kernel_Drivers/GPIO linux/Foundational_Components/Kernel/Kernel_Drivers/I2C linux/Foundational_Components/Kernel/Kernel_Drivers/MCAN From be16ff7c20b917bce18df557aa0af50edc7f6719 Mon Sep 17 00:00:00 2001 From: Brandon Brnich Date: Thu, 31 Oct 2024 12:01:54 -0500 Subject: [PATCH 2/2] style(E5010): Cleanup Documentation and Add J722S Removing the direct references to AM62A and replacing them with common macros. Also updating differences between AEN and 62a. There are not many since it is the same IP and same clock configuration for both platforms. All latency numbers and performance metrics are common between the two. Signed-off-by: Brandon Brnich --- .../Kernel_Drivers/E5010_JPEG_Encoder.rst | 62 +++++++++++++------ 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/E5010_JPEG_Encoder.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/E5010_JPEG_Encoder.rst index d7e6e96f2..3926f97a9 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/E5010_JPEG_Encoder.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/E5010_JPEG_Encoder.rst @@ -1,3 +1,5 @@ +.. include:: /_replacevars.rst + ****************** E5010 JPEG Encoder ****************** @@ -102,8 +104,8 @@ of video encoding based use-cases utilizing this driver as demonstrated in below Building the driver =================== -The E5010 JPEG driver is already enabled as a kernel module in processor SDK 9.0 for AM62A in the default defconfig being used for the board. -If using a separate defconfig, It can be enabled explicitly for compilation by setting corresponding Kconfig as shown below: +The E5010 JPEG driver is already enabled as a kernel module on |__PART_FAMILY_DEVICE_NAMES__| as part of the default defconfig being used for the board. +If using a separate defconfig, it can be enabled explicitly for compilation by setting corresponding Kconfig as shown below: .. code-block:: kconfig @@ -172,22 +174,44 @@ Due to runtime power management feature, when JPEG encoder is not being used by any of the applications, it stays in suspended state and same can be verified using k3conf utility as shown below : -.. code-block:: console +.. ifconfig:: CONFIG_part_variant in ('AM62AX') + + .. code-block:: console + + root@am62axx-evm:~# k3conf dump device 201 + |------------------------------------------------------------------------------| + | VERSION INFO | + |------------------------------------------------------------------------------| + | K3CONF | (version 0.3-nogit built Thu Jul 25 14:13:02 UTC 2024) | + | SoC | AM62Ax SR1.0 | + | SYSFW | ABI: 4.0 (firmware version 0x000a '10.0.8--v10.00.08 (Fiery Fox))') | + |------------------------------------------------------------------------------| + + |---------------------------------------------------| + | Device ID | Device Name | Device Status | + |---------------------------------------------------| + | 201 | AM62AX_DEV_JPGENC0 | DEVICE_STATE_OFF | + |---------------------------------------------------| + +.. ifconfig:: CONFIG_part_variant in ('J722S', 'AM67') + + .. code-block:: console + + root@j722s-evm-evm:~# k3conf dump device 201 + |------------------------------------------------------------------------------| + | VERSION INFO | + |------------------------------------------------------------------------------| + | K3CONF | (version 0.3-nogit built Thu Jul 25 14:13:02 UTC 2024) | + | SoC | J722S SR1.0 | + | SYSFW | ABI: 4.0 (firmware version 0x000a '10.0.8--v10.00.08 (Fiery Fox))') | + |------------------------------------------------------------------------------| + + |---------------------------------------------------| + | Device ID | Device Name | Device Status | + |---------------------------------------------------| + | 201 | J722S_DEV_JPGENC0 | DEVICE_STATE_OFF | + |---------------------------------------------------| - root@am62axx-evm:~# k3conf dump device 201 - |------------------------------------------------------------------------------| - | VERSION INFO | - |------------------------------------------------------------------------------| - | K3CONF | (version 0.3-nogit built Thu Jul 25 14:13:02 UTC 2024) | - | SoC | AM62Ax SR1.0 | - | SYSFW | ABI: 4.0 (firmware version 0x000a '10.0.8--v10.00.08 (Fiery Fox))') | - |------------------------------------------------------------------------------| - - |---------------------------------------------------| - | Device ID | Device Name | Device Status | - |---------------------------------------------------| - | 201 | AM62AX_DEV_JPGENC0 | DEVICE_STATE_OFF | - |---------------------------------------------------| .. ifconfig:: CONFIG_part_variant in ('AM62AX') @@ -375,7 +399,7 @@ Buffer alignment requirements Performance and Latency Benchmarking ==================================== -The E5010 core is clocked at 250Mhz in AM62A and theoretical performance expectation +The E5010 core is clocked at 250Mhz on |__PART_FAMILY_DEVICE_NAMES__| and theoretical performance expectation with this clocking is as below : +-------------------+--------------------+ @@ -389,7 +413,7 @@ with this clocking is as below : With these numbers theoretically E5010 core can handle 3840x2160@60fps equivalent load for 4:2:2 video formats and 3840x2160@75fps equivalent load for 4:2:0 video formats. -This however requires the upstream element (for e.g. camera) to support above rates. On AM62A board fastest locally available upstream element source is `wave5 VPU decoder <../../../Foundational_Components_Multimedia_wave5.html>`__ which provides maximum performance of 3840x2160@59 fps with low bitrate files and we were able to achieve same performance after passing this decoded data to E5010 JPEG Encoder as shown in below example : +This however requires the upstream element (for e.g. camera) to support above rates. On |__PART_FAMILY_DEVICE_NAMES__| board fastest locally available upstream element source is :ref:`wave5 VPU decoder ` which provides maximum performance of 3840x2160@59 fps with low bitrate files and we were able to achieve same performance after passing this decoded data to E5010 JPEG Encoder as shown in below example : .. code-block:: console