Skip to content

Monza Waveshare DSI 8-inch-a panel support - #953

Open
qti-ssmaurya wants to merge 9 commits into
qualcomm-linux:qcom-6.18.yfrom
qti-ssmaurya:waveshare-dsi
Open

Monza Waveshare DSI 8-inch-a panel support#953
qti-ssmaurya wants to merge 9 commits into
qualcomm-linux:qcom-6.18.yfrom
qti-ssmaurya:waveshare-dsi

Conversation

@qti-ssmaurya

Copy link
Copy Markdown

Backports Waveshare DSI TOUCH panel family support (mainline waveshare,8.0-dsi-touch-a and related compatibles) plus the companion GPIO controller driver used for panel/touch power and reset control on
these boards.

Upstream references:

Both are merged in linux-next but not yet in Linus' tree, so all 9 commits are tagged FROMGIT: rather than UPSTREAM:.

Commits (in order)

  1. FROMGIT: drm/of: add helper to count data-lanes on a remote endpoint
  2. FROMGIT: dt-bindings: display/panel: jadard,jd9365da-h3: describe Waveshare panel
  3. FROMGIT: drm/panel: jadard-jd9365da-h3: use drm_connector_helper_get_modes_fixed
  4. FROMGIT: drm/panel: jadard-jd9365da-h3: support variable DSI configuration
  5. FROMGIT: drm/panel: jadard-jd9365da-h3: set prepare_prev_first
  6. FROMGIT: drm/panel: jadard-jd9365da-h3: support Waveshare round DSI panels
  7. FROMGIT: drm/panel: jadard-jd9365da-h3: support Waveshare WXGA DSI panels
  8. FROMGIT: dt-bindings: gpio: describe Waveshare GPIO controller
  9. FROMGIT: gpio: add GPIO controller found on Waveshare DSI TOUCH panels

If the DSI panel supports versatile lanes configuration, its driver
might require determining the number of DSI data lanes, which is usually
specified on the DSI host side of the OF graph. Add new helper as a
pair to drm_of_get_data_lanes_count_ep() that lets callers determine
number of data-lanes on the remote side of the OF graph.

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patch.msgid.link/20260413-waveshare-dsi-touch-v3-6-3aeb53022c32@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit a8c56e0)
…eshare panel

Describe Waveshare DSI panels which use JD9365 as a panel controller.

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Link: https://patch.msgid.link/20260413-waveshare-dsi-touch-v3-3-3aeb53022c32@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit d13d930)
…modes_fixed

Use existing helper instead of manually coding it.

Reviewed-by: Linus Walleij <linusw@kernel.org>
Link: https://patch.msgid.link/20260413-waveshare-dsi-touch-v3-11-3aeb53022c32@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit 0a26b74)
…ation

Several panels support attachment either using 4 DSI lanes or just 2. In
some cases, this requires a different panel mode to fulfill clock
requirements. Extend the driver to handle such cases by letting the
panel description to omit lanes specification and parsing number of
lanes from the DT.

Reviewed-by: Linus Walleij <linusw@kernel.org>
Tested-by: Riccardo Mereu <r.mereu@arduino.cc>
Link: https://patch.msgid.link/20260413-waveshare-dsi-touch-v3-12-3aeb53022c32@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit eb01968)
Sending DSI commands from the prepare() callback requires DSI link to be
up at that point. For DSI hosts is guaranteed only if the panel driver
sets the .prepare_prev_first flag. Set it to let these panels work with
the DSI hosts which don't power on the link in their .mode_set callback.

Reviewed-by: Linus Walleij <linusw@kernel.org>
Tested-by: Riccardo Mereu <r.mereu@arduino.cc>
Link: https://patch.msgid.link/20260413-waveshare-dsi-touch-v3-13-3aeb53022c32@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit b55a4b5)
…anels

Add configuration for Waveshare 3.4" and 4.0" round DSI panels using
JD9365 controller.

Tested-by: Riccardo Mereu <r.mereu@arduino.cc>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patch.msgid.link/20260413-waveshare-dsi-touch-v3-14-3aeb53022c32@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit ba362fb)
…nels

