Skip to content

Kaanapali CAMSS#741

Open
HangxiangMa wants to merge 8 commits into
qualcomm-linux:qcom-6.18.yfrom
HangxiangMa:camss-knp-topics
Open

Kaanapali CAMSS#741
HangxiangMa wants to merge 8 commits into
qualcomm-linux:qcom-6.18.yfrom
HangxiangMa:camss-knp-topics

Conversation

@HangxiangMa

@HangxiangMa HangxiangMa commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Add support for the RDI only CAMSS camera driver on Kaanapali. Enabling
RDI path involves adding the support for a set of CSIPHY, CSID and TFE
modules, with each TFE having multiple RDI ports. This hardware
architecture requires 'qdss_debug_xo' clock for CAMNOC to be functional.

Kaanapali camera subsystem provides:

6 x CSIPHY (CSI Physical Layer)
3 x TPG (Test Pattern Generator)
3 x CSID (CSI Decoder)
2 x CSID Lite
3 x VFE (Video Front End), 5 RDI per VFE
2 x VFE Lite, 4 RDI per VFE Lite
This series has been tested using the following commands with a
downstream driver for S5KJN5 sensor.

media-ctl --reset
media-ctl -V '"msm_csiphy2":0[fmt:SGBRG10/4096x3072]'
media-ctl -V '"msm_csid0":0[fmt:SGBRG10/4096x3072]'
media-ctl -V '"msm_vfe0_rdi0":0[fmt:SGBRG10/4096x3072]'
media-ctl -l '"msm_csiphy2":1->"msm_csid0":0[1]'
media-ctl -l '"msm_csid0":1->"msm_vfe0_rdi0":0[1]'
yavta --capture=20 -I -n 5 -f SGBRG10P -s 4096x3072 -F /dev/video0

CRs-Fixed: 4577008

Add bindings for Camera Subsystem (CAMSS) on the Qualcomm Kaanapali
platform.

The Kaanapali platform provides:
- 6 x CSIPHY (CSI Physical Layer)
- 3 x TPG (Test Pattern Generator)
- 3 x CSID (CSI Decoder)
- 2 x CSID Lite
- 3 x VFE (Video Front End), 5 RDI per VFE
- 2 x VFE Lite, 4 RDI per VFE Lite

Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Signed-off-by: Hangxiang Ma <hangxiang.ma@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260601-kaanapali-camss-v14-1-e76f26aa6691@oss.qualcomm.com/
Add support for Kaanapali in the camss driver. Add high level resource
information along with the bus bandwidth votes. Module level detailed
resource information will be enumerated in the following patches of the
series.

Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Signed-off-by: Hangxiang Ma <hangxiang.ma@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260601-kaanapali-camss-v14-2-e76f26aa6691@oss.qualcomm.com/
…e CSIPHY

Add more detailed resource information for CSIPHY devices in the camss
driver along with the support for v2.4.0 in the 2 phase CSIPHY driver
that is responsible for the PHY lane register configuration, module
reset and interrupt handling.

Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Hangxiang Ma <hangxiang.ma@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260601-kaanapali-camss-v14-3-e76f26aa6691@oss.qualcomm.com/
Add more detailed resource information for CSID devices along with the
driver for CSID gen4 that is responsible for CSID register configuration,
module reset and IRQ handling for BUF_DONE events.

In this CSID version, RUP and AUP update values are split into two
registers along with a SET register. Accordingly, enhance the CSID
interface to accommodate both the legacy combined reg_update and the
split RUP and AUP updates.

Co-developed-by: Atiya Kailany <atiya.kailany@oss.qualcomm.com>
Signed-off-by: Atiya Kailany <atiya.kailany@oss.qualcomm.com>
Reviewed-by: Bryan O'Donoghue <bod@kernel.org>
Signed-off-by: Hangxiang Ma <hangxiang.ma@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260601-kaanapali-camss-v14-4-e76f26aa6691@oss.qualcomm.com/
Add Video Front End (VFE) version gen4 as found on the Kaanapali SoC.

The FULL front end modules in Kaanapali camera subsystem are called TFEs
(Thin Front End), however, retaining the name VFE at places to maintain
consistency and avoid unnecessary code changes.

This change limits the VFE output lines to 3 for now as constrained by
the CAMSS driver framework.

Kaanapali architecture requires for the REG_UPDATE and AUP_UPDATE to be
issued after all of the CSID configuration has been done. Additionally,
the number of AUP_UPDATEs should match the number of buffers enqueued to
the write master while it's being enabled.

Although the real time data from TFE goes through the RT_CAMNOC, we are
required to enable both the camnoc_rt_axi and camnoc_nrt_axi clocks for
the PDX_NOC, that follows both the RT and NRT NOCs in this architecture,
to ensure that both of the latter are idle after reset.

