diff mbox series

[meta-ti,master,v2] ti-bsp: recipes-multimedia: Add udev rules for VPU and JPEG encoder symlinks

Message ID 20250821160944.845890-1-t-lannynd@ti.com
State Superseded
Delegated to: Ryan Eatmon
Headers show
Series [meta-ti,master,v2] ti-bsp: recipes-multimedia: Add udev rules for VPU and JPEG encoder symlinks | expand

Commit Message

Thorsten Lannynd Aug. 21, 2025, 4:09 p.m. UTC
This patch introduces udev rules to ensure consistent device naming for
VPU decoders, encoders, and the JPEG encoder. These rules are essential
for enabling hardware-accelerated video decoding in Chromium using the
V4L2 Stateful decoder.

The following udev rules are added:
- Map vpu and vpu0 to /dev/video-dec0 and /dev/video-enc0.
- Map vpu1 to /dev/video-dec1 and /dev/video-enc1.
- Map the JPEG encoder to /dev/jpeg-enc0.

These changes ensure proper operation of the VPU and JPEG encoder,
especially when other video devices are connected, avoiding mismatches.

Signed-off-by: Thorsten Lannynd <t-lannynd@ti.com>
Reviewed-by: Andrew Davis <afd@ti.com>
---

v2:
- Split patch into seperate master and scarthgap patches
- Added SUMMARY to bitbake recipe

 .../recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb        |  2 ++
 .../ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb    |  2 ++
 .../ti-multimedia-udev/files/67-multimedia.rules      |  5 +++++
 .../ti-multimedia-udev/ti-multimedia-udev.bb          | 11 +++++++++++
 4 files changed, 20 insertions(+)
 create mode 100644 meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/files/67-multimedia.rules
 create mode 100644 meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/ti-multimedia-udev.bb

Comments

PRC Automation Aug. 21, 2025, 4:15 p.m. UTC | #1
meta-ti / na / 20250821160944.845890-1-t-lannynd

PRC Results: FAIL

=========================================================
  check-yocto-patches: PASS
=========================================================
Patches
----------------------------------------
All patches passed



=========================================================
  apply-yocto-patch: PASS
=========================================================
master
=====================
Summary:
- Patch Series: [meta-ti][master][PATCH v2] ti-bsp: recipes-multimedia: Add udev rules for VPU and JPEG encoder symlinks
- Submitter: From: Thorsten Lannynd <t-lannynd@ti.com>
- Date: Date: Thu, 21 Aug 2025 11:09:44 -0500
- Num Patches: 1
- Mailing List (public inbox) Commit SHA: d61d95cd5fb1eaf5701735e40824b9fa77fccc2b

Applied to:
- Repository: lcpd-prc-meta-ti
- Base Branch: master-wip
- Commit Author: Bryan Brattlof <bb@ti.com>
- Commit Subject: conf: machine: add optee-os into am62lxx-evm builds
- Commit SHA: 5f428c58a52b4c08139809327ba223212f986a86

Patches
----------------------------------------
All patches applied



=========================================================
  check-yocto-repo: FAIL
=========================================================
master
=====================
FAIL
    ERROR: You must have a SUMMARY = "...". (SUMMARY-1)
        meta-ti-extras/recipes-ti/ipc/ti-ipc-examples-linux_git.bb
    
    
    Code Summary
    ============
    
    SUMMARY-1
    -------------------------------------------
      All recipes require a SUMMARY.
Ryan Eatmon Aug. 21, 2025, 4:25 p.m. UTC | #2
On 8/21/2025 11:15 AM, PRC Automation wrote:
> meta-ti / na / 20250821160944.845890-1-t-lannynd
> 
> PRC Results: FAIL
> 
> =========================================================
>    check-yocto-patches: PASS
> =========================================================
> Patches
> ----------------------------------------
> All patches passed
> 
> 
> 
> =========================================================
>    apply-yocto-patch: PASS
> =========================================================
> master
> =====================
> Summary:
> - Patch Series: [meta-ti][master][PATCH v2] ti-bsp: recipes-multimedia: Add udev rules for VPU and JPEG encoder symlinks
> - Submitter: From: Thorsten Lannynd <t-lannynd@ti.com>
> - Date: Date: Thu, 21 Aug 2025 11:09:44 -0500
> - Num Patches: 1
> - Mailing List (public inbox) Commit SHA: d61d95cd5fb1eaf5701735e40824b9fa77fccc2b
> 
> Applied to:
> - Repository: lcpd-prc-meta-ti
> - Base Branch: master-wip
> - Commit Author: Bryan Brattlof <bb@ti.com>
> - Commit Subject: conf: machine: add optee-os into am62lxx-evm builds
> - Commit SHA: 5f428c58a52b4c08139809327ba223212f986a86
> 
> Patches
> ----------------------------------------
> All patches applied
> 
> 
> 
> =========================================================
>    check-yocto-repo: FAIL
> =========================================================
> master
> =====================
> FAIL
>      ERROR: You must have a SUMMARY = "...". (SUMMARY-1)
>          meta-ti-extras/recipes-ti/ipc/ti-ipc-examples-linux_git.bb
>      
>      
>      Code Summary
>      ============
>      
>      SUMMARY-1
>      -------------------------------------------
>        All recipes require a SUMMARY.
> 


