Skip to content

power: sequencing: pcie-m2: Hamoa M.2 BT USB/UART coexistence support - #1628

Open
weiden (WeiDeng-weiden) wants to merge 2 commits into
qualcomm-linux:tech/bus/pci/allfrom
WeiDeng-weiden:tech/bus/pci/all
Open

power: sequencing: pcie-m2: Hamoa M.2 BT USB/UART coexistence support#1628
weiden (WeiDeng-weiden) wants to merge 2 commits into
qualcomm-linux:tech/bus/pci/allfrom
WeiDeng-weiden:tech/bus/pci/all

Conversation

@WeiDeng-weiden

@WeiDeng-weiden weiden (WeiDeng-weiden) commented Aug 3, 2026

Copy link
Copy Markdown

Two changes to enable USB/UART BT coexistence on Hamoa M.2 connector:

  1. FROMGIT: Match WCN6855 and WCN7851 UART BT variants by subdevice ID

  2. FROMLIST: Deassert W_DISABLE2# when no UART serdev is created

CRs-Fixed: 4630764

Wei Deng added 2 commits July 31, 2026 17:51
…T variants by subdevice ID

The WCN6855 and WCN7851 combo chips are available in M.2 card variants
that differ by their BT interface: some expose BT over UART while others
expose BT over USB. Both variants use the same PCIe device ID for the
WiFi interface, distinguished only by their sub-system device ID.

The bare PCI_DEVICE() entries match all sub-system IDs, so both UART and
USB variants hit the same table entry and trigger UART serdev creation.
For USB variants this is wrong — there is no UART BT interface on such
a card, and the serdev probe will fail.

Narrow the matches to UART variants only by using PCI_DEVICE_SUB with
their respective sub-system IDs, so USB variants no longer trigger
UART serdev creation.

Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Wei Deng <wei.deng@oss.qualcomm.com>
Link: https://patch.msgid.link/20260724-hamoa-m2-sub-id-v2-v3-1-af97de70bbbe@oss.qualcomm.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
…RT serdev is created

The pwrseq_m2_pci_ids[] table lists PCIe BT devices that use UART as the
BT transport and need a UART serdev created by the driver. When a PCIe
device under the M.2 connector does not match any entry in this table,
no UART serdev is created.

However, the BT subsystem of such a device may still require W_DISABLE2#
to be deasserted to power up. Rather than adding every possible non-UART
BT device ID to the table, add an else branch that deasserts W_DISABLE2#
whenever a PCIe device is detected under the connector but does not match
a UART BT entry. This allows any BT interface on the card (USB or other)
to enumerate without requiring explicit knowledge of its device ID.

The primary use case is USB BT variants of combo chips that share the
same PCIe device ID as their UART counterpart (e.g. WCN7851 NCM865 USB,
sub 0x3378, vs NCM865A UART, sub 0x337c): no UART serdev is needed, but
W_DISABLE2# must be deasserted so the USB BT device can enumerate.

Reassert W_DISABLE2# symmetrically when the PCIe device is removed.

Validated on Hamoa EVK (IQ-X7181-EVK) with WCN7851 NCM865 USB card
(sub 0x3378): without this change GPIO116 (W_DISABLE2#) stays low and
no BT interface appears; with this change GPIO116 is driven high and the
USB BT device enumerates and comes up via btusb.

Signed-off-by: Wei Deng <wei.deng@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260709-fix-hamoa-m2-w-disable2-v1-3-5e725091266a@oss.qualcomm.com/
@qcomlnxci
qcomlnxci requested review from a team, krishnachaitanya-linux and Matthew Leung (meleung) and removed request for a team August 3, 2026 06:33
@qlijarvis

Copy link
Copy Markdown

🔨 Build Failure Analysis — PR #1628

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

# Error File:Line PR-introduced? Root Cause
1 Merge conflict during automerge arch/arm64/boot/dts/qcom/monaco-evk.dts No Pre-existing conflict between baseline and topic branch topic/tech/bus/pci/all

Verdict

This is NOT a compilation error. The build failed during the automerge step due to a pre-existing merge conflict in a file unrelated to the PR changes. The PR itself introduces no build errors.

📎 Detailed analysis: Full report

@qlijarvis

Copy link
Copy Markdown

🔨 Build Failure Analysis — PR #1628

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

# Error File:Line PR-introduced? Root Cause
1 Merge conflict during automerge arch/arm64/boot/dts/qcom/monaco-evk.dts No Pre-existing merge conflict between the PR's base branch (topic/tech/bus/pci/all) and the integration baseline. The PR modifies drivers/power/sequencing/pwrseq-pcie-m2.c but the conflict occurs in an unrelated DTS file during topic branch integration.

Verdict

This is not a compilation failure. The build failed during the pre-merge automerge step due to a merge conflict in arch/arm64/boot/dts/qcom/monaco-evk.dts. This conflict is not introduced by the PR — it's a pre-existing integration issue between topic branches that must be resolved before the build can proceed to compilation.

📎 Detailed analysis: Full report

@qlijarvis

Copy link
Copy Markdown

PR #1628 — validate-patch

PR: #1628

Verdict Issues Detailed Report
⚠️ 2 Full report

Final Summary

  1. Lore link present: Yes — commit 1/2 links to v2-v3-1 (not fetched); commit 2/2 links to v1-3 (fetched)
  2. Lore link matches PR commits: Partial — commit 2/2 matches v1-3 faithfully; commit 1/2 cannot be verified (v2-v3-1 not in lore_evidence, but v1-2 has similar content with minor commit message differences)
  3. Upstream patch status: Commit 1/2: ⏳ Decision Pending (v1 has Reviewed-by tags, can be queued independently per maintainer); Commit 2/2: ⏳ Decision Pending (Reviewed-by tags, but author mentioned dropping in favor of alternative series)
  4. PR present in qcom-next/topics: Partial - 1/2 commit(s) only have partial integration evidence
Verdict: ⚠️ — click to expand

🔍 Patch Validation

PR: #1628
Upstream commits:

Commit 1/2: FROMGIT: power: sequencing: pcie-m2: Match WCN6855 and WCN7851 UART BT variants by subdevice ID

Commit Message

Check Status Note
Subject matches upstream PR uses FROMGIT: prefix but links to a v2-v3 revision not present in lore_evidence; cannot verify match
Body preserves rationale ⚠️ Cannot verify - lore link points to v2-v3 revision not fetched
Fixes tag present/correct No Fixes tag in PR or expected upstream
Authorship preserved From: Wei Deng <wei.deng@oss.qualcomm.com> matches expected author
Backport note (if applicable) N/A FROMGIT commit, not a backport

Diff

File Status Notes
drivers/power/sequencing/pwrseq-pcie-m2.c ⚠️ Cannot verify - lore evidence contains v1 (patch 2/3), but PR links to v2-v3-1 revision

Issues

  • Lore link mismatch: PR commit 1/2 links to 20260724-hamoa-m2-sub-id-v2-v3-1-af97de70bbbe@oss.qualcomm.com but lore_evidence only contains the v1 series 20260709-fix-hamoa-m2-w-disable2-v1-2-5e725091266a@oss.qualcomm.com. The v2-v3 revision was not fetched, so diff faithfulness cannot be verified.
  • Prefix inconsistency: Commit uses FROMGIT: prefix, implying it's merged into a maintainer tree, but the linked lore thread (v1) shows it was only reviewed and "can be queued independently" - no definitive merge confirmation found in the v1 thread.

Commit 2/2: FROMLIST: power: sequencing: pcie-m2: Deassert W_DISABLE2# when no UART serdev is created

Commit Message

Check Status Note
Subject matches upstream Matches lore v1 patch 3/3 subject (adapted with FROMLIST: prefix)
Body preserves rationale Key rationale preserved: deassert W_DISABLE2# for non-UART BT devices
Fixes tag present/correct No Fixes tag in PR or upstream
Authorship preserved From: Wei Deng <wei.deng@oss.qualcomm.com> matches lore author
Backport note (if applicable) N/A FROMLIST commit, not a backport

Diff

File Status Notes
drivers/power/sequencing/pwrseq-pcie-m2.c Diff matches lore v1 patch 3/3 content faithfully

Upstream Patch Status

Commit Community Verdict
power: sequencing: pcie-m2: Deassert W_DISABLE2# when no UART serdev is created ⏳ Decision Pending — Reviewed-by tags from Manivannan Sadhasivam; last activity 2026-07-09; author mentioned dropping this patch in favor of Chen-Yu Tsai's USB hub power sequencing series

Issues

  • Upstream status concern: The lore v1 thread indicates the author planned to drop patch 3/3 in favor of an alternative approach (Chen-Yu Tsai's USB hub power sequencing series). However, this PR includes it as FROMLIST. This may be outdated or the plan changed.

Verdict

Commit 1/2: Cannot fully validate - lore link points to v2-v3 revision not present in lore_evidence. The v1 version (patch 2/3) in lore_evidence has similar content but cannot confirm v2-v3 changes. Prefix FROMGIT: suggests merged status, but v1 thread only shows review tags, not merge confirmation.

Commit 2/2: Diff matches lore v1 patch 3/3 faithfully. However, upstream thread suggests this patch was planned to be dropped in favor of an alternative series. Using FROMLIST: prefix is correct for an unmerged patch, but the patch may be superseded.

Recommendation:

  1. For commit 1/2: Fetch and verify against the actual v2-v3-1 lore link. If it's truly merged (FROMGIT), provide evidence of the merge (git tree/SHA). If not merged, change prefix to FROMLIST.
  2. For commit 2/2: Confirm with the author whether this patch is still intended for upstream or if it's been superseded by the USB hub power sequencing series mentioned in the thread.

Final Summary

  1. Lore link present: Yes — commit 1/2 links to v2-v3-1 (not fetched); commit 2/2 links to v1-3 (fetched)
  2. Lore link matches PR commits: Partial — commit 2/2 matches v1-3 faithfully; commit 1/2 cannot be verified (v2-v3-1 not in lore_evidence, but v1-2 has similar content with minor commit message differences)
  3. Upstream patch status: Commit 1/2: ⏳ Decision Pending (v1 has Reviewed-by tags, can be queued independently per maintainer); Commit 2/2: ⏳ Decision Pending (Reviewed-by tags, but author mentioned dropping in favor of alternative series)
  4. PR present in qcom-next/topics: Partial — per integration_presence_report.md: commit 1/2 present in topics; commit 2/2 only partial evidence in qcom-next

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

Commit Subject qcom-next topics Final
1/2 [PATCH 1/2] FROMGIT: power: sequencing: pcie-m2: Match WCN6855 and partial - subject or partial tree evidence found, but full change was not verified present - all checked added lines are present present
2/2 [PATCH 2/2] FROMLIST: power: sequencing: pcie-m2: Deassert 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

Final Status

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

@qlijarvis

Copy link
Copy Markdown

PR #1628 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch ⏭️ Not executed (setup failure)
dt-binding-check ⏭️ Not executed (setup failure)
dtb-check ⏭️ Not executed (setup failure)
sparse-check ⏭️ Not executed (setup failure)
check-uapi-headers ⏭️ Not executed (setup failure)
check-patch-compliance ⏭️ Not executed (setup failure)
tag-check N/A Cannot determine (no branch info available)

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #1628 - FROMGIT/FROMLIST: power: sequencing: pcie-m2: Match WCN6855/WCN7851 UART BT variants
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/30790576833


⚠️ CI Infrastructure Failure — No Checkers Executed

Root cause: The CI run failed during the automerge/setup phase with a merge conflict in arch/arm64/boot/dts/qcom/monaco-evk.dts. All checker jobs were cancelled before they could execute.

Failure details:

2026-08-03T06:55:44.5849230Z CONFLICT (content): Merge conflict in arch/arm64/boot/dts/qcom/monaco-evk.dts
2026-08-03T06:55:44.6455977Z Automatic merge failed; fix conflicts and then commit the result.
2026-08-03T06:55:44.6579807Z Merge failed, manual merge
2026-08-03T06:55:44.8346265Z automerge returned non-zero; check logs for conflicts
2026-08-03T06:55:44.8360975Z ##[error]Process completed with exit code 1.

Analysis:

This is not a patch quality issue. The PR itself contains only changes to drivers/power/sequencing/pwrseq-pcie-m2.c and does not touch any devicetree files. The merge conflict occurred when the CI workflow attempted to merge the PR branch with the target baseline branch (likely qcom-next or qcom-next-staging), and encountered a conflict in an unrelated file (monaco-evk.dts).

This typically happens when:

  1. The target branch has moved forward since the PR branch was created
  2. Another PR that modified monaco-evk.dts was merged into the target branch
  3. The PR branch needs to be rebased on the latest target branch

Checker Status:

Checker Result Summary
checkpatch ⏭️ Not executed (setup failure)
dt-binding-check ⏭️ Not executed (setup failure)
dtb-check ⏭️ Not executed (setup failure)
sparse-check ⏭️ Not executed (setup failure)
check-uapi-headers ⏭️ Not executed (setup failure)
check-patch-compliance ⏭️ Not executed (setup failure)
tag-check N/A Cannot determine (no branch info available)

Fix:

The PR author should rebase the PR branch on the latest target branch to resolve the merge conflict:

# In the PR branch
git fetch origin <target-branch>
git rebase origin/<target-branch>

# If conflicts occur during rebase, resolve them:
# 1. Edit the conflicting file(s)
# 2. git add <resolved-files>
# 3. git rebase --continue

# Force-push the rebased branch
git push --force-with-lease

After rebasing, the CI will automatically re-trigger and the checkers will run against the updated PR.

Note on the PR patches:

Based on the patch content, this PR contains:

  • Patch 1/2: FROMGIT: - Match WCN6855/WCN7851 UART BT variants by subdevice ID
  • Patch 2/2: FROMLIST: - Deassert W_DISABLE2# when no UART serdev is created

Both patches have proper subject prefixes (FROMGIT: and FROMLIST:) and include upstream links. The changes are limited to drivers/power/sequencing/pwrseq-pcie-m2.c and do not touch devicetree files, so the merge conflict is unrelated to the PR content.


Verdict

Cannot assess patch quality — CI setup failed before checkers could run. The PR needs to be rebased on the latest target branch to resolve the merge conflict in monaco-evk.dts, then CI should be re-triggered. Once the rebase is complete and CI runs successfully, the checkers will be able to validate the patch quality.

@WeiDeng-weiden

Copy link
Copy Markdown
Author

Hi krishnachaitanya-linux ,
Could you please merge this? thanks.

@WeiDeng-weiden

Copy link
Copy Markdown
Author

Hi Matthew Leung (@meleung),
Could you help to review this PR?

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