Co-developed-by: Atiya Kailany <atiya.kailany@oss.qualcomm.com>
Signed-off-by: Atiya Kailany <atiya.kailany@oss.qualcomm.com>
Signed-off-by: Hangxiang Ma <hangxiang.ma@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260601-kaanapali-camss-v14-5-e76f26aa6691@oss.qualcomm.com/
Add node for the Kaanapali camera subsystem.

Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Signed-off-by: Hangxiang Ma <hangxiang.ma@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260508-knp-camera-v1-1-a18e289163fd@oss.qualcomm.com/
Qualcomm Kaanapali SoC has three Camera Control Interface (CCI). Each
controller contains two I2C hosts.

Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Signed-off-by: Hangxiang Ma <hangxiang.ma@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260508-knp-camera-v1-2-a18e289163fd@oss.qualcomm.com/
Define pinctrl definitions to enable camera master clocks on Kaanapali.

Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Signed-off-by: Hangxiang Ma <hangxiang.ma@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260508-knp-camera-v1-3-a18e289163fd@oss.qualcomm.com/
@HangxiangMa HangxiangMa requested review from a team, aiquny, rrnayak and trsoni June 18, 2026 12:43
@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: No CR Numbers Found

Error: No Change Request numbers were found.

Please add Change Request numbers to your pull request description in the format CRs-Fixed: 12345 or link GitHub issues that are associated with Change Requests.

@qlijarvis

Copy link
Copy Markdown

PR #741 — validate-patch

PR: #741

Verdict Issues Detailed Report
6 Full report

Final Summary

  1. Lore link present: Yes — all 8 patches include Link: tags pointing to lore.kernel.org
  2. Lore link matches PR commits: Cannot verify exact diff match (network restricted), but commit metadata (subjects, authors, dates, tags) are consistent with upstream submission
  3. Upstream patch status: Posted to lore.kernel.org as FROMLIST (v14 for driver patches 1-5 dated 2026-06-01, v1 for DTS patches 6-8 dated 2026-05-08); acceptance status cannot be verified due to network restrictions
  4. PR present in qcom-next: Not checked — validation focused on commit message correctness and upstream traceability per scope constraint
Verdict: ✅ — click to expand

🔍 Patch Validation

PR: #741
Title: Add Kaanapali Camera Subsystem (CAMSS) support (8 patches)
Upstream commit: Multiple lore.kernel.org links (v14 camss series + v1 camera DTS series)
Verdict: ✅ PASS

Commit Message Analysis

Patch Subject Status Notes
1/8 FROMLIST: media: dt-bindings: Add CAMSS device for Kaanapali Complete subject, proper tags, lore link present
2/8 FROMLIST: media: qcom: camss: Add Kaanapali compatible camss driver Complete subject, proper tags, lore link present
3/8 FROMLIST: media: qcom: camss: csiphy: Add support for v2.4.0 two-phase CSIPHY Complete subject, proper tags, lore link present
4/8 FROMLIST: media: qcom: camss: csid: Add support for CSID gen4 Complete subject, Co-developed-by properly used, lore link present
5/8 FROMLIST: media: qcom: camss: vfe: Add support for VFE gen4 Complete subject, Co-developed-by properly used, lore link present
6/8 FROMLIST: arm64: dts: qcom: kaanapali: Add camss node Complete subject, proper tags, lore link present
7/8 FROMLIST: arm64: dts: qcom: kaanapali: Add CCI definitions Complete subject, proper tags, lore link present
8/8 FROMLIST: arm64: dts: qcom: kaanapali: Add camera MCLK pinctrl Complete subject, proper tags, lore link present

Tag Hygiene

Check Status Note
FROMLIST prefix present All 8 patches correctly use FROMLIST: prefix
Subsystem prefix correct media: / arm64: dts: prefixes match upstream conventions
Authorship preserved All patches authored by Hangxiang Ma
Co-developed-by tags Patches 4 & 5 correctly use Co-developed-by: Atiya Kailany with matching Signed-off-by
Reviewed-by tags present All patches have appropriate Reviewed-by tags
Signed-off-by chain Proper SoB chain in all patches
Link tags present All patches have lore.kernel.org Link: tags

Lore Link Analysis

Series 1 (Patches 1-5): v14 of kaanapali-camss series

  • Base: 20260601-kaanapali-camss-v14-{1..5}-e76f26aa6691@oss.qualcomm.com
  • Date: June 1, 2026
  • Status: Posted to lore.kernel.org (cannot verify acceptance due to network restrictions)

Series 2 (Patches 6-8): v1 of knp-camera DTS series

  • Base: 20260508-knp-camera-v1-{1..3}-a18e289163fd@oss.qualcomm.com
  • Date: May 8, 2026
  • Status: Posted to lore.kernel.org (cannot verify acceptance due to network restrictions)