Don't worry about this.  This is due to a different patch.  I need to 
see why this slipped through that patch check, and why I accepted it.
Ryan Eatmon Aug. 25, 2025, 4:51 p.m. UTC | #3
On 8/21/2025 11:09 AM, Thorsten Lannynd wrote:
> This patch introduces udev rules to ensure consistent device naming for
> VPU decoders, encoders, and the JPEG encoder. These rules are essential
> for enabling hardware-accelerated video decoding in Chromium using the
> V4L2 Stateful decoder.
> 
> The following udev rules are added:
> - Map vpu and vpu0 to /dev/video-dec0 and /dev/video-enc0.
> - Map vpu1 to /dev/video-dec1 and /dev/video-enc1.
> - Map the JPEG encoder to /dev/jpeg-enc0.
> 
> These changes ensure proper operation of the VPU and JPEG encoder,
> especially when other video devices are connected, avoiding mismatches.
> 
> Signed-off-by: Thorsten Lannynd <t-lannynd@ti.com>
> Reviewed-by: Andrew Davis <afd@ti.com>
> ---
> 
> v2:
> - Split patch into seperate master and scarthgap patches
> - Added SUMMARY to bitbake recipe
> 
>   .../recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb        |  2 ++
>   .../ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb    |  2 ++
>   .../ti-multimedia-udev/files/67-multimedia.rules      |  5 +++++
>   .../ti-multimedia-udev/ti-multimedia-udev.bb          | 11 +++++++++++
>   4 files changed, 20 insertions(+)
>   create mode 100644 meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/files/67-multimedia.rules
>   create mode 100644 meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/ti-multimedia-udev.bb
> 
> diff --git a/meta-ti-bsp/recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb b/meta-ti-bsp/recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb
> index 6a65992f..95bfd01a 100644
> --- a/meta-ti-bsp/recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb
> +++ b/meta-ti-bsp/recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb
> @@ -27,3 +27,5 @@ do_install() {
>   	install -d ${D}${nonarch_base_libdir}/firmware/cnm
>   	install -m 0644 ${S}/cnm/${SOURCE_WAVE521C} ${D}${nonarch_base_libdir}/firmware/cnm/${TARGET_WAVE521C}
>   }
> +
> +RDEPENDS:${PN} += "ti-multimedia-udev"
> diff --git a/meta-ti-bsp/recipes-bsp/ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb b/meta-ti-bsp/recipes-bsp/ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb
> index f73f59fa..cdcf4af0 100644
> --- a/meta-ti-bsp/recipes-bsp/ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb
> +++ b/meta-ti-bsp/recipes-bsp/ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb
> @@ -19,3 +19,5 @@ SRCREV = "0bcbb20af32ea13275b452f0e84f5a49966d0bf6"
>   TARGET_PRODUCT:j721e = "j721e_linux"
>   
>   EXTRA_OEMAKE += 'KERNEL_DIR="${STAGING_KERNEL_DIR}" PREFIX="${D}"'
> +
> +RDEPENDS:${PN} += "ti-multimedia-udev"
> diff --git a/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/files/67-multimedia.rules b/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/files/67-multimedia.rules
> new file mode 100644
> index 00000000..5239d1ef
> --- /dev/null
> +++ b/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/files/67-multimedia.rules
> @@ -0,0 +1,5 @@
> +SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/*210000.video-codec/video4linux/video*", ATTR{name}=="C&M Wave5 VPU decoder", SYMLINK+="video-dec0"
> +SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/*210000.video-codec/video4linux/video*", ATTR{name}=="C&M Wave5 VPU encoder", SYMLINK+="video-enc0"
> +SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/4220000.video-codec/video4linux/video*", ATTR{name}=="C&M Wave5 VPU decoder", SYMLINK+="video-dec1"
> +SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/4220000.video-codec/video4linux/video*", ATTR{name}=="C&M Wave5 VPU encoder", SYMLINK+="video-enc1"
> +SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/fd20000.jpeg-encoder/video4linux/video*", ATTR{name}=="e5010", SYMLINK+="jpeg-enc0"
> diff --git a/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/ti-multimedia-udev.bb b/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/ti-multimedia-udev.bb
> new file mode 100644
> index 00000000..40b0db8e
> --- /dev/null
> +++ b/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/ti-multimedia-udev.bb
> @@ -0,0 +1,11 @@
> +SUMMARY = "Udev rules for device naming of VPU devices and JPEG encoder"
> +
> +LICENSE = "MIT"
> +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
> +
> +SRC_URI += "file://67-multimedia.rules"
> +
> +do_install() {
> +    install -d ${D}${sysconfdir}/udev/rules.d
> +    install -m 0644 ${WORKDIR}/67-multimedia.rules ${D}${sysconfdir}/udev/rules.d/
> +}


This recipe is throwing warnings and errors out on master.  Please test 
your patches on both branches when sending them in.

The warning is:

WARNING: ti-multimedia-udev-1.0-r0 do_unpack: ti-multimedia-udev: the 
directory ${UNPACKDIR}/${BP} 
(/scratch/builds/arago-master-wip/build/build/arago-tmp-default/work/aarch64-oe-linux/ti-multimedia-udev/1.0/sources/ti-multimedia-udev-1.0) 
pointed to by the S variable doesn't exist - please set S within the 
recipe to point to where the source has been unpacked to

This is because your recipe does not actually have anything to unpack 
(tarball, or git repo).  In the case where a recipe only refers to files 
located in the meta layer, you need to add this:

S = "${UNPACKDIR}"

The error is:
| install: cannot stat 
'/scratch/builds/arago-master-wip/build/build/arago-tmp-default/work/aarch64-oe-linux/ti-multimedia-udev/1.0/67-multimedia.rules': 
No such file or directory

This is because you refer to WORKDIR in the do_install.  That needs to 
be pointing to UNAPCKDIR dir instead.  This is a change in master.

     install -m 0644 ${UNPACKDIR}/67-multimedia.rules 
${D}${sysconfdir}/udev/rules.d/


Please fix the master patch and send a v3.
diff mbox series

Patch

diff --git a/meta-ti-bsp/recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb b/meta-ti-bsp/recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb
index 6a65992f..95bfd01a 100644
--- a/meta-ti-bsp/recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb
+++ b/meta-ti-bsp/recipes-bsp/cnm-wave-fw/cnm-wave-fw_git.bb
@@ -27,3 +27,5 @@  do_install() {
 	install -d ${D}${nonarch_base_libdir}/firmware/cnm
 	install -m 0644 ${S}/cnm/${SOURCE_WAVE521C} ${D}${nonarch_base_libdir}/firmware/cnm/${TARGET_WAVE521C}
 }
+
+RDEPENDS:${PN} += "ti-multimedia-udev"
diff --git a/meta-ti-bsp/recipes-bsp/ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb b/meta-ti-bsp/recipes-bsp/ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb
index f73f59fa..cdcf4af0 100644
--- a/meta-ti-bsp/recipes-bsp/ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb
+++ b/meta-ti-bsp/recipes-bsp/ti-img-encode-decode/ti-vxe-vxd-driver_6.12.bb
@@ -19,3 +19,5 @@  SRCREV = "0bcbb20af32ea13275b452f0e84f5a49966d0bf6"
 TARGET_PRODUCT:j721e = "j721e_linux"
 
 EXTRA_OEMAKE += 'KERNEL_DIR="${STAGING_KERNEL_DIR}" PREFIX="${D}"'
+
+RDEPENDS:${PN} += "ti-multimedia-udev"
diff --git a/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/files/67-multimedia.rules b/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/files/67-multimedia.rules
new file mode 100644
index 00000000..5239d1ef
--- /dev/null
+++ b/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/files/67-multimedia.rules
@@ -0,0 +1,5 @@ 
+SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/*210000.video-codec/video4linux/video*", ATTR{name}=="C&M Wave5 VPU decoder", SYMLINK+="video-dec0"
+SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/*210000.video-codec/video4linux/video*", ATTR{name}=="C&M Wave5 VPU encoder", SYMLINK+="video-enc0"
+SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/4220000.video-codec/video4linux/video*", ATTR{name}=="C&M Wave5 VPU decoder", SYMLINK+="video-dec1"
+SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/4220000.video-codec/video4linux/video*", ATTR{name}=="C&M Wave5 VPU encoder", SYMLINK+="video-enc1"
+SUBSYSTEM=="video4linux", DEVPATH=="/devices/*/fd20000.jpeg-encoder/video4linux/video*", ATTR{name}=="e5010", SYMLINK+="jpeg-enc0"
diff --git a/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/ti-multimedia-udev.bb b/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/ti-multimedia-udev.bb
new file mode 100644
index 00000000..40b0db8e
--- /dev/null
+++ b/meta-ti-bsp/recipes-multimedia/ti-multimedia-udev/ti-multimedia-udev.bb
@@ -0,0 +1,11 @@ 
+SUMMARY = "Udev rules for device naming of VPU devices and JPEG encoder"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI += "file://67-multimedia.rules"
+
+do_install() {
+    install -d ${D}${sysconfdir}/udev/rules.d
+    install -m 0644 ${WORKDIR}/67-multimedia.rules ${D}${sysconfdir}/udev/rules.d/
+}