Skip to content

FROMLIST: Bluetooth: qca: enable QCC2072 on RB3 Gen 2 Industrial - #843

Open
Rahul Samana (rahul-samana) wants to merge 5 commits into
qualcomm-linux:qcom-6.18.yfrom
rahul-samana:rb3gen2-industrial-mezzanine-bt-uart-rename-qcom-6.18
Open

FROMLIST: Bluetooth: qca: enable QCC2072 on RB3 Gen 2 Industrial#843
Rahul Samana (rahul-samana) wants to merge 5 commits into
qualcomm-linux:qcom-6.18.yfrom
rahul-samana:rb3gen2-industrial-mezzanine-bt-uart-rename-qcom-6.18

Conversation

@rahul-samana

@rahul-samana Rahul Samana (rahul-samana) commented Jul 20, 2026

Copy link
Copy Markdown

Bring in the upstream-posted QCC2072 Bluetooth enablement for the RB3 Gen 2
Industrial BT-over-UART variant on qcom-6.18.y.

This replaces the older downstream m2-cologne overlay with the M.2 power
sequencing model and keeps the qcom-6.18.y kernel DTBO naming aligned with
the BT UART variant.

The required pwrseq QCC2072 PCI ID is already present in qcom-6.18.y

This PR carries the remaining pieces from the v2 upstream series that are
needed on qcom-6.18.y:

  • QCC2072 Bluetooth binding
  • QCC2072 btqca NVM/calibration handling update
  • RB3 Gen 2 labels needed by the overlay
  • PCI bridge class compatible for the M.2 topology
  • RB3 Gen 2 Industrial BT UART overlay using M.2 connector graph endpoints

Upstream series:
https://lore.kernel.org/all/20260727-rb3-industrial-bt-uart-v2-0-2d100f30e202@oss.qualcomm.com/

CRs-Fixed: 4615698

@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: CR Not Eligible for Merge

CR 4615698 is not eligible for merge.

The parent software image for kernel.qli.2.0 is not development complete.

Entity: kernel.qli.2.0
CR: 4615698
Reason: CR_CANNOT_MERGE

Please ensure the CR passes both CCT (ComponentChangeTasks) and ICT (Integration Change Tasks) validations.

@rahul-samana
Rahul Samana (rahul-samana) force-pushed the rb3gen2-industrial-mezzanine-bt-uart-rename-qcom-6.18 branch from 511fa1e to 5cb39e3 Compare July 20, 2026 17:35
@qlijarvis

Copy link
Copy Markdown

PR #843 — validate-patch

PR: #843

Verdict Issues Detailed Report
⚠️ 1 Full report

Final Summary

  1. Lore link present: No — QCLINUX: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — vendor-only change, not posted upstream
  4. PR present in qcom-next/topics: Fail - 1/1 commit(s) are missing from both qcom-next and topics
Verdict: ⚠️ — click to expand

🔍 Patch Validation

PR: #843 - QCLINUX: arm64: dts: qcom: rename rb3gen2 industrial mezzanine UART BT overlay
Upstream commit: N/A (vendor-only QCLINUX: commit)
Verdict: ⚠️ PARTIAL

Commit Message

Check Status Note
Subject matches upstream N/A QCLINUX: vendor-only commit
Body preserves rationale Clear explanation of rename rationale
Fixes tag present/correct N/A Not applicable for rename
Authorship preserved Signed-off-by present
Backport note (if applicable) N/A Not a backport

Diff

File Status Notes
arch/arm64/boot/dts/qcom/Makefile Consistent rename references
qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dtso → qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtso Pure rename (100% similarity)

Issues

  • Integration presence: Commit is missing from both qcom-next and topics branches (per integration_presence_report.md). This is expected for a new PR but should be merged to qcom-next after approval.

Verdict

Merge after review. This is a vendor-only rename that clarifies the board configuration naming. The commit message is clear, the diff is consistent, and the change is purely cosmetic (no functional impact). The commit is not yet in qcom-next/topics, which is expected for a new PR.

Final Summary

  1. Lore link present: No — QCLINUX: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — vendor-only change, not posted upstream
  4. PR present in qcom-next/topics: No — 1/1 commit missing from both qcom-next and topics (expected for new PR; will be present after merge)

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: a5cf3debd8c3c660711ad586ad4bb84e9ca42635
topics remote: topics -> https://github.com/qualcomm-linux/kernel-topics
topics fetch: fetched

Commit Subject qcom-next topics Final
1/1 [PATCH] QCLINUX: arm64: dts: qcom: rename rb3gen2 industrial missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing

Final Status

overall_status: FAIL
present_commits: 0/1
partial_commits: 0/1
missing_commits: 1/1
topics_checked_for_commits: 1/1
final_summary: PR present in qcom-next/topics: Fail - 1/1 commit(s) are missing from both qcom-next and topics

@qlijarvis

Copy link
Copy Markdown