Add configuration for several Waveshare 8.0" and 10.1" WXGA DSI panels
using JD9365 controller

Tested-by: Riccardo Mereu <r.mereu@arduino.cc>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patch.msgid.link/20260413-waveshare-dsi-touch-v3-15-3aeb53022c32@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit 5a7770a)
The Waveshare DSI TOUCH family of panels has separate on-board GPIO
controller, which controls power supplies to the panel and the touch
screen and provides reset pins for both the panel and the touchscreen.
Also it provides a simple PWM controller for panel backlight.

Add bindings for these GPIO controllers. As overall integration might be
not very obvious (and it differs significantly from the bindings used by
the original drivers), provide complete example with the on-board
regulators and the DSI panel.

Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://patch.msgid.link/20260507-waveshare-dsi-touch-v5-1-d2ac7ccc22d4@oss.qualcomm.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
(cherry picked from commit 8cd19f5)
The Waveshare DSI TOUCH family of panels has separate on-board GPIO
controller, which controls power supplies to the panel and the touch
screen and provides reset pins for both the panel and the touchscreen.
Also it provides a simple PWM controller for panel backlight. Add
support for this GPIO controller.

Tested-by: Riccardo Mereu <r.mereu@arduino.cc>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://patch.msgid.link/20260507-waveshare-dsi-touch-v5-2-d2ac7ccc22d4@oss.qualcomm.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
(cherry picked from commit 79f44c8)
@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.

2 similar comments
@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.

@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 #953 — validate-patch

PR: #953

Verdict Issues Detailed Report
⚠️ 4 Full report

Final Summary

  1. Lore link present: Yes - all 9 commits have Link: tags pointing to patch.msgid.link (lore.kernel.org redirect service)

  2. Lore link matches PR commits: Cannot verify - lore patches were not fetched despite valid Link: tags being present. The lore_evidence/README.md incorrectly reported "no lore.kernel.org Link tags found". Manual fetch and comparison required.

  3. Upstream patch status: Cannot verify - lore threads not analyzed. All commits have cherry-pick notes with upstream SHAs (a8c56e0, d13d930, 0a26b74, eb01968, b55a4b5, ba362fb, 5a7770a, 8cd19f5, 79f44c8) and upstream review tags (Reviewed-by/Acked-by), indicating they were accepted upstream. Prefix is FROMGIT: suggesting maintainer tree, but mainline merge status unknown.

  4. PR present in qcom-next/topics: Partial - 1/9 commit(s) only have partial integration evidence

Verdict: ⚠️ — click to expand

🔍 Patch Validation

PR: #953 - FROMGIT: drm/of, dt-bindings, drm/panel, gpio: Waveshare DSI panel and GPIO controller support (9 commits)
Upstream commits: Multiple lore.kernel.org links via patch.msgid.link
Verdict: ⚠️ PARTIAL

Commit Message

Check Status Note
Subject matches upstream ⚠️ Cannot verify - lore patches not fetched; subjects appear well-formed with FROMGIT: prefix
Body preserves rationale ⚠️ Cannot verify - lore patches not fetched; commit bodies present and descriptive
Fixes tag present/correct N/A - feature additions, no Fixes tags expected
Authorship preserved ⚠️ Cannot verify - lore patches not fetched; all commits From: Dmitry Baryshkov
Backport note (if applicable) All 9 commits have proper cherry-pick notes with upstream SHAs

Diff

File Status Notes
All changed files (9 commits) ⚠️ Cannot verify diff faithfulness - lore patches not fetched; cherry-pick SHAs present for verification

Issues

Lore Evidence Missing: The lore_evidence/README.md incorrectly reports "no lore.kernel.org Link tags found" but all 9 commits contain valid Link: tags using patch.msgid.link (a lore.kernel.org redirect service). The lore patches were not fetched, preventing full validation of:

  • Subject line exact match
  • Commit body faithfulness
  • Diff content comparison
  • Original authorship verification

Integration Presence: According to integration_presence_report.md, commit 3/9 (drm/panel: jadard-jd9365da-h3: use drm_connector_helper_get_modes_fixed) shows only "partial" presence in qcom-next/topics. The report states "subject or partial tree evidence found, but full change was not verified" for both qcom-next and topics branches.

Prefix Consistency: All commits use FROMGIT: prefix with cherry-pick notes containing upstream SHAs. This is appropriate for commits from a maintainer's git tree. However, if these commits are already merged into Linus's mainline tree (not just a maintainer tree), the prefix should be UPSTREAM: instead. Cannot verify mainline status without lore thread analysis.

Verdict

Cannot fully validate - The lore patches were not fetched despite valid Link: tags being present in all commits. Manual verification required:

  1. Fetch lore patches using the Link: tags (patch.msgid.link URLs)
  2. Compare diff content against fetched patches
  3. Verify authorship matches lore From: headers
  4. Confirm upstream merge status (mainline vs maintainer tree) to validate FROMGIT: prefix usage
  5. Investigate commit 3/9 partial integration presence

Positive indicators:

  • All 9 commits have proper Link: tags
  • All 9 commits have cherry-pick notes with upstream SHAs
  • All 9 commits have Reviewed-by or Acked-by tags from upstream reviewers
  • Consistent authorship (Dmitry Baryshkov) across all commits
  • 8/9 commits confirmed present in qcom-next

Final Summary

  1. Lore link present: Yes - all 9 commits have Link: tags pointing to patch.msgid.link (lore.kernel.org redirect service)

  2. Lore link matches PR commits: Cannot verify - lore patches were not fetched despite valid Link: tags being present. The lore_evidence/README.md incorrectly reported "no lore.kernel.org Link tags found". Manual fetch and comparison required.

  3. Upstream patch status: Cannot verify - lore threads not analyzed. All commits have cherry-pick notes with upstream SHAs (a8c56e0, d13d930, 0a26b74, eb01968, b55a4b5, ba362fb, 5a7770a, 8cd19f5, 79f44c8) and upstream review tags (Reviewed-by/Acked-by), indicating they were accepted upstream. Prefix is FROMGIT: suggesting maintainer tree, but mainline merge status unknown.

  4. PR present in qcom-next/topics: Partial - 8/9 commits fully present in qcom-next; commit 3/9 (drm/panel: jadard-jd9365da-h3: use drm_connector_helper_get_modes_fixed) has only partial integration evidence per integration_presence_report.md

Deterministic Integration Presence

Integration Presence Report

This report is generated by Jarvis before validate-patch runs.
It is the authoritative source for whether PR changes are already present
in qcom-next or in the kernel topic branches.

Kernel repo: /local/mnt/workspace/sgaud/Qgenie/image_pipeline/kernel
qcom-next ref: 49dbe0dae5cfb7a1eb3434cde6fc7ba37924fe94
topics remote: topics -> https://github.com/qualcomm-linux/kernel-topics
topics fetch: fetched

Commit Subject qcom-next topics Final
1/9 [PATCH 1/9] FROMGIT: drm/of: add helper to count data-lanes on a present - all checked added lines are present skipped - not checked because qcom-next already contains the change present
2/9 [PATCH 2/9] FROMGIT: dt-bindings: display/panel: jadard,jd9365da-h3: present - all checked added lines are present skipped - not checked because qcom-next already contains the change present
3/9 [PATCH 3/9] FROMGIT: drm/panel: jadard-jd9365da-h3: use partial - subject or partial tree evidence found, but full change was not verified partial - subject or partial tree evidence found, but full change was not verified partial
4/9 [PATCH 4/9] FROMGIT: drm/panel: jadard-jd9365da-h3: support variable partial - subject or partial tree evidence found, but full change was not verified present - all checked added lines are present present
5/9 [PATCH 5/9] FROMGIT: drm/panel: jadard-jd9365da-h3: set present - all checked added lines are present skipped - not checked because qcom-next already contains the change present
6/9 [PATCH 6/9] FROMGIT: drm/panel: jadard-jd9365da-h3: support Waveshare present - all checked added lines are present skipped - not checked because qcom-next already contains the change present
7/9 [PATCH 7/9] FROMGIT: drm/panel: jadard-jd9365da-h3: support Waveshare present - all checked added lines are present skipped - not checked because qcom-next already contains the change present
8/9 [PATCH 8/9] FROMGIT: dt-bindings: gpio: describe Waveshare GPIO present - all checked added lines are present skipped - not checked because qcom-next already contains the change present
9/9 [PATCH 9/9] FROMGIT: gpio: add GPIO controller found on Waveshare DSI present - all checked added lines are present skipped - not checked because qcom-next already contains the change present

Final Status

overall_status: PARTIAL
present_commits: 8/9
partial_commits: 1/9
missing_commits: 0/9
topics_checked_for_commits: 2/9
final_summary: PR present in qcom-next/topics: Partial - 1/9 commit(s) only have partial integration evidence

@qlijarvis

Copy link
Copy Markdown

PR #953 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch 2 commits with style warnings
dt-binding-check Passed
dtb-check ⏭️ Skipped (no DTS changes)
sparse-check Passed
check-uapi-headers Passed
check-patch-compliance 2 commits with content mismatch
tag-check All commits have valid FROMGIT: prefix

Detailed report: Full report

Checker analysis — click to expand

Let me output the report directly:

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #953 - Waveshare DSI TOUCH panel support
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/31768110040

Checker Result Summary
checkpatch 2 commits with style warnings
dt-binding-check Passed
dtb-check ⏭️ Skipped (no DTS changes)
sparse-check Passed
check-uapi-headers Passed
check-patch-compliance 2 commits with content mismatch
tag-check All commits have valid FROMGIT: prefix

❌ checkpatch

Root cause: Two commits contain checkpatch warnings that should be reviewed.

Failure details:

Commit fc37452 ("FROMGIT: drm/panel: jadard-jd9365da-h3: support Waveshare round DSI panels"):

WARNING: msleep < 20ms can sleep for up to 20ms; see function description of msleep().
#230: FILE: drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c:1312:
+	msleep(5);

WARNING: msleep < 20ms can sleep for up to 20ms; see function description of msleep().
#464: FILE: drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c:1546:
+	msleep(5);

fc37452ecf5700426d8bb2b878d8f328badfd9b4 total: 0 errors, 2 warnings, 0 checks, 488 lines checked

Commit 528d8bd ("FROMGIT: gpio: add GPIO controller found on Waveshare DSI TOUCH panels"):

CHECK: struct mutex definition without comment
#99: FILE: drivers/gpio/gpio-waveshare-dsi.c:35:
+	struct mutex pwr_lock;

CHECK: struct mutex definition without comment
#100: FILE: drivers/gpio/gpio-waveshare-dsi.c:36:
+	struct mutex pwr_lock;

528d8bd09eaf00b592e36de316b3a4f371f9a374 total: 0 errors, 1 warnings, 2 checks, 231 lines checked

Analysis:

  1. msleep(5) warnings — These are WARNING level (not ERROR). The checkpatch warning is informing that msleep() with values < 20ms can sleep for up to 20ms due to timer granularity. This is a known behavior and is acceptable if the driver can tolerate the actual sleep duration. Since this is a FROMGIT: commit (already merged upstream), the upstream maintainers have accepted this pattern.

  2. struct mutex without comment — These are CHECK level (style suggestion, not mandatory). Checkpatch recommends documenting mutex fields to explain their locking purpose. However, since this is a FROMGIT: commit, the upstream code was accepted without these comments.

Fix:

For FROMGIT: commits, these warnings are informational only — the code has already been reviewed and merged upstream. No local changes should be made unless:

  • The warnings indicate a genuine backport error (they don't here)
  • The code needs adaptation for the target tree (it doesn't here)

Verdict: These warnings are acceptable for FROMGIT commits. The upstream maintainers have already reviewed and accepted this code. No action required.

Reproduce locally:

./scripts/checkpatch.pl --strict --ignore FILE_PATH_CHANGES --git bfeb0e5567c0..528d8bd09eaf

❌ check-patch-compliance

Root cause: Two commits show content differences from their upstream Link references.

Failure details:

Commit 4th ("FROMGIT: drm/panel: jadard-jd9365da-h3: support variable DSI configuration"):

Checking commit: FROMGIT: drm/panel: jadard-jd9365da-h3: support variable DSI configuration
Change is different from the one mentioned in Link

Commit 7th ("FROMGIT: drm/panel: jadard-jd9365da-h3: support Waveshare WXGA DSI panels"):

Checking commit: FROMGIT: drm/panel: jadard-jd9365da-h3: support Waveshare WXGA DSI panels
Change is different from the one mentioned in Link

Analysis:

The check-patch-compliance checker fetches the upstream patch from the Link: trailer using b4 am and compares the diff content. A "Change is different" message can occur due to:

  1. Context-only differences — The surrounding code context differs between upstream and the target tree, but the actual changes (+/-) are identical. This is a false positive.
  2. Legitimate adaptations — The patch was modified during backport to accommodate API differences or missing dependencies in the target tree.
  3. Cherry-pick artifacts — The commit was cherry-picked with (cherry picked from commit ...) trailer, which can cause line offset differences.

Investigation needed:

To determine if these are real issues or false positives, fetch the upstream patches and compare:

# For commit 4 (variable DSI configuration)
git log --format="%B" <commit-sha-4> | grep "^Link:" | head -1
b4 am --single-message -C -l -3 <link-url> -o /tmp/commit4.mbx

# For commit 7 (Waveshare WXGA)
git log --format="%B" <commit-sha-7> | grep "^Link:" | head -1
b4 am --single-message -C -l -3 <link-url> -o /tmp/commit7.mbx

# Compare the actual changes (ignore context)
git format-patch -1 <commit-sha> --stdout | awk '/^diff/,/^--$/' | grep -E '^[+-][^+-]' > /tmp/local.diff
awk '/^diff/,/^--$/' /tmp/commitN.mbx | grep -E '^[+-][^+-]' > /tmp/upstream.diff
diff /tmp/local.diff /tmp/upstream.diff

Most likely cause: Since all commits have (cherry picked from commit ...) trailers, these are likely context-only differences due to the target tree having a different baseline than upstream. This is a known limitation of the check-patch-compliance checker when comparing cherry-picked commits.

Fix:

If the diff comparison shows only context differences (surrounding lines) and the actual +/- changes are identical, no action is required. The checker limitation is documented in the skill references.

If there are genuine content differences, document them in the commit message with an explanation, e.g.:

[ Upstream commit <sha> ]

Adapted for <target-tree>: <explanation of changes>

Reproduce locally:

# Fetch and compare each commit as shown above
b4 am --single-message -C -l -3 <link-from-commit-message> -o /tmp/out

Verdict

2 items to investigate before merge:

  1. check-patch-compliance content mismatches — Verify whether the differences are context-only (acceptable) or genuine adaptations (require documentation). Most likely these are false positives due to cherry-pick context differences.

  2. checkpatch warnings — Informational only for FROMGIT commits. No action required unless the warnings indicate backport errors (they don't).

Recommendation: Investigate the two content-mismatch commits to confirm they are context-only differences. If confirmed, the PR is ready to merge. The checkpatch warnings are acceptable for upstream-merged code.


Summary

  • dt-binding-check — Both new bindings validated successfully
  • sparse-check — No static analysis issues
  • check-uapi-headers — No ABI changes
  • tag-check — All commits properly prefixed with FROMGIT:
  • ⚠️ checkpatch — 2 warnings, acceptable for FROMGIT commits
  • ⚠️ check-patch-compliance — 2 content mismatches, likely context-only differences

Next steps:

  1. Verify the two content-mismatch commits are context-only differences
  2. If confirmed, approve and merge
  3. If genuine adaptations exist, document them in commit messages

[/CHECKER_LOG_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