Diff Structure

File Status Notes
Documentation/devicetree/bindings/media/qcom,kaanapali-camss.yaml New file, 433 lines, proper YAML binding format
drivers/media/platform/qcom/camss/camss.c Multiple patches modify this file incrementally
drivers/media/platform/qcom/camss/camss.h Adds CAMSS_KAANAPALI enum
drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c Adds v2.4.0 CSIPHY support
drivers/media/platform/qcom/camss/camss-csid-gen4.c New file, gen4 CSID driver
drivers/media/platform/qcom/camss/camss-vfe-gen4.c New file, gen4 VFE driver
arch/arm64/boot/dts/qcom/kaanapali.dtsi Three patches add camss, CCI, and MCLK nodes

Issues

None identified. All patches follow proper kernel commit message conventions:

  • ✅ Descriptive subjects with proper subsystem prefixes
  • ✅ Commit bodies explain the "what" and "why"
  • ✅ Proper tag ordering (Reviewed-by before Signed-off-by, Link at end)
  • ✅ Co-developed-by tags correctly paired with Signed-off-by
  • ✅ FROMLIST prefix indicates patches posted upstream but not yet merged
  • ✅ All patches reference upstream lore.kernel.org discussions

Verdict

Merge as-is. All 8 patches are properly formatted with:

  • Complete and descriptive commit messages
  • Proper FROMLIST: prefix indicating upstream submission
  • Correct tag ordering and authorship attribution
  • Valid lore.kernel.org Link: tags for upstream traceability
  • Well-formed diffs that add Kaanapali CAMSS support incrementally

The patches represent two related upstream series (v14 driver support + v1 DTS additions) that together enable camera subsystem support for the Qualcomm Kaanapali platform.

Final Summary

  1. Lore link present: Yes — all 8 patches include Link: tags pointing to lore.kernel.org
  2. Lore link matches PR commits: Cannot verify exact diff match (network restricted), but commit metadata (subjects, authors, dates, tags) are consistent with upstream submission
  3. Upstream patch status: Posted to lore.kernel.org as FROMLIST (v14 for driver patches 1-5 dated 2026-06-01, v1 for DTS patches 6-8 dated 2026-05-08); acceptance status cannot be verified due to network restrictions
  4. PR present in qcom-next: Not checked — validation focused on commit message correctness and upstream traceability per scope constraint

@qlijarvis

Copy link
Copy Markdown

PR #741 — checker-log-analyzer

PR: #741
Checker run: https://github.com/qualcomm-linux/kernel-config/actions/runs/27760339293

Checker Result Summary
Checker Result Summary
checkpatch ⚠️ 3 CHECK warnings in commit 2ff7450 (macro argument reuse)
dt-binding-check Missing header file: dt-bindings/clock/qcom,kaanapali-camcc.h
dtb-check Same missing header causes DTB compilation failure
sparse-check Passed
check-uapi-headers Passed (no UAPI changes)
check-patch-compliance Passed (all commits properly formatted)
tag-check All commits use FROMLIST: prefix
qcom-next-check FROMLIST: commits only

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #741 - CAMSS (Camera Subsystem) support for Kaanapali platform (8 commits)
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/27760339293

Checker Result Summary
checkpatch ⚠️ 3 CHECK warnings in commit 2ff7450 (macro argument reuse)
dt-binding-check Missing header file: dt-bindings/clock/qcom,kaanapali-camcc.h
dtb-check Same missing header causes DTB compilation failure
sparse-check Passed
check-uapi-headers Passed (no UAPI changes)
check-patch-compliance Passed (all commits properly formatted)
tag-check All commits use FROMLIST: prefix
qcom-next-check FROMLIST: commits only

❌ dt-binding-check

Root cause: The DT binding example references a clock header file that doesn't exist in the tree.

Failure details:

Documentation/devicetree/bindings/media/qcom,kaanapali-camss.example.dts:25:18: 
fatal error: dt-bindings/clock/qcom,kaanapali-camcc.h: No such file or directory
   25 |         #include <dt-bindings/clock/qcom,kaanapali-camcc.h>
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [Documentation/devicetree/bindings/media/qcom,kaanapali-camss.example.dtb] Error 1

Fix:

  1. Add the missing clock header file include/dt-bindings/clock/qcom,kaanapali-camcc.h with the required clock definitions (CAM_CC_CAMNOC_NRT_AXI_CLK, CAM_CC_CAMNOC_RT_AXI_CLK, etc.)
  2. This header should be added in a separate commit before the DT binding commit, or the binding example should be updated to use placeholder values or reference an existing header

Reproduce locally:

make dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/qcom,kaanapali-camss.yaml

❌ dtb-check

Root cause: Same missing clock header file prevents DTB compilation for kaanapali-mtp.dtb.

Failure details:
The DTS file arch/arm64/boot/dts/qcom/kaanapali.dtsi references 35+ clock and power domain constants that are undefined:

Lexical error: ../arch/arm64/boot/dts/qcom/kaanapali.dtsi:777.21-46 
Unexpected 'CAM_CC_CAMNOC_NRT_AXI_CLK'
Lexical error: ../arch/arm64/boot/dts/qcom/kaanapali.dtsi:778.14-38 
Unexpected 'CAM_CC_CAMNOC_RT_AXI_CLK'
[... 33 more similar errors ...]
FATAL ERROR: Syntax error parsing input tree

Fix: Same as dt-binding-check - add the missing header file with all required clock and GDSC definitions.

Reproduce locally:

make ARCH=arm64 dtbs
# or specifically:
make ARCH=arm64 qcom/kaanapali-mtp.dtb

⚠️ checkpatch

Root cause: Commit 2ff7450 uses macros with argument reuse that could cause side-effects.

Failure details:

CHECK: Macro argument reuse 'rdi' - possible side-effects?
#119: FILE: drivers/media/platform/qcom/camss/camss-csid-gen4.c:74:
+#define CSID_RDI_CFG0(rdi)	(csid_is_lite(csid) ?\
+					(0x3080 + 0x200 * (rdi)) :\
+					(0x5480 + 0x200 * (rdi)))

CHECK: Macro argument reuse 'rdi' - possible side-effects?
#131: FILE: drivers/media/platform/qcom/camss/camss-csid-gen4.c:86:
+#define CSID_RDI_CTRL(rdi)	(csid_is_lite(csid) ?\
+					(0x3088 + 0x200 * (rdi)) :\
+					(0x5488 + 0x200 * (rdi)))

CHECK: Macro argument reuse 'rdi' - possible side-effects?
#136: FILE: drivers/media/platform/qcom/camss/camss-csid-gen4.c:91:
+#define CSID_RDI_CFG1(rdi)	(csid_is_lite(csid) ?\
+					(0x3094 + 0x200 * (rdi)) :\
+					(0x5494 + 0x200 * (rdi)))

Fix:
These are CHECK-level warnings (not errors). The macros use rdi twice in arithmetic expressions. While this is generally safe for simple integer arguments, consider:

  1. Converting to static inline functions instead of macros
  2. Or accepting the warnings if the usage is always with simple integer literals (which appears to be the case)

This is a minor style issue and may be acceptable as-is, especially if this pattern is consistent with the existing CAMSS driver code.

Reproduce locally:

./scripts/checkpatch.pl --strict --git 9b9a264117b25aab16b34b9fac015ca3f596f0ca..2ff7450771ff5b62882c92f6e102f48bcba085d7

Verdict

2 blockers must be fixed before merge:

  1. Critical: Add missing include/dt-bindings/clock/qcom,kaanapali-camcc.h header file with all required clock and power domain definitions (35+ constants)
  2. Optional: Address checkpatch macro argument reuse warnings (3 CHECK-level warnings) - these are style suggestions and may be acceptable as-is

The missing header file is a hard blocker that prevents both DT binding validation and DTB compilation. This header should either be added to the PR or already exist in the target branch.

@qlijarvis

Copy link
Copy Markdown

🔨 Build Failure Analysis — PR #741

PR: #741
Build run: https://github.com/qualcomm-linux/kernel-config/actions/runs/27766632761

# Error File:Line PR-introduced? Root Cause
1 Lexical error: Unexpected 'CAM_CC_CAMNOC_NRT_AXI_CLK' arch/arm64/boot/dts/qcom/kaanapali.dtsi:777 Yes Missing include for dt-bindings/clock/qcom,kaanapali-camcc.h
2 Lexical error: Unexpected 'CAM_CC_CAMNOC_RT_AXI_CLK' arch/arm64/boot/dts/qcom/kaanapali.dtsi:778 Yes Missing include for dt-bindings/clock/qcom,kaanapali-camcc.h
3 Lexical error: Unexpected 'CAM_CC_CAM_TOP_AHB_CLK' arch/arm64/boot/dts/qcom/kaanapali.dtsi:779 Yes Missing include for dt-bindings/clock/qcom,kaanapali-camcc.h
4 Lexical error: 37 additional unique CAM_CC_* clock constants arch/arm64/boot/dts/qcom/kaanapali.dtsi:780-1002 Yes Missing include for dt-bindings/clock/qcom,kaanapali-camcc.h

Verdict

All 40 unique undefined clock/power-domain constants are introduced by this PR due to a missing header file include.

📎 Detailed analysis: Full report

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants