From bb0985b2c4f870c018281fcbd944556d50c6e104 Mon Sep 17 00:00:00 2001 From: Ganesh Khose Date: Fri, 11 Sep 2026 10:37:05 +0530 Subject: [PATCH 1/5] camxcommon-headers: upgrade v1.0.38 -> v1.0.45. Update the headers tar to align with the sources. Signed-off-by: Ganesh Khose --- ...xcommon-headers_1.0.38.bb => camxcommon-headers_1.0.45.bb} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename recipes-multimedia/camx/{camxcommon-headers_1.0.38.bb => camxcommon-headers_1.0.45.bb} (90%) diff --git a/recipes-multimedia/camx/camxcommon-headers_1.0.38.bb b/recipes-multimedia/camx/camxcommon-headers_1.0.45.bb similarity index 90% rename from recipes-multimedia/camx/camxcommon-headers_1.0.38.bb rename to recipes-multimedia/camx/camxcommon-headers_1.0.45.bb index a372fbc05..d9855becc 100644 --- a/recipes-multimedia/camx/camxcommon-headers_1.0.38.bb +++ b/recipes-multimedia/camx/camxcommon-headers_1.0.45.bb @@ -5,10 +5,10 @@ DESCRIPTION = "This recipe provides headers for all Qualcomm CamX stacks" LICENSE = "LicenseRef-LICENSE.qcom-2" LIC_FILES_CHKSUM = "file://usr/share/doc/${BPN}/LICENSE.QCOM-2.txt;md5=165287851294f2fb8ac8cbc5e24b02b0" -PBT_BUILD_DATE = "260825" +PBT_BUILD_DATE = "260910" PBT_BRANCH = "master" SRC_URI = "https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto_${PBT_BRANCH}/${BPN}_${PV}_armv8-2a.tar.gz" -SRC_URI[sha256sum] = "f3e66fbea6c554d4e0d515a8810759719fce5753fa75ac1c5caa21a338c5dc31" +SRC_URI[sha256sum] = "8aeab831b04b5f11d56f886f941c098e632ff3bc686549c4f7994fddf6ea9b85" S = "${UNPACKDIR}" From bdbec6d7481701c8f6b8837bd76ce9ec034823e5 Mon Sep 17 00:00:00 2001 From: Ganesh Khose Date: Tue, 15 Sep 2026 09:52:02 +0530 Subject: [PATCH 2/5] camxlib: drop legacy libcamera packaging entries Remove the unused legacy libcamera* libraries from the staged image. Signed-off-by: Ganesh Khose --- .../recipes-multimedia/camx/camxlib-kodiak_1.0.35.bb | 3 +++ .../openembedded-layer/recipes-multimedia/camx/common.inc | 3 +++ 2 files changed, 6 insertions(+) diff --git a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.35.bb b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.35.bb index c78ac59d5..6aec69153 100644 --- a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.35.bb +++ b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.35.bb @@ -74,6 +74,9 @@ do_install:append() { rm -f ${D}${libdir}/camx/kodiak/hw/*${SOLIBSDEV} rm -f ${D}${libdir}/camx/kodiak/camera/*${SOLIBSDEV} + # Remove legacy libcamera* libs from the staged image + rm -f ${D}${libdir}/libcamera* + install -m 0644 ${S}/usr/share/doc/${BPN}/NOTICE ${D}${datadir}/doc/${BPN} install -m 0644 ${S}/usr/share/doc/${BPN}/LICENSE.QCOM-2.txt ${D}${datadir}/doc/${BPN} diff --git a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/common.inc b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/common.inc index 78a19e9a5..b0cda9c26 100644 --- a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/common.inc +++ b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/common.inc @@ -57,6 +57,9 @@ do_install:append() { rm -f ${D}${libdir}/camx/${PLATFORM}/hw/*${SOLIBSDEV} rm -f ${D}${libdir}/camx/${PLATFORM}/camera/*${SOLIBSDEV} + # Remove legacy libcamera* libs from the staged image + rm -f ${D}${libdir}/libcamera* + # Base docs install -m 0644 ${S}/usr/share/doc/${BPN}/NOTICE \ ${D}${datadir}/doc/${BPN} From 0cdc546c7e88e2d6ae5818d4c4a5aeca093f3cd1 Mon Sep 17 00:00:00 2001 From: Ganesh Khose Date: Fri, 11 Sep 2026 11:47:01 +0530 Subject: [PATCH 3/5] camx: upgrade lemans/hamoa/talos to v1.0.45 The camera package revisions for Lemans, Hamoa, Talos are released and validated together and have cross-package dependencies. Group the revision updates,camxtest version alignment, camera-nhx rename, SELinux policy updates and libcamera cleanup into a single commit to avoid intermediate non-buildable or inconsistent states. camxlib-lemans: upgrade v1.0.38 -> v1.0.45 - Add ox08d10 GMSL RB8 support for des1/des2/des3 - Update package contents to install and package the NHX executable as 'camera-nhx' instead of 'nhx.sh', aligning with the current naming convention. - Replace the hardcoded camxtest version in SRC_URI with ${PV} so the artifact version is derived from the recipe version. - The libbitml_nsp_73nb_skel.so symlink is now provided as part of the tarball, so the explicit symlink creation in the recipe is no longer required. - The OpenCL, EGL and GLES libraries are loaded dynamically at runtime and are not linked during the build. Move the conditional dependencies from DEPENDS to RRECOMMENDS to reflect their runtime usage and avoid unnecessary build-time dependencies. camxlib-hamoa: upgrade v1.0.41 -> v1.0.45 - Updated IMX688 tuning for new schema support, ADRC enablement, and recalibrated AEC/AWB/LSC parameters. Optimized BLC, noise reduction, gamma, and LDC tuning to improve overall image quality and KPI compliance. - Updated IMX577 tuning for new schema support and ADRC enablement. - Refined AEC/AWB, shading, BLC, ABF, LTM, and gamma tuning to improve low-light performance and overall image quality. camxlib-talos: upgrade v1.0.38 -> v1.0.45 - Add IMX858 and OV13B10 support for Talos Lyra EVK - Add IMX577 support for Talos Lyra EVK common.inc: Replace the hardcoded camxtest version in SRC_URI - Replace the hardcoded camxtest version in SRC_URI with ${PV} so the artifact version is derived from the recipe version. refpolicy-targeted: Rename nhx.sh to camera-nhx - The camera test launcher was renamed from nhx.sh to camera-nhx to follow the conventional command naming used for executables installed in /usr/bin. Update its SELinux file context so the renamed launcher continues to receive qcom_nhx_launcher_exec_t. No SELinux policy rules are changed. Signed-off-by: Rohit Biradar Signed-off-by: Ganesh Khose --- ...amoa_1.0.41.bb => camxlib-hamoa_1.0.45.bb} | 12 ++--- ...ans_1.0.38.bb => camxlib-lemans_1.0.45.bb} | 25 +++++----- .../camx/camxlib-talos_1.0.38.bb | 20 -------- .../camx/camxlib-talos_1.0.45.bb | 22 +++++++++ .../recipes-multimedia/camx/common.inc | 8 +-- ...1-Add-SELinux-policy-for-camera-nhx.patch} | 49 +++++++++---------- .../refpolicy/refpolicy-targeted_git.bbappend | 2 +- 7 files changed, 67 insertions(+), 71 deletions(-) rename dynamic-layers/openembedded-layer/recipes-multimedia/camx/{camxlib-hamoa_1.0.41.bb => camxlib-hamoa_1.0.45.bb} (62%) rename dynamic-layers/openembedded-layer/recipes-multimedia/camx/{camxlib-lemans_1.0.38.bb => camxlib-lemans_1.0.45.bb} (62%) delete mode 100644 dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-talos_1.0.38.bb create mode 100644 dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-talos_1.0.45.bb rename dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/{0001-Add-SELinux-policy-for-nhx.sh.patch => 0001-Add-SELinux-policy-for-camera-nhx.patch} (83%) diff --git a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-hamoa_1.0.41.bb b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-hamoa_1.0.45.bb similarity index 62% rename from dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-hamoa_1.0.41.bb rename to dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-hamoa_1.0.45.bb index f31092415..202fa9bf5 100644 --- a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-hamoa_1.0.41.bb +++ b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-hamoa_1.0.45.bb @@ -1,13 +1,13 @@ PLATFORM = "hamoa" -PBT_BUILD_DATE = "260826" +PBT_BUILD_DATE = "260910" require common.inc -SRC_URI[camxlib.sha256sum] = "70208241d530536878c202ac512f4e39019827b9feb2ba9177d904416dbab198" -SRC_URI[camx.sha256sum] = "7d2d59c06788a57487b43a0c6792b62822c8992718c15ab5811cdd03b169fc79" -SRC_URI[chicdk.sha256sum] = "5896081c3200da9c497079e217cae2c616cfd610ea2f2c80a6c5a636052de6bf" -SRC_URI[camxcommon.sha256sum] = "76b94b2af3ad33cf6ffcb768dfe42e85352adf231488e42b99de5575d191100e" -SRC_URI[camxtest.sha256sum] = "ccf1b6430bb494b34a0db616c7f1f7940fed925531c76f1a8ed2a7211381609c" +SRC_URI[camxlib.sha256sum] = "599f14eeb3cecd9d58d3009b45882ee04dbcbfee5319c3f46936828966ee883f" +SRC_URI[camx.sha256sum] = "60304da488b187331a74a268244d6346589d4ca39e7661845b9dbcc5078a1597" +SRC_URI[chicdk.sha256sum] = "8b38b92e6e03396508d306412933d962d5a200a7ee2f436e4ba48b70aff0f8b9" +SRC_URI[camxcommon.sha256sum] = "ac9bba4563019444f1f9460b6412f0041addaaf22e2925ea49a01f2b6e33327d" +SRC_URI[camxtest.sha256sum] = "d6ecd8d9a43d395fdb611ef904a879e194181d6208ee72df65712e70f2a5ae9f" do_install:append() { # copy skel file diff --git a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-lemans_1.0.38.bb b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-lemans_1.0.45.bb similarity index 62% rename from dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-lemans_1.0.38.bb rename to dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-lemans_1.0.45.bb index 3210309d1..23e071c81 100644 --- a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-lemans_1.0.38.bb +++ b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-lemans_1.0.45.bb @@ -1,16 +1,13 @@ PLATFORM = "lemans" -PBT_BUILD_DATE = "260825" +PBT_BUILD_DATE = "260910" require common.inc -SRC_URI[camxlib.sha256sum] = "d786afdae167643ad5feaad745ed14b741001060cf41e6174fe4f37cee8077f5" -SRC_URI[camx.sha256sum] = "fd57a206aa1ae4dd6ac95f71ceb2812f995b5ebbf32322fe693186c7359b9770" -SRC_URI[chicdk.sha256sum] = "31b7582c5c8f2f8a3412e9b99f3b689afda6b53efd1504d8864097ab73fd9c31" -SRC_URI[camxcommon.sha256sum] = "e2a8645a8ae22182cd62e612ecbb1d098b7fcee4e75e42778b79a88b2587bcfb" -SRC_URI[camxtest.sha256sum] = "628a94a198b5269812169e3bfbedf285b68cd3190e7102d9f076654fef3b9915" - -DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'virtual/libopencl1', '', d)}" -DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virtual/egl virtual/libgles2', '', d)}" +SRC_URI[camxlib.sha256sum] = "0888f786d032ed6cf91e097d761d8e6f49e6a0a960bbf57111a981705e321985" +SRC_URI[camx.sha256sum] = "e8a6c72e65e2449558100d291e672956da83816dc865493876d1a7955f03b71f" +SRC_URI[chicdk.sha256sum] = "0ea775319b58b93e7ecf392b1663bed1dc81b056b09a66dc00a7da5fb5a077ad" +SRC_URI[camxcommon.sha256sum] = "6cde038f80e4005ad03e530f498fb025125682c39a095c4dd01927256776c51e" +SRC_URI[camxtest.sha256sum] = "d49ebcf823d9ba600659080661950a504ed7ec7319d718fd7db85e0440bd5ce0" do_install:append() { # Copy json only when /etc folder exists in ${S} @@ -22,9 +19,6 @@ do_install:append() { cp -r ${S}/usr/share/camx ${D}${datadir} # copy skel file cp -r ${S}/usr/share/qcom ${D}${datadir} - install -d ${D}${datadir}/qcom/qcs8300/Qualcomm/QCS8300-RIDE/dsp/cdsp - ln -sr ${D}${datadir}/qcom/sa8775p/Qualcomm/SA8775P-RIDE/dsp/cdsp/libbitml_nsp_73nb_skel.so \ - ${D}${datadir}/qcom/qcs8300/Qualcomm/QCS8300-RIDE/dsp/cdsp/libbitml_nsp_73nb_skel.so # Remove OpenCL-dependent libraries when opencl is not enabled. if ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'false', 'true', d)}; then @@ -37,10 +31,13 @@ do_install:append() { RPROVIDES:${PN} = "camxlib-monaco" PACKAGE_BEFORE_PN += "camx-nhx ${PN}-skel" RDEPENDS:${PN} += "${PN}-skel" -RRECOMMENDS:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'virtual-opencl-icd', '', d)}" +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'libegl1 libglesv2-2', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', '${PREFERRED_PROVIDER_virtual/libopencl1}', '', d)} \ +" FILES:camx-nhx = "\ - ${bindir}/nhx.sh \ + ${bindir}/camera-nhx \ ${sysconfdir}/camera/test/NHX/ \ " FILES:${PN}-skel = "\ diff --git a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-talos_1.0.38.bb b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-talos_1.0.38.bb deleted file mode 100644 index a76e4a3d3..000000000 --- a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-talos_1.0.38.bb +++ /dev/null @@ -1,20 +0,0 @@ -PLATFORM = "talos" -PBT_BUILD_DATE = "260825" - -require common.inc - -SRC_URI[camxlib.sha256sum] = "bad5bb9ca3a99dda9665d0ddbe2f5ade10fb291ef7b954f279b378da9c56c63d" -SRC_URI[camx.sha256sum] = "f2e356e96b84bf77a764b16fcb1d947854ea6feec8f04682bb3202b165aaa76d" -SRC_URI[chicdk.sha256sum] = "4e6942bd426bb0dd9d5719674740c97f77e8ba4a17255e48a5ae9b554118082a" -SRC_URI[camxcommon.sha256sum] = "3400a71accf286d0539d05f7b55e9f7269a77c31c833e83742163d613be45ed3" -SRC_URI[camxtest.sha256sum] = "af51977b0cbd79e7d50088ac64ae643b98e1d7c11b0a419bd3319c88e185d258" - -DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'virtual/libopencl1', '', d)}" -DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virtual/egl virtual/libgles2', '', d)}" - -do_install:append() { - if ${@bb.utils.contains('DISTRO_FEATURES', 'opengl opencl', 'false', 'true', d)}; then - rm -f ${D}${libdir}/camx/${PLATFORM}/camera/components/libiwarp* - rm -f ${D}${libdir}/camx/${PLATFORM}/camera/components/libhidrx* - fi -} diff --git a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-talos_1.0.45.bb b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-talos_1.0.45.bb new file mode 100644 index 000000000..47a89f5a6 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-talos_1.0.45.bb @@ -0,0 +1,22 @@ +PLATFORM = "talos" +PBT_BUILD_DATE = "260910" + +require common.inc + +SRC_URI[camxlib.sha256sum] = "3f6b90a805a2c16d155cd8e19779d93a1a579e38793ef17841a37623acf0bd2d" +SRC_URI[camx.sha256sum] = "9a9b87a3117ac0ad6d38062e4d3f2772c8675399bb882216dc0fe25860b58777" +SRC_URI[chicdk.sha256sum] = "8c8f13e72bcece296a751b07d8a119a804a9b3769432672d95084b33bec3c384" +SRC_URI[camxcommon.sha256sum] = "adfdcba5f52d42b70223a9bb9d32b9ed497d35210657c5c52701b75a47f23288" +SRC_URI[camxtest.sha256sum] = "e038ed09189db4ee7bb593a586c26965cd7edb30493bf1d2c364377bcd165105" + +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'libegl1 libglesv2-2', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', '${PREFERRED_PROVIDER_virtual/libopencl1}', '', d)} \ +" + +do_install:append() { + if ${@bb.utils.contains('DISTRO_FEATURES', 'opengl opencl', 'false', 'true', d)}; then + rm -f ${D}${libdir}/camx/${PLATFORM}/camera/components/libiwarp* + rm -f ${D}${libdir}/camx/${PLATFORM}/camera/components/libhidrx* + fi +} diff --git a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/common.inc b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/common.inc index b0cda9c26..67eeddbf2 100644 --- a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/common.inc +++ b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/common.inc @@ -22,7 +22,7 @@ SRC_URI = " \ https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto_${PBT_BRANCH}/camx-${PLATFORM}_${PV}_armv8-2a.tar.gz;name=camx \ https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto_${PBT_BRANCH}/chicdk-${PLATFORM}_${PV}_armv8-2a.tar.gz;name=chicdk \ https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto_${PBT_BRANCH}/camxcommon-${PLATFORM}_${PV}_armv8-2a.tar.gz;name=camxcommon \ - https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto_${PBT_BRANCH}/camxtest-${PLATFORM}_1.0.38_armv8-2a.tar.gz;name=camxtest \ + https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto_${PBT_BRANCH}/camxtest-${PLATFORM}_${PV}_armv8-2a.tar.gz;name=camxtest \ " S = "${UNPACKDIR}" @@ -41,10 +41,10 @@ do_install:append() { install -d ${D}${datadir}/doc/chicdk-${PLATFORM} cp -r ${S}/usr/lib/* ${D}${libdir} - # Install bin files only if /usr/bin exists in ${S} - if [ -d "${S}${bindir}" ]; then + # Install camera-nhx files only if /usr/bin exists in ${S} + if [ -f "${S}${bindir}/camera-nhx" ]; then install -d ${D}${bindir} - cp -r ${S}/usr/bin/* ${D}${bindir} + cp -r ${S}/usr/bin/camera-nhx ${D}${bindir} fi # Install camera-nhx files only if /usr/libexec exists in ${S} if [ -d "${S}${libexecdir}" ]; then diff --git a/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/0001-Add-SELinux-policy-for-nhx.sh.patch b/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/0001-Add-SELinux-policy-for-camera-nhx.patch similarity index 83% rename from dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/0001-Add-SELinux-policy-for-nhx.sh.patch rename to dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/0001-Add-SELinux-policy-for-camera-nhx.patch index 931db5fc8..3b12603f7 100644 --- a/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/0001-Add-SELinux-policy-for-nhx.sh.patch +++ b/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/0001-Add-SELinux-policy-for-camera-nhx.patch @@ -1,25 +1,22 @@ -From 205fb1f91d9055c315ff3fcd57579b36f57b2897 Mon Sep 17 00:00:00 2001 +From 415d74377b612361f4122a95eca2649050e4fb50 Mon Sep 17 00:00:00 2001 From: Rohit Biradar -Date: Fri, 21 Aug 2026 01:17:34 +0530 -Subject: [PATCH] Add SELinux policy for nhx.sh +Date: Fri, 11 Sep 2026 12:09:08 +0530 +Subject: [PATCH] Add SELinux policy for camera-nhx -The proprietary camera testing script 'nhx.sh' currently executes in the -generic 'initrc_t' domain. This configuration lacks proper process -isolation and fails to define the specific permissions required -by the 'nativehaltest' application it launches. +The proprietary camera testing script 'camera-nhx' launches +'nativehaltest' for camera validation. Define a dedicated SELinux policy +module, qcom_nhx, to transition the launcher and nativehaltest into +confined domains. -Define a new policy module 'qcom_nhx' to transition these tools into -their own confined domains: -- qcom_nhx_launcher_t: For 'nhx.sh', allowing it to read - /sys/devices/soc0/soc_id for SoC detection. -- qcom_nhx_t: For 'nativehaltest', granting access to the CamX framework, - DMA, FastRPC, V4L video nodes, and camera cache directories. +- qcom_nhx_launcher_t: domain for 'camera-nhx', including SoC detection + through /sys/devices/soc0/soc_id. +- qcom_nhx_t: domain for 'nativehaltest', including access to the CamX + framework, DMA, FastRPC, V4L video nodes, camera cache directories, + and related camera runtime resources. -'nhx.sh' is installed to /usr/bin/. 'nativehaltest' is installed to -/usr/libexec/camx-/ rather than /usr/bin, since /usr/bin -should hold only flat, directly user-invocable executables, not -per-SoC subdirectories. Both depend on the closed-source CamX -framework, so this policy is inappropriate for upstream submission. +The 'camera-nhx' launcher is installed at /usr/bin/camera-nhx. +'nativehaltest' is installed at +/usr/libexec/camx-/nativehaltest. Upstream-Status: Inappropriate [Qualcomm specific change] @@ -49,14 +46,14 @@ index 0000000..f2dda81 +qcom_nhx = module diff --git a/policy/modules/services/qcom_nhx.fc b/policy/modules/services/qcom_nhx.fc new file mode 100644 -index 0000000..439993f +index 0000000..73c0a5a --- /dev/null +++ b/policy/modules/services/qcom_nhx.fc @@ -0,0 +1,10 @@ +# File contexts for Qualcomm NHX camera test launcher + -+# Label the nhx.sh launcher script -+/usr/bin/nhx\.sh -- gen_context(system_u:object_r:qcom_nhx_launcher_exec_t,s0) ++# Label the camera-nhx launcher script ++/usr/bin/camera-nhx -- gen_context(system_u:object_r:qcom_nhx_launcher_exec_t,s0) + +# Label nativehaltest binaries for different SoC families +/usr/libexec/camx-[^/]*/nativehaltest -- gen_context(system_u:object_r:qcom_nhx_exec_t,s0) @@ -65,7 +62,7 @@ index 0000000..439993f +/var/cache/camera(/.*)? gen_context(system_u:object_r:qcom_camera_cache_t,s0) diff --git a/policy/modules/services/qcom_nhx.if b/policy/modules/services/qcom_nhx.if new file mode 100644 -index 0000000..2f73e8f +index 0000000..0e491a0 --- /dev/null +++ b/policy/modules/services/qcom_nhx.if @@ -0,0 +1,89 @@ @@ -73,7 +70,7 @@ index 0000000..2f73e8f + +######################################## +## -+## Execute nhx launcher in the nhx_launcher domain. ++## Execute camera-nhx launcher in the nhx_launcher domain. +## +## +## @@ -92,7 +89,7 @@ index 0000000..2f73e8f + +######################################## +## -+## Execute nhx launcher in the nhx_launcher domain, and ++## Execute camera-nhx launcher in the nhx_launcher domain, and +## allow the specified role the nhx_launcher domain. +## +## @@ -160,7 +157,7 @@ index 0000000..2f73e8f +') diff --git a/policy/modules/services/qcom_nhx.te b/policy/modules/services/qcom_nhx.te new file mode 100644 -index 0000000..9ad9303 +index 0000000..2815ce2 --- /dev/null +++ b/policy/modules/services/qcom_nhx.te @@ -0,0 +1,91 @@ @@ -184,7 +181,7 @@ index 0000000..9ad9303 + +######################################## +# -+# qcom_nhx_launcher local policy (nhx.sh) ++# qcom_nhx_launcher local policy (camera-nhx) +# + +gen_require(` diff --git a/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted_git.bbappend b/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted_git.bbappend index 783964bf2..4bbf8e9a7 100644 --- a/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted_git.bbappend +++ b/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted_git.bbappend @@ -1,7 +1,7 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" SRC_URI:append:qcom = " \ - file://0001-Add-SELinux-policy-for-nhx.sh.patch \ + file://0001-Add-SELinux-policy-for-camera-nhx.patch \ ${@bb.utils.contains('MACHINE_FEATURES', 'optee', '', 'file://0002-Enable-the-tunable-flag-tee_supplicant_qtee.patch', d)} \ file://0003-seatd-allow-self-fifo_file-read-write-for-signal-han.patch \ file://0004-kernel-allow-module-loaders-to-use-net_admin.patch \ From 588f814b4ccf65942d26f50dac3cc88e38ae577c Mon Sep 17 00:00:00 2001 From: Ganesh Khose Date: Mon, 14 Sep 2026 21:49:01 +0530 Subject: [PATCH 4/5] camxlib-kodiak: upgrade v1.0.35 -> v1.0.41 - Add PIRIS(Precision Iris Control) support by integrating a lens driver manager in the camx sensor module and extending AEC framework to support PIRIS-based aperture control and exposure tuning. - Base 2A sync enablement in Kodiak. - Add logical device entry to support 2 concurrent sensors mcx usecase. - The OpenCL, EGL and GLES libraries are loaded dynamically at runtime and are not linked during the build. Move the conditional dependencies from DEPENDS to RRECOMMENDS to reflect their runtime usage and avoid unnecessary build-time dependencies. Signed-off-by: Ganesh Khose --- ...iak_1.0.35.bb => camxlib-kodiak_1.0.41.bb} | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) rename dynamic-layers/openembedded-layer/recipes-multimedia/camx/{camxlib-kodiak_1.0.35.bb => camxlib-kodiak_1.0.41.bb} (91%) diff --git a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.35.bb b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.41.bb similarity index 91% rename from dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.35.bb rename to dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.41.bb index 6aec69153..7dbb3bbc0 100644 --- a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.35.bb +++ b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-kodiak_1.0.41.bb @@ -8,7 +8,7 @@ LICENSE = "LicenseRef-LICENSE.qcom-2" LIC_FILES_CHKSUM = "file://usr/share/doc/${BPN}/LICENSE.QCOM-2.txt;md5=165287851294f2fb8ac8cbc5e24b02b0 \ file://usr/share/doc/${BPN}/NOTICE;md5=04facc2e07e3d41171a931477be0c690" -PBT_BUILD_DATE = "260825" +PBT_BUILD_DATE = "260910" PBT_BRANCH = "master" SRC_URI = " \ https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto_${PBT_BRANCH}/${BPN}_${PV}_armv8-2a.tar.gz;name=camxlib \ @@ -16,20 +16,15 @@ SRC_URI = " \ https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto_${PBT_BRANCH}/chicdk-kodiak_${PV}_armv8-2a.tar.gz;name=chicdk \ https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto_${PBT_BRANCH}/camxtest-kodiak_${PV}_armv8-2a.tar.gz;name=camxtest \ " -SRC_URI[camxlib.sha256sum] = "694c66493b5459bde8734ba416673ec93e5abdbabef5cbd9f86a60a52e09eb1b" -SRC_URI[camx.sha256sum] = "7ab9838704139cbb52bc9c9c0277edaa2eabadf6dfd6719cf8aa93a4e7d9f29b" -SRC_URI[chicdk.sha256sum] = "b0800ae386afa8f3ddac704d5e67a6f71d9a270acb3e2bc793a5b56a6d829417" -SRC_URI[camxtest.sha256sum] = "26653dcaa7974c6b44fa5f3dc8560cd8d7f8b33c8ceae337ed0e43fb49d3e2a1" +SRC_URI[camxlib.sha256sum] = "b47924c3dcdb7335ef113375c7bb54523478544986013f43af8af4291b93ab6f" +SRC_URI[camx.sha256sum] = "74d41e6bea69f5fa1bcadd56e4fd671173dc82e23ad7b32577262c795304af0b" +SRC_URI[chicdk.sha256sum] = "bba4027c1cd04a769b098ccffe0c3bec942cb3a8ec914c39d757eb047afb0ff4" +SRC_URI[camxtest.sha256sum] = "d72999d60fff15a240237cd4c0d0ea5cccc69977656d44b9e9844ec91725f122" S = "${UNPACKDIR}" DEPENDS += "glib-2.0 fastrpc protobuf libxml2 qmi-framework sensinghub qcom-sensors-binaries" -DEPENDS += " \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virtual/egl virtual/libgles2', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'virtual/libopencl1', '', d)} \ -" - # This package is currently only used and tested on ARMv8 (aarch64) machines. # Therefore, builds for other architectures are not necessary and are explicitly excluded. COMPATIBLE_MACHINE = "^$" @@ -96,7 +91,11 @@ do_install:append() { PACKAGE_BEFORE_PN += "camx-kodiak chicdk-kodiak ${PN}-skel" RDEPENDS:${PN} += "chicdk-kodiak ${PN}-skel" RDEPENDS:${PN}-dev += "camxcommon-headers-dev" -RRECOMMENDS:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'virtual-opencl-icd', '', d)} sensinghub qcom-sensors-binaries" +RRECOMMENDS:${PN} += "sensinghub" +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'libegl1 libglesv2-2', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', '${PREFERRED_PROVIDER_virtual/libopencl1}', '', d)} \ +" FILES:camx-kodiak = "\ ${libdir}/libcamx_hardware_kodiak*${SOLIBS} \ From 28692863ae5da84706284950c7acf0507a4b04a2 Mon Sep 17 00:00:00 2001 From: Ganesh Khose Date: Fri, 11 Sep 2026 21:49:34 +0530 Subject: [PATCH 5/5] camxlib-shikra:Add Qualcomm Camera X (CamX) module for Shikra Introduce camxlib recipe which delivers three components: - camx: Core CamX engine for managing camera pipelines and interfacing with hardware. - camxlib: Image processing algorithms and hardware support libraries extending CamX functionalities. Uses openCV version 3.1. - chicdk: Camera hardware interface developer kit providing a configurable mechanism for use case selection and camera pipeline creation. Signed-off-by: Ganesh Khose --- .../camx/camxlib-shikra_1.0.46.bb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-shikra_1.0.46.bb diff --git a/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-shikra_1.0.46.bb b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-shikra_1.0.46.bb new file mode 100644 index 000000000..eb9322543 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-multimedia/camx/camxlib-shikra_1.0.46.bb @@ -0,0 +1,16 @@ +PLATFORM = "shikra" +PBT_BUILD_DATE = "260911" + +require common.inc + +SRC_URI[camxlib.sha256sum] = "e090945d93a9de0fb64470480a87cb63c8773caab9bbf17212b31605f7d6417b" +SRC_URI[camx.sha256sum] = "ef372d5cb3a3f5303d13799e3f866c3f882127fc7bf4d9d80e1d2e131410f7b1" +SRC_URI[chicdk.sha256sum] = "f1ad3e91ce9902bd1135bb36f626741dcae20d5cf0fbafd8e6c6cec2678afa33" +SRC_URI[camxcommon.sha256sum] = "9ce4b129b55c2d81b478e7666dc95377339ab3ffa83a47b2ff2bad9d861d2f97" +SRC_URI[camxtest.sha256sum] = "5cbb58e6d3a2cd7565c68a6a660272ba80951570b881c57d1d276ada1d016f33" + +DEPENDS += "sensinghub" +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'libegl1 libglesv2-2', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', '${PREFERRED_PROVIDER_virtual/libopencl1}', '', d)} \ +"