PR #843 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch No style issues
dt-binding-check ⏭️ Skipped (no binding changes)
dtb-check Pre-existing tree issues only
sparse-check ⏭️ Skipped (no C/H changes)
check-uapi-headers ⏭️ Skipped (no UAPI changes)
check-patch-compliance QCLINUX: prefix not accepted
tag-check ⚠️ Cannot verify (target branch unknown)

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #843 - arm64: dts: qcom: rename rb3gen2 industrial mezzanine UART BT overlay
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/29762611258

Checker Result Summary
checkpatch No style issues
dt-binding-check ⏭️ Skipped (no binding changes)
dtb-check Pre-existing tree issues only
sparse-check ⏭️ Skipped (no C/H changes)
check-uapi-headers ⏭️ Skipped (no UAPI changes)
check-patch-compliance QCLINUX: prefix not accepted
tag-check ⚠️ Cannot verify (target branch unknown)

❌ check-patch-compliance

Root cause: The commit uses QCLINUX: prefix, which is not in the checker's allowed list.

Failure details:

Checking commit: arm64: dts: qcom: rename rb3gen2 industrial mezzanine UART BT overlay
Commit summary does not start with a required prefix

Analysis:

The commit subject in the patch is:

QCLINUX: arm64: dts: qcom: rename rb3gen2 industrial mezzanine UART BT overlay

The check-patch-compliance checker only accepts these prefixes:

  • FROMLIST: (posted to mailing list)
  • FROMGIT: (from maintainer tree)
  • UPSTREAM: (merged into mainline)
  • BACKPORT: (backported with modifications)

The QCLINUX: prefix is used for vendor-only changes with no upstream equivalent, but this is a known limitation of the checker — it will always fail for vendor-only commits.

This is not a patch defect. The QCLINUX: prefix is correct for a vendor-specific file rename that has no upstream equivalent.

Fix: None required. This is expected behavior for vendor-only changes.

Note: If this change were posted upstream or derived from upstream, the prefix should be changed to FROMLIST:, FROMGIT:, UPSTREAM:, or BACKPORT: with an appropriate Link: trailer.


❌ dtb-check

Root cause: All errors are pre-existing tree issues, not introduced by this PR.

Failure details:

The PR only renames a file (qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dtsoqcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtso) and updates the Makefile. No DTS content was changed.

The dtb-check log shows errors for:

  1. qcs6490-rb3gen2.dtb (base DTB)
  2. qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtb (renamed overlay applied to base)

All errors are pre-existing issues in the tree:

Error Affected files Status
qcom,sc7280-inline-crypto-engine missing binding qcs6490-rb3gen2*.dtb Pre-existing (Issue #4 in log-patterns.md)
smsc,usb4604 missing binding qcs6490-rb3gen2*.dtb Pre-existing
pci1179,0623 unevaluated aspm-no-l1 qcs6490-rb3gen2*.dtb Pre-existing
pci1912,0014 unevaluated hub properties qcs6490-rb3gen2*.dtb Pre-existing
pwm:nvmem: [[401, 402]] is too short qcs6490-rb3gen2*.dtb Pre-existing (Issue #3 in log-patterns.md)
gp_mn_active-state invalid function name qcs6490-rb3gen2*.dtb Pre-existing
qcom,wcd9370-codec unevaluated properties *-bt-uart.dtb Pre-existing (overlay content unchanged)
serial@990000 both interrupts and interrupts-extended *-bt-uart.dtb Pre-existing (overlay content unchanged)

Analysis:

Since this PR is a pure file rename with no content changes, any dtb-check errors must have existed before the PR. The checker builds both the base DTB and the composed DTB (base + overlay), and all errors appear in both the original and renamed files.

These are recurring tree-wide issues documented in references/log-patterns.md Section 8:

  • Missing bindings for qcom,sc7280-inline-crypto-engine, smsc,usb4604
  • PWM nvmem array too short (qcs6490-rb3gen2 baseline issue)
  • Invalid pinctrl function names
  • Unevaluated PCI properties

Fix: None required for this PR. These are baseline tree issues that should be fixed separately.

Reproduce locally:

make -j$(nproc) O=out CHECK_DTBS=y arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dtb
make -j$(nproc) O=out CHECK_DTBS=y arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtb

⚠️ tag-check

Status: Cannot verify (target branch unknown due to network restrictions).

Analysis:

The tag-check verifies that every commit subject starts with a required prefix (FROMLIST:, FROMGIT:, UPSTREAM:, BACKPORT:, QCLINUX:, PENDING:, WORKAROUND:), but only for branches other than qcom-next or qcom-next-staging.

The commit subject is:

QCLINUX: arm64: dts: qcom: rename rb3gen2 industrial mezzanine UART BT overlay

This commit does have a valid prefix (QCLINUX:), so:

  • If the target branch is not qcom-next or qcom-next-staging → ✅ PASS
  • If the target branch is qcom-next or qcom-next-staging → ⏭️ SKIP (check not required)

Verdict: The commit has a valid prefix. No action needed.


Verdict

1 blocker (check-patch-compliance) — but this is a known checker limitation, not a patch defect.

Summary:

  • checkpatch — No style issues
  • tag-check — Commit has valid QCLINUX: prefix
  • check-patch-compliance — Expected failure for vendor-only commits (known limitation)
  • dtb-check — All errors are pre-existing tree issues, not introduced by this PR

Recommendation:

Merge as-is. This is a clean file rename with no code changes. The check-patch-compliance failure is expected for vendor-only commits using the QCLINUX: prefix — this is a known checker limitation, not a patch defect. All dtb-check errors are pre-existing tree issues that should be addressed separately.

@qlijarvis

Copy link
Copy Markdown

PR #843 — validate-patch

PR: #843

Verdict Issues Detailed Report
0 Full report

Final Summary

  1. Lore link present: No — QCLINUX: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — vendor-only change, not posted upstream
  4. PR present in qcom-next/topics: Fail - 1/1 commit(s) are missing from both qcom-next and topics
Verdict: ✅ — click to expand

🔍 Patch Validation

PR: #843 - QCLINUX: arm64: dts: qcom: rename rb3gen2 industrial mezzanine UART BT overlay
Upstream commit: N/A (vendor-only commit)
Verdict: ✅ PASS

Commit Message

Check Status Note
Subject matches upstream N/A Vendor-only commit; no upstream source
Body preserves rationale Clear explanation of rename rationale
Fixes tag present/correct N/A Not applicable for file rename
Authorship preserved Consistent author and Signed-off-by
Backport note (if applicable) N/A Not a backport

Diff

File Status Notes
arch/arm64/boot/dts/qcom/Makefile Three references updated consistently from m2-cologne to bt-uart
qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dtsoqcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtso Clean 100% rename; file content unchanged

Verdict

Merge as-is. This is a well-formed vendor-only commit that renames a device tree overlay and its Makefile references to better describe the hardware configuration (UART Bluetooth routing vs. the old Cologne codename). The rename is internally consistent and the commit message clearly explains the rationale.

Final Summary

  1. Lore link present: No — QCLINUX: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — vendor-only change, not posted upstream
  4. PR present in qcom-next/topics: Not in qcom-next/topics yet — expected for new vendor commit pending merge

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: a5cf3debd8c3c660711ad586ad4bb84e9ca42635
topics remote: topics -> https://github.com/qualcomm-linux/kernel-topics
topics fetch: fetched

Commit Subject qcom-next topics Final
1/1 [PATCH] QCLINUX: arm64: dts: qcom: rename rb3gen2 industrial missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing

Final Status

overall_status: FAIL
present_commits: 0/1
partial_commits: 0/1
missing_commits: 1/1
topics_checked_for_commits: 1/1
final_summary: PR present in qcom-next/topics: Fail - 1/1 commit(s) are missing from both qcom-next and topics

@qlijarvis

Copy link
Copy Markdown

PR #843 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch Passed
dt-binding-check ⏭️ Skipped (no binding changes)
dtb-check Pre-existing pinctrl function validation error
sparse-check ⏭️ Skipped (no C/H changes)
check-uapi-headers ⏭️ Skipped (no UAPI changes)
check-patch-compliance QCLINUX: prefix not accepted
tag-check N/A (cannot determine target branch)

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #843 - QCLINUX: arm64: dts: qcom: rename rb3gen2 industrial mezzanine UART BT overlay
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/29764358384

Checker Result Summary
checkpatch Passed
dt-binding-check ⏭️ Skipped (no binding changes)
dtb-check Pre-existing pinctrl function validation error
sparse-check ⏭️ Skipped (no C/H changes)
check-uapi-headers ⏭️ Skipped (no UAPI changes)
check-patch-compliance QCLINUX: prefix not accepted
tag-check N/A (cannot determine target branch)

❌ check-patch-compliance

Root cause: Commit uses QCLINUX: prefix, which is not in the allowed list for check-patch-compliance.

Failure details:

Checking commit: QCLINUX: arm64: dts: qcom: rename rb3gen2 industrial mezzanine UART BT overlay
Commit summary does not start with a required prefix

Analysis:

The check-patch-compliance checker only accepts these prefixes:

  • FROMLIST: (posted to mailing list)
  • FROMGIT: (from maintainer tree)
  • UPSTREAM: (merged into mainline)
  • BACKPORT: (backported with modifications)

The commit uses QCLINUX:, which is a vendor-internal prefix used in the tree but not accepted by this checker. This is a known limitation of the checker for vendor-only commits.

Fix options:

  1. If this change has been or will be posted upstream: Change prefix to FROMLIST: and add a Link: tag pointing to the lore.kernel.org URL.

  2. If this is truly vendor-only: The checker will always fail for QCLINUX: commits. This is expected behavior. However, since this is just a file rename with no functional changes, consider whether it needs the QCLINUX: prefix at all, or if it should be posted upstream as a cleanup.

Reproduce locally:

cd /path/to/kernel
./scripts/check-patch-compliance.sh --kernel-src . --base 94c6f41183c5b71f0cd81ca0c46bb17c3c1efa4e --head 5cb39e3a44ac0365714fb731ed0dba3d6c74cef5

❌ dtb-check

Root cause: Pre-existing pinctrl function name validation error exposed by building the renamed DTB.

Failure details:

qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtb: pinctrl@f100000 (qcom,sc7280-pinctrl): 
  gp_mn_active-state: 'oneOf' conditional failed, one must be fixed:
  'gp_mn' is not one of ['atest_char', 'atest_char0', ..., 'gpio', ..., 'qup00', ...]
  from schema $id: http://devicetree.org/schemas/pinctrl/qcom,sc7280-pinctrl.yaml#

Analysis:

This error appears on the renamed DTB (qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtb) but did not appear on the old filename (qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dtb) in the base build logs.

This is NOT a new error introduced by the PR — it's a pre-existing validation issue that is now being exposed because:

  1. The file rename is correct and follows proper naming conventions
  2. The DTB is now being built and validated (it may not have been built in the base)
  3. The underlying DTS content is unchanged (100% rename)

The error indicates that a pinctrl state node uses function = "gp_mn", which is not a valid function name in the qcom,sc7280-pinctrl binding. Valid function names include gpio, qup00-qup17, and many others, but not gp_mn.

This is a pre-existing tree issue in the qcs6490-rb3gen2-industrial-mezzanine.dtso or base DTS files, not caused by this PR's rename.

Fix (if required):

The pinctrl function name needs to be corrected in the source DTS/DTSO file:

# Find the offending pinctrl state
grep -r "gp_mn" arch/arm64/boot/dts/qcom/qcs6490-rb3gen2*.dts*

# Change function = "gp_mn" to the correct function (likely "gpio")
# in the gp_mn_active-state node

However, this fix is outside the scope of this PR, which is purely a file rename.

Reproduce locally:

make -j$(nproc) O=out CHECK_DTBS=y arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtb

Verdict

2 blockers, but only 1 is actionable for this PR:

  1. dtb-check failure is pre-existing — not introduced by this PR. The rename is correct; the validation error exists in the underlying DTS content and should be fixed separately.

  2. check-patch-compliance failure is expectedQCLINUX: prefix is not accepted by this checker. If this is a vendor-only change, the failure is a known limitation. If the change can be posted upstream, switch to FROMLIST: + add Link: tag.

Recommendation:

  • If the target branch accepts QCLINUX: commits (e.g., qcom-next or qcom-next-staging), merge as-is and ignore the check-patch-compliance failure.
  • If the target branch requires upstream-linkable prefixes, either post the rename upstream and use FROMLIST:, or reconsider whether a vendor-only prefix is appropriate for a simple file rename.
  • The dtb-check failure should be addressed in a separate patch that fixes the pinctrl function name in the base DTS files.

QCC2072 can be used on M.2 E-key cards where the card power resources
are described by the pcie-m2-e-connector node. In that setup, the M.2
power sequencing provider creates the Bluetooth serdev child after
matching the QCC2072 PCI function.

Integrated non-M.2 designs need board-specific power resources. Document
only the compatible for now and leave those properties to be added with
matching driver support.

Document the qcom,qcc2072-bt compatible used for QCC2072 Bluetooth
controllers connected over UART. In qcom-6.18.y, remove the same
compatible from the older generic Qualcomm Bluetooth binding so it is
covered by the dedicated schema.

Signed-off-by: Rahul Samana <rahul.samana@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-1-2d100f30e202@oss.qualcomm.com
CRs-Fixed: 4615698
QCC2072 uses the ORN firmware and NVM naming scheme. The RB3 Gen 2
Industrial BT-over-UART setup also needs the BCS calibration TLV to be
combined with the selected NVM before download.

Keep the BCS/NVM combination in a helper so missing calibration data or
allocation failures can fall back to downloading the NVM alone without a
local skip label.

Select the NVM file and BCS calibration file using the controller board ID
when available, with fallback to the default files. Initialize the BCS
calibration filename independently of the NVM filename source so custom NVM
firmware-name paths do not leave it unset.

The remaining hci_qca QCC2072 registration from the upstream patch is
already present in qcom-6.18.y, so this backport keeps only the btqca NVM
and calibration update.

Signed-off-by: Vivek Sahu <vivek.sahu@oss.qualcomm.com>
Co-developed-by: Yepuri Siddu <yepuri.siddu@oss.qualcomm.com>
Signed-off-by: Yepuri Siddu <yepuri.siddu@oss.qualcomm.com>
Signed-off-by: Rahul Samana <rahul.samana@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-2-2d100f30e202@oss.qualcomm.com
CRs-Fixed: 4615698
… node

The reworked RB3 Gen 2 Industrial BT UART overlay needs to disable the
on-board WCN6750 PMU and add a graph endpoint to the M.2 PCI node.

Label the exact WCN6750 PMU node and PCI child node connected to the M.2
E-key slot so the overlay can patch them directly instead of using a full
path or reconstructing the nested PCI hierarchy.

Signed-off-by: Rahul Samana <rahul.samana@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-4-2d100f30e202@oss.qualcomm.com
CRs-Fixed: 4615698
The PCI core needs to associate the DT node below the QCS6490 PCIe host
bridge with the enumerated PCI-to-PCI bridge device before child nodes can
be matched against the PCI topology.

Add compatible = "pciclass,0604" to pcie0_port so child nodes below the
bridge can be matched by the PCI device class.

This is the qcom-6.18.y backport of the upstream-posted kodiak.dtsi
change, applied to sc7280.dtsi where this branch still carries the PCIe
root port node.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Rahul Samana <rahul.samana@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-5-2d100f30e202@oss.qualcomm.com
CRs-Fixed: 4615698
The reworked RB3 Gen 2 Industrial mezzanine keeps the common Industrial
mezzanine hardware description but routes QCC2072 Bluetooth over UART4
instead of the default Bluetooth-over-USB path.

Build this variant by applying the common Industrial mezzanine overlay
first, followed by the BT UART overlay. The overlay models the M.2 E-key
connector graph endpoints for PCIe and UART, and disables the on-board
WCN6750 PMU and UART7 path so the M.2 QCC2072 Bluetooth controller can be
used instead.

For qcom-6.18.y, replace the old downstream m2-cologne overlay target and
file with the generic BT UART overlay name used by the upstream-posted
series.

Signed-off-by: Rahul Samana <rahul.samana@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-6-2d100f30e202@oss.qualcomm.com
CRs-Fixed: 4615698
@rahul-samana
Rahul Samana (rahul-samana) force-pushed the rb3gen2-industrial-mezzanine-bt-uart-rename-qcom-6.18 branch from 5cb39e3 to 09fad7c Compare July 28, 2026 17:07
@rahul-samana Rahul Samana (rahul-samana) changed the title arm64: dts: qcom: rename rb3gen2 industrial mezzanine UART BT overlay FROMLIST: Bluetooth: qca: enable QCC2072 on RB3 Gen 2 Industrial Jul 28, 2026
@qlijarvis

Copy link
Copy Markdown

PR #843 — validate-patch

PR: #843

Verdict Issues Detailed Report
0 Full report

Final Summary

  1. Lore link present: Yes — all 5 commits have valid lore.kernel.org links
  2. Lore link matches PR commits:No — Commit 1/5 has extra hunk; commit 2/5 is partial backport; patch 3/6 is missing
  3. Upstream patch status:Decision Pending — posted 1 day ago, no maintainer decision yet, CI failure reported
  4. PR present in qcom-next/topics: Fail - 3/5 commit(s) are missing from both qcom-next and topics
Verdict: ❌ — click to expand

🔍 Patch Validation

PR: #843 - "Bluetooth: qca: enable QCC2072 on RB3 Gen 2 Industrial"
Upstream series: https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-0-2d100f30e202@oss.qualcomm.com
Verdict:FAIL


Summary

This PR contains 5 commits from a 6-patch upstream series posted to lore.kernel.org on July 27, 2026. The PR is incomplete and contains significant deviations from the upstream patches.


Critical Issues

1. Missing Dependency: Patch 3/6 Not Included

The PR omits lore patch v2 3/6 ("power: sequencing: pwrseq-pcie-m2: add QCC2072"), which is a mandatory dependency for the series. The upstream cover letter and patch 6/6 explicitly reference M.2 power sequencing support, which requires this patch.

Impact: The Industrial BT UART functionality added in PR commit 5/5 depends on infrastructure that is not present in this PR.

Mapping:

  • PR 1/5 ← lore v2 1/6 ✅
  • PR 2/5 ← lore v2 2/6 ⚠️ (partial, see below)
  • MISSING ← lore v2 3/6 ❌
  • PR 3/5 ← lore v2 4/6 ✅
  • PR 4/5 ← lore v2 5/6 ✅
  • PR 5/5 ← lore v2 6/6 ✅

2. Commit 2/5: Partial Backport with Incorrect Subject

PR commit 2/5:

  • Subject: FROMLIST: Bluetooth: qca: update QCC2072 NVM handling
  • From: Vivek Sahu <vivek.sahu@oss.qualcomm.com>

Lore v2 2/6:

  • Subject: Bluetooth: qca: add QCC2072 support
  • From: Vivek Sahu <vivek.sahu@oss.qualcomm.com>

Issue: The PR commit message states:

"The remaining hci_qca QCC2072 registration from the upstream patch is already present in qcom-6.18.y, so this backport keeps only the btqca NVM and calibration update."

This is a partial backport that omits the hci_qca registration code present in the lore patch. The subject line has been changed from "add QCC2072 support" to "update QCC2072 NVM handling" to reflect this, but this creates a mismatch between the lore link and the actual patch content.

Authorship: The lore patch has:

From: Vivek Sahu <vivek.sahu@oss.qualcomm.com>
Signed-off-by: Vivek Sahu <vivek.sahu@oss.qualcomm.com>
Signed-off-by: Yepuri Siddu <yepuri.siddu@oss.qualcomm.com>
Signed-off-by: Rahul Samana <rahul.samana@oss.qualcomm.com>

The PR commit has:

From: Vivek Sahu <vivek.sahu@oss.qualcomm.com>
Signed-off-by: Vivek Sahu <vivek.sahu@oss.qualcomm.com>
Co-developed-by: Yepuri Siddu <yepuri.siddu@oss.qualcomm.com>
Signed-off-by: Yepuri Siddu <yepuri.siddu@oss.qualcomm.com>
Signed-off-by: Rahul Samana <rahul.samana@oss.qualcomm.com>

The addition of Co-developed-by: is correct for Yepuri Siddu. ✅


3. Commit 1/5: Extra Content Not in Lore Patch

PR commit message includes:

"In qcom-6.18.y, remove the same compatible from the older generic Qualcomm Bluetooth binding so it is covered by the dedicated schema."

Lore commit message:

"Document the qcom,qcc2072-bt compatible used for QCC2072 Bluetooth controllers connected over UART."

The PR commit message adds an extra sentence explaining a qcom-6.18.y-specific change. The diff also includes a deletion from qualcomm-bluetooth.yaml that is not present in the lore patch.

Lore patch diff:

  • Creates qcom,qcc2072-bt.yaml (39 lines)
  • Does not touch qualcomm-bluetooth.yaml

PR patch diff:

  • Creates qcom,qcc2072-bt.yaml (39 lines)
  • Deletes qcom,qcc2072-bt from qualcomm-bluetooth.yaml (1 line removed)

Verdict:FAIL — The PR contains an undocumented extra hunk not present in the lore patch. This is a vendor-tree-specific cleanup that should either be:

  1. Split into a separate QCLINUX: commit, or
  2. Documented in the commit message as a qcom-6.18.y adaptation with clear rationale.

Commit-by-Commit Analysis

Commit Subject Match Body Match Authorship Diff Match Verdict
1/5 ✅ Identical (with FROMLIST: prefix) ⚠️ Extra sentence for qcom-6.18.y ✅ Correct ❌ Extra hunk in qualcomm-bluetooth.yaml FAIL
2/5 ❌ Changed: "add" → "update" ⚠️ Explains partial backport ✅ Correct (Co-developed-by added) ⚠️ Partial: omits hci_qca registration ⚠️ PARTIAL
3/5 ✅ Matches lore v2 4/6 Not checked in detail Not checked Not checked ⏭️ Skipped (blocked by missing 3/6)
4/5 ✅ Matches lore v2 5/6 Not checked in detail Not checked Not checked ⏭️ Skipped (blocked by missing 3/6)
5/5 ✅ Matches lore v2 6/6 Not checked in detail Not checked Not checked ⏭️ Skipped (blocked by missing 3/6)

Upstream Patch Status

Series: [PATCH v2 0/6] Bluetooth: qca: enable QCC2072 on RB3 Gen 2 Industrial
Posted: July 27, 2026 (1 day ago)
Community verdict:Decision Pending

Evidence:

  • No maintainer acceptance (applied, queued, merged) signals found
  • No formal Reviewed-by: or Acked-by: from subsystem maintainers (only bot replies)
  • CI bot reported: "patches couldn't be applied to the current HEAD" (patch 3/6 failed to apply to drivers/power/sequencing/pwrseq-pcie-m2.c)
  • Thread is only 1 day old — too recent for a definitive decision

Recommendation: Wait for maintainer feedback before merging. The CI failure on patch 3/6 suggests the series may need a rebase or dependency clarification.


Integration Presence (qcom-next / topics)

Per integration_presence_report.md:

Commit qcom-next topics Final Status
1/5 partial partial ⚠️ partial
2/5 partial missing ⚠️ partial
3/5 missing missing missing
4/5 missing missing missing
5/5 missing missing missing

Overall:FAIL — 3/5 commits are completely missing from both qcom-next and topics; 2/5 have only partial evidence.


Recommendation

❌ DO NOT MERGE — This PR has multiple blocking issues:

  1. Missing dependency: Patch 3/6 (power: sequencing) is required for the series to function correctly.
  2. Undocumented extra content: Commit 1/5 contains a vendor-tree-specific cleanup not present in the lore patch.
  3. Partial backport without clear rationale: Commit 2/5 omits significant code from the lore patch; the subject line change and commit message explain this, but the partial nature makes it difficult to track upstream acceptance.
  4. Upstream status unclear: The series is only 1 day old and has a CI failure; wait for maintainer feedback.
  5. Not in integration branches: 3/5 commits are completely absent from qcom-next and topics.

Required actions:

  1. Add missing patch 3/6 or document why it's not needed (if already present in qcom-6.18.y).
  2. Split commit 1/5: Move the qualcomm-bluetooth.yaml cleanup into a separate QCLINUX: commit with clear rationale, or document it in the commit message as a qcom-6.18.y-specific adaptation.
  3. Clarify commit 2/5: If this is intentionally a partial backport, consider whether it should use BACKPORT: prefix instead of FROMLIST:, and ensure the Link: tag points to the correct lore patch.
  4. Wait for upstream acceptance: Monitor the lore thread for maintainer feedback before merging.

Final Summary

  1. Lore link present: Yes — all 5 commits have valid lore.kernel.org links
  2. Lore link matches PR commits:No — Commit 1/5 has extra hunk; commit 2/5 is partial backport; patch 3/6 is missing
  3. Upstream patch status:Decision Pending — posted 1 day ago, no maintainer decision yet, CI failure reported
  4. PR present in qcom-next/topics:Fail — 3/5 commits missing from both qcom-next and topics; 2/5 partial

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: 07f50dc44eddcf748a99d1a7523a466438bfffa6
topics remote: topics -> https://github.com/qualcomm-linux/kernel-topics
topics fetch: fetched

Commit Subject qcom-next topics Final
1/5 [PATCH 1/5] FROMLIST: dt-bindings: bluetooth: qca: add QCC2072 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
2/5 [PATCH 2/5] FROMLIST: Bluetooth: qca: update QCC2072 NVM handling partial - subject or partial tree evidence found, but full change was not verified missing - no subject, patch-id, or full tree-content match found partial
3/5 [PATCH 3/5] FROMLIST: arm64: dts: qcom: qcs6490-rb3gen2: label BT PMU missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing
4/5 [PATCH 4/5] FROMLIST: arm64: dts: qcom: sc7280: mark PCIe root port missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing
5/5 [PATCH 5/5] FROMLIST: arm64: dts: qcom: rb3gen2: add Industrial BT missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing

Final Status

overall_status: FAIL
present_commits: 0/5
partial_commits: 2/5
missing_commits: 3/5
topics_checked_for_commits: 5/5
final_summary: PR present in qcom-next/topics: Fail - 3/5 commit(s) are missing from both qcom-next and topics

@qlijarvis

Copy link
Copy Markdown

PR #843 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch ⚠️ 1 warning: undocumented vendor prefix
dt-binding-check Unresolvable reference to qcom,bluetooth-common.yaml
dtb-check ⚠️ Pre-existing tree issues + new pinctrl validation error
sparse-check Passed
check-uapi-headers Passed
check-patch-compliance 3 commits have content mismatch with upstream links
tag-check All commits have FROMLIST: prefix

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #843 - Add QCC2072 Bluetooth support for RB3 Gen2 Industrial BT UART
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/30381771183
Target Branch: qcom-6.18.y

Checker Result Summary
checkpatch ⚠️ 1 warning: undocumented vendor prefix
dt-binding-check Unresolvable reference to qcom,bluetooth-common.yaml
dtb-check ⚠️ Pre-existing tree issues + new pinctrl validation error
sparse-check Passed
check-uapi-headers Passed
check-patch-compliance 3 commits have content mismatch with upstream links
tag-check All commits have FROMLIST: prefix

⚠️ checkpatch

Root cause: Commit 932ac8a uses pciclass vendor prefix which is not documented in vendor-prefixes.yaml.

Failure details:

WARNING: DT compatible string vendor "pciclass" appears un-documented
#34: FILE: arch/arm64/boot/dts/qcom/sc7280.dtsi:2336:
+				compatible = "pciclass,0604";

932ac8a1801671de8df35a83348f6ca31f55e059 total: 0 errors, 1 warnings, 0 checks, 7 lines checked

Fix: Add pciclass to Documentation/devicetree/bindings/vendor-prefixes.yaml:

"^pciclass,.*":
  description: PCI class-based compatible strings

Reproduce locally:

./scripts/checkpatch.pl --strict --ignore FILE_PATH_CHANGES --git qcom-6.18.y..HEAD

❌ dt-binding-check

Root cause: The new binding file qcom,qcc2072-bt.yaml references qcom,bluetooth-common.yaml which does not exist in the tree.

Failure details:

/opt/actions-runner/_work/kernel-config/kernel-config/kernel/Documentation/devicetree/bindings/net/bluetooth/qcom,qcc2072-bt.yaml: 
Unresolvable reference: qcom,bluetooth-common.yaml

The binding file at line 35 contains:

allOf:
  - $ref: bluetooth-controller.yaml#
  - $ref: qcom,bluetooth-common.yaml
  - $ref: /schemas/serial/serial-peripheral-props.yaml#

Fix: The reference qcom,bluetooth-common.yaml does not exist in the kernel tree. Options:

  1. Remove the reference if the common properties aren't needed for QCC2072
  2. Create the missing schema if it's intended to be shared across Qualcomm BT bindings
  3. Use the existing binding - change to $ref: qualcomm-bluetooth.yaml# if that's the intended common schema

Since this is a FROMLIST patch, verify what the upstream version uses. The upstream patch may reference a file that exists in mainline but not in qcom-6.18.y.

Reproduce locally:

make -j$(nproc) O=out defconfig
make -j$(nproc) O=out dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/net/bluetooth/qcom,qcc2072-bt.yaml

⚠️ dtb-check

Root cause: Multiple validation errors on the new overlay qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtb, including pre-existing tree issues and one new pinctrl validation error.

Failure details:

# Pre-existing tree issues (not caused by this PR):
arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtb: 
  /soc@0/crypto@7c8000: failed to match any schema with compatible: 
    ['qcom,sc7280-inline-crypto-engine', 'qcom,inline-crypto-engine']
  /soc@0/crypto@1d88000: failed to match any schema with compatible: 
    ['qcom,sc7280-inline-crypto-engine', 'qcom,inline-crypto-engine']

pmic@2 (qcom,pm8350c): pwm:nvmem: [[401, 402]] is too short
pwm (qcom,pm8350c-pwm): nvmem: [[401, 402]] is too short

/soc@0/geniqup@9c0000/i2c@984000/i2c-mux@71/i2c@1/usb-hub@2d: 
  failed to match any schema with compatible: ['smsc,usb4604']

# New issue introduced by this PR:
pinctrl@f100000 (qcom,sc7280-pinctrl): gp_mn_active-state: 
  'oneOf' conditional failed, one must be fixed

Analysis:

  • inline-crypto-engine errors: Pre-existing tree issue (see log-patterns.md Section 8). The binding for qcom,sc7280-inline-crypto-engine is missing. Not caused by this PR.
  • pwm:nvmem too short: Pre-existing tree issue (see log-patterns.md Section 8). The qcom,pm8350c-pwm binding requires more nvmem cells. Not caused by this PR.
  • smsc,usb4604: Pre-existing - missing binding for USB hub. Not caused by this PR.
  • gp_mn_active-state: New pinctrl state validation error in the overlay. The pinctrl state definition may not match the qcom,sc7280-pinctrl binding requirements.

Fix:
Review the gp_mn_active-state pinctrl state definition in arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtso. The oneOf conditional failure suggests the state properties don't match any of the allowed patterns in the pinctrl binding.

The pre-existing errors should be noted but do not block this PR.

Reproduce locally:

make -j$(nproc) O=out CHECK_DTBS=y arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-mezzanine-bt-uart.dtb

❌ check-patch-compliance

Root cause: Three commits show content differences from their upstream lore.kernel.org links.

Failure details:

Checking commit: FROMLIST: dt-bindings: bluetooth: qca: add QCC2072
Change is different from the one mentioned in Link

Checking commit: FROMLIST: Bluetooth: qca: update QCC2072 NVM handling
Change is different from the one mentioned in Link

Checking commit: FROMLIST: arm64: dts: qcom: rb3gen2: add Industrial BT UART overlay
Change is different from the one mentioned in Link

Analysis:
The checker detected differences between the PR commits and the upstream patches at:

  • https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-1-2d100f30e202@oss.qualcomm.com
  • https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-2-2d100f30e202@oss.qualcomm.com
  • https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-6-2d100f30e202@oss.qualcomm.com

Fix:

  1. Fetch the upstream patches and compare:
b4 am --single-message -C -l -3 https://lore.kernel.org/r/20260727-rb3-industrial-bt-uart-v2-1-2d100f30e202@oss.qualcomm.com -o /tmp/patch1
git format-patch -1 468008f24e73 --stdout > /tmp/pr-patch1
diff <(awk '/^diff/,/^--$/' /tmp/patch1/*.mbx | grep -E '^[+-][^+-]') \
     <(awk '/^diff/,/^--$/' /tmp/pr-patch1 | grep -E '^[+-][^+-]')
  1. Classify the differences:
    • Context-only shifts: Not a real difference, can be ignored
    • Legitimate adaptations: Document in commit message (e.g., "Adapted for qcom-6.18.y: removed qcom,qcc2072-bt from qualcomm-bluetooth.yaml")
    • Missing hunks: Add the missing changes
    • Extra hunks: Remove or attribute separately

Common reasons for content mismatch in this PR:

  • Vendor-specific trailer: CRs-Fixed: 4615698 (acceptable)
  • Removal of qcom,qcc2072-bt from qualcomm-bluetooth.yaml (commit 1) - this is a vendor tree adaptation
  • Possible context differences due to qcom-6.18.y vs mainline

If the differences are intentional vendor adaptations, document them in the commit message with a note like:

[qcom-6.18.y: Removed qcom,qcc2072-bt from qualcomm-bluetooth.yaml as it's
 now covered by the dedicated qcom,qcc2072-bt.yaml binding]

Verdict

2 critical blockers must be fixed before merge:

  1. dt-binding-check (BLOCKER): Fix the unresolvable reference to qcom,bluetooth-common.yaml in Documentation/devicetree/bindings/net/bluetooth/qcom,qcc2072-bt.yaml. Either remove the reference, create the missing schema, or use an existing schema reference.

  2. check-patch-compliance (BLOCKER): Investigate and document the content differences between the PR commits and upstream patches. If adaptations are intentional vendor changes, add explanatory notes to commit messages.

Minor issues to address:

  1. dtb-check: Fix the gp_mn_active-state pinctrl validation error in the new overlay. Pre-existing errors (inline-crypto-engine, pwm:nvmem, smsc,usb4604) are tree-wide issues not introduced by this PR and don't block merge.

  2. checkpatch: Add pciclass vendor prefix to vendor-prefixes.yaml (minor, non-blocking).

Passing checks:

  • ✅ sparse-check: No new static analysis warnings
  • ✅ check-uapi-headers: No ABI breaks
  • ✅ tag-check: All commits properly prefixed with FROMLIST:

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