Skip to content

WORKAROUND: Add qref and refgen regulator support for QCS8300 and SA8775p PCIe PHYs - #1611

Open
ziyuezhang-123 wants to merge 3 commits into
qualcomm-linux:tech/all/workaroundfrom
ziyuezhang-123:for-all-workaround-qcs8300-sa8775p-qref-refgen-20260731
Open

WORKAROUND: Add qref and refgen regulator support for QCS8300 and SA8775p PCIe PHYs#1611
ziyuezhang-123 wants to merge 3 commits into
qualcomm-linux:tech/all/workaroundfrom
ziyuezhang-123:for-all-workaround-qcs8300-sa8775p-qref-refgen-20260731

Conversation

@ziyuezhang-123

Copy link
Copy Markdown

The PCIe QMP PHYs on QCS8300 and SA8775p require dedicated qref and refgen voltage supplies for stable operation. Without enabling these supplies, PCIe may be unstable and the system can occasionally crash under certain scenarios.

The refgen supply works around a hardware issue where both QREF and the PCIe PHY are expected to depend on refgen2, but QREF actually depends on refgen3. This series therefore votes for refgen3 manually via the refgen supply.

Change 1: phy: qcom: qmp-pcie: Add qref and refgen regulator vote for QCS8300 and SA8775p PHY
Change 2: arm64: dts: qcom: qcs8300: Add qref and refgen supply for PCIe PHYs
Change 3: arm64: dts: qcom: sa8775p: Add qref and refgen supply for PCIe PHYs

This patch series is currently under internal review and will be submitted to the upstream Linux kernel community.

Link: http://shc-kerarch-hyd:8080/kernel_archive/20260703094224.990231-1-ziyue.zhang@oss.qualcomm.com/

CRs-Fixed:

Ziyue Zhang added 3 commits July 31, 2026 10:01
…or QCS8300 and SA8775p PHY

Add a new sa8775p_qmp_phy_vreg_l that includes vdda-phy, vdda-pll,
vdda-qref, vdda-refgen and refgen supplies, and use it for QCS8300
and SA8775p PCIe PHY configurations. This avoids modifying
sm8550_qmp_phy_vreg_l and breaking SM8550 and SM8650.

Note that due to a hardware issue, QREF actually depends on refgen3
rather than refgen2 as documented; refgen3 is therefore voted manually
via the refgen supply as a workaround.

Fixes: a05b6d5 ("phy: qcom-qmp-pcie: add support for sa8775p")
Fixes: ebf198f ("phy: qcom-qmp-pcie: add dual lane PHY support for QCS8300")
Link: http://shc-kerarch-hyd:8080/kernel_archive/20260703094224.990231-3-ziyue.zhang@oss.qualcomm.com/
Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com>
… PCIe PHYs

The QMP PCIe PHYs on QCS8300 require dedicated qref and refgen voltage
supplies for stable operation. Without these supplies, the system may
occasionally crash.

Add vdda-qref-supply and vdda-refgen-supply in the board files
(QCS8300-RIDE, Monaco-EVK and Monaco-Arduino-Monza), and add
refgen-supply in the SoC DTSI (monaco.dtsi) since refgen is an
on-chip regulator shared across boards. The refgen supply votes for
refgen3 as a workaround for a hardware issue where both QREF and the
PCIe PHY are expected to depend on refgen2, but QREF actually depends
on refgen3.

Fixes: 33967ea ("arm64: dts: qcom: qcs8300-ride: enable pcie0 interface")
Fixes: cdb613a ("arm64: dts: qcom: qcs8300-ride: enable pcie1 interface")
Fixes: 41e2424 ("arm64: dts: qcom: monaco-evk: Enable PCIe0 and PCIe1.")
Fixes: 5238f4e ("arm64: dts: qcom: Add Monaco Monza SoM")
Link: http://shc-kerarch-hyd:8080/kernel_archive/20260703094224.990231-4-ziyue.zhang@oss.qualcomm.com/
Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com>
… PCIe PHYs

The QMP PCIe PHYs on SA8775p require dedicated qref and refgen voltage
supplies for stable operation. Without these supplies, the system may
occasionally crash.

Add vdda-qref-supply and vdda-refgen-supply in the board files
(Lemans-EVK, Lemans-RIDE, QCS9100-RIDE, QCS9100-RIDE-R3, SA8775P-RIDE
and SA8775P-RIDE-R3), and add refgen-supply in the SoC DTSI (lemans.dtsi)
since refgen is an on-chip regulator shared across boards. The refgen
supply votes for refgen3 as a workaround for a hardware errata (see
cover letter).

Fixes: 94d7d37 ("arm64: dts: qcom: lemans-evk: Enable PCIe support")
Fixes: 76326da ("arm64: dts: qcom: lemans: Refactor ride/ride-r3 boards based on daughter cards")
Link: http://shc-kerarch-hyd:8080/kernel_archive/20260703094224.990231-5-ziyue.zhang@oss.qualcomm.com/
Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com>
@qlijarvis

Copy link
Copy Markdown

🔨 Build Failure Analysis — PR #1611

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

# Error File:Line PR-introduced? Root Cause
1 Merge conflict arch/arm64/boot/dts/qcom/qcs8300-ride.dts No Pre-existing conflict with integration branch topic/tech/all/workaround
2 Merge conflict drivers/bluetooth/hci_qca.c No Pre-existing conflict with integration branch topic/tech/all/workaround
3 Duplicate symbol definition (would fail compilation) drivers/phy/qualcomm/phy-qcom-qmp-pcie.c:3495 Yes PR defines sa8775p_qmp_phy_vreg_l twice (lines 3492 and 3495)

Verdict

The build failed during automerge due to 2 pre-existing merge conflicts. However, the PR introduces a critical compilation error: duplicate definition of sa8775p_qmp_phy_vreg_l that would cause build failure even if merge conflicts were resolved.

📎 Detailed analysis: Full report

@qlijarvis

Copy link
Copy Markdown

🔨 Build Failure Analysis — PR #1611

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

# Error File:Line PR-introduced? Root Cause
1 Merge conflict during automerge arch/arm64/boot/dts/qcom/qcs8300-ride.dts No Integration conflict: PR modifies PCIe PHY supply assignments in the same file region that was changed in the baseline branch
2 Merge conflict during automerge drivers/bluetooth/hci_qca.c No Integration conflict: Unrelated changes in baseline branch conflict with PR changes

Verdict

This is not a compilation failure. The build failed during the pre-build automerge/integration step due to merge conflicts between the PR branch and the baseline integration branch. Both conflicts are integration issues, not PR-introduced compilation errors.

📎 Detailed analysis: Full report

@qlijarvis

Copy link
Copy Markdown

PR #1611 — validate-patch

PR: #1611

Verdict Issues Detailed Report
N/A 0 Full report

Final Summary

  1. Lore link present: No — WORKAROUND: prefix; no lore.kernel.org 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 workaround, not posted upstream
  4. PR present in qcom-next/topics: Partial - 3/3 commit(s) only have partial integration evidence

Note: The WORKAROUND: prefix correctly indicates these are temporary vendor-only fixes for hardware issues. However, the duplicate symbol definition in commit 1/3 is a critical error that will prevent compilation and must be fixed before merging.

Verdict: N/A — click to expand

🔍 Patch Validation

PR: #1611 - WORKAROUND: Add qref and refgen regulator support for QCS8300 and SA8775p PCIe PHYs (3 commits)
Upstream commit: N/A (vendor-only workarounds)
Verdict: ⏭️ NOT APPLICABLE — WORKAROUND commits; no upstream validation required

Summary

This PR contains 3 commits, all prefixed with WORKAROUND::

  1. WORKAROUND: phy: qcom: qmp-pcie: Add qref and refgen regulator vote for QCS8300 and SA8775p PHY
  2. WORKAROUND: arm64: dts: qcom: qcs8300: Add qref and refgen supply for PCIe PHYs
  3. WORKAROUND: arm64: dts: qcom: sa8775p: Add qref and refgen supply for PCIe PHYs

All commits include Link: tags pointing to an internal kernel archive server (http://shc-kerarch-hyd:8080/kernel_archive/), not to lore.kernel.org.

Commit Prefix Analysis

According to the validate-patch skill's prefix pattern table:

Prefix Meaning Lore link required?
WORKAROUND: Temporary fix, not suitable for upstream No — skip validation

The WORKAROUND: prefix indicates these are vendor-only temporary fixes that address hardware issues or limitations and are not intended for upstream submission. Therefore:

  • No lore.kernel.org link is expected or required
  • Validation against upstream sources is not applicable
  • These commits are designed to remain in the vendor tree only

Commit Message Review

All three commits follow a consistent structure:

  • ✅ Clear subject lines describing the workaround scope
  • ✅ Detailed commit bodies explaining the hardware issue and the workaround approach
  • Fixes: tags referencing the original commits that introduced the affected code
  • ✅ Proper Signed-off-by: trailers
  • ✅ Internal Link: tags for vendor tracking

Note on commit 1/3: The commit message states "Note that due to a hardware issue, QREF actually depends on refgen3 rather than refgen2 as documented; refgen3 is therefore voted manually via the refgen supply as a workaround." This explicitly documents the hardware errata being worked around, which is appropriate for a WORKAROUND: commit.

Diff Review

The changes are internally consistent across all three commits:

Commit 1/3 (driver):

  • ✅ Adds a new sa8775p_qmp_phy_vreg_l[] array including the additional "refgen" supply
  • ⚠️ Issue detected: The code adds a duplicate definition of sa8775p_qmp_phy_vreg_l[]. The original definition at line 3492 already exists, and the patch adds another at line 3495. This will cause a compilation error (redefinition).

Commits 2/3 and 3/3 (device trees):

  • ✅ Add vdda-qref-supply and vdda-refgen-supply properties to board-level PHY nodes
  • ✅ Add refgen-supply properties to SoC-level PHY nodes in DTSI files
  • ✅ Changes are consistent across QCS8300 (Monaco) and SA8775p (Lemans) platforms

Issues Found

  1. ❌ CRITICAL: Duplicate symbol definition in commit 1/3

    The patch adds:

    +static const char * const sa8775p_qmp_phy_vreg_l[] = {
    +	"vdda-phy", "vdda-pll", "vdda-qref", "vdda-refgen", "refgen",
    +};

    But the context shows that sa8775p_qmp_phy_vreg_l[] already exists at line 3492:

    static const char * const sa8775p_qmp_phy_vreg_l[] = {
    	"vdda-phy", "vdda-pll", "vdda-qref", "vdda-refgen",
    };

    Root cause: The patch should modify the existing array to add "refgen", not create a duplicate definition.

    Fix required: Change the patch to update the existing definition:

    @@ -3492,7 +3492,7 @@ static const char * const sa8775p_qmp_phy_vreg_l[] = {
    -	"vdda-phy", "vdda-pll", "vdda-qref", "vdda-refgen",
    +	"vdda-phy", "vdda-pll", "vdda-qref", "vdda-refgen", "refgen",
     };
  2. ⚠️ WARNING: Missing usage of the new regulator array

    After adding/modifying sa8775p_qmp_phy_vreg_l[], the patch does not show where this array is used in the driver configuration structures (e.g., qmp_phy_cfg for SA8775p or QCS8300). The driver must reference this new array for the additional regulators to be requested at runtime.

    Recommendation: Verify that the full patch series (or a related commit) updates the relevant qmp_phy_cfg structures to use sa8775p_qmp_phy_vreg_l instead of the previous regulator list.

Integration Presence

According to integration_presence_report.md:

Commit qcom-next topics Final
1/3 partial partial partial
2/3 partial missing partial
3/3 partial partial partial

Overall status: PARTIAL — 3/3 commits have only partial integration evidence.

Interpretation: The commits may have been partially integrated (e.g., subject lines or file paths match), but the full change content has not been verified in qcom-next or topic branches. This is expected for workaround commits that may be under active development or testing.

Verdict

❌ FAIL — Critical compilation error in commit 1/3 due to duplicate symbol definition.

Recommendation

Do not merge until the following issue is resolved:

  1. Fix commit 1/3: Remove the duplicate sa8775p_qmp_phy_vreg_l[] definition. The patch should modify the existing array at line 3492, not add a new one.

  2. Verify driver configuration: Ensure that the SA8775p and QCS8300 PHY configuration structures (qmp_phy_cfg) are updated to reference the modified sa8775p_qmp_phy_vreg_l[] array. This may be in a separate commit or may need to be added.

  3. Build verification: After fixing the duplicate definition, verify that the driver compiles cleanly with the changes.

Once the duplicate definition is resolved and the driver configuration is verified, the workaround changes are appropriate for a vendor tree.

Final Summary

  1. Lore link present: No — WORKAROUND: prefix; no lore.kernel.org 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 workaround, not posted upstream
  4. PR present in qcom-next/topics: Partial — 3/3 commits have partial integration evidence; full content not verified

Note: The WORKAROUND: prefix correctly indicates these are temporary vendor-only fixes for hardware issues. However, the duplicate symbol definition in commit 1/3 is a critical error that will prevent compilation and must be fixed before merging.

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

Commit Subject qcom-next topics Final
1/3 [PATCH 1/3] WORKAROUND: phy: qcom: qmp-pcie: Add qref and refgen 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/3 [PATCH 2/3] WORKAROUND: arm64: dts: qcom: qcs8300: Add qref and 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/3 [PATCH 3/3] WORKAROUND: arm64: dts: qcom: sa8775p: Add qref and 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

Final Status

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

@qlijarvis

Copy link
Copy Markdown

PR #1611 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch ⏭️ Not executed - merge conflict blocked CI
dt-binding-check ⏭️ Not executed - merge conflict blocked CI
dtb-check ⏭️ Not executed - merge conflict blocked CI
sparse-check ⏭️ Not executed - merge conflict blocked CI
check-uapi-headers ⏭️ Not executed - merge conflict blocked CI
check-patch-compliance ⏭️ Not executed - merge conflict blocked CI
tag-check All commits have valid WORKAROUND: prefix
qcom-next-check N/A Unable to determine target branch

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #1611 - WORKAROUND: Add qref and refgen regulator support for QCS8300/SA8775p PCIe PHYs
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/30598063415

Checker Result Summary
checkpatch ⏭️ Not executed - merge conflict blocked CI
dt-binding-check ⏭️ Not executed - merge conflict blocked CI
dtb-check ⏭️ Not executed - merge conflict blocked CI
sparse-check ⏭️ Not executed - merge conflict blocked CI
check-uapi-headers ⏭️ Not executed - merge conflict blocked CI
check-patch-compliance ⏭️ Not executed - merge conflict blocked CI
tag-check All commits have valid WORKAROUND: prefix
qcom-next-check N/A Unable to determine target branch

⚠️ CI Infrastructure Issue: Merge Conflicts During Automerge

Root cause: The kernel-checkers CI workflow failed during the automerge/integration step before any actual checker validation could run. Merge conflicts were encountered when merging the PR branch with the integration baseline.

Failure details:

Merging topic branches...
 ** Merging topic branch: topic/tech/all/workaround
Auto-merging arch/arm64/boot/dts/qcom/qcs8300-ride.dts
CONFLICT (content): Merge conflict in arch/arm64/boot/dts/qcom/qcs8300-ride.dts
Auto-merging drivers/bluetooth/hci_qca.c
CONFLICT (content): Merge conflict in drivers/bluetooth/hci_qca.c
Automatic merge failed; fix conflicts and then commit the result.
Merge failed, manual merge
##[error]Process completed with exit code 1.

Affected files:

  • arch/arm64/boot/dts/qcom/qcs8300-ride.dts
  • drivers/bluetooth/hci_qca.c

Analysis:

This is not a patch quality issue — the CI infrastructure could not complete the integration merge required to run the checkers. The conflicts indicate that:

  1. The PR branch (topic/tech/all/workaround) has diverged from the current integration baseline
  2. Changes in qcs8300-ride.dts and hci_qca.c conflict with other topic branches being merged

Fix:

The PR author needs to rebase the topic branch onto the latest integration baseline to resolve these conflicts:

# Fetch the latest baseline
git fetch origin <baseline-branch>

# Rebase the PR branch
git checkout topic/tech/all/workaround
git rebase origin/<baseline-branch>

# Resolve conflicts in:
#   - arch/arm64/boot/dts/qcom/qcs8300-ride.dts
#   - drivers/bluetooth/hci_qca.c

# For each conflicted file:
git add <file>
git rebase --continue

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

Reproduce locally:

# Clone the kernel-config repo to get automerge tooling
git clone https://github.com/qualcomm-linux/kernel-config
cd kernel-config

# Run automerge with the PR branch
./automerge.sh --pr 1611

✅ tag-check — PASS

All three commits in the PR use the WORKAROUND: prefix, which is valid:

  1. WORKAROUND: phy: qcom: qmp-pcie: Add qref and refgen regulator vote for QCS8300 and SA8775p PHY
  2. WORKAROUND: arm64: dts: qcom: qcs8300: Add qref and refgen supply for PCIe PHYs
  3. WORKAROUND: arm64: dts: qcom: sa8775p: Add qref and refgen supply for PCIe PHYs

The WORKAROUND: prefix is appropriate for temporary fixes addressing hardware issues (as documented in the commit messages: "refgen3 is voted manually via the refgen supply as a workaround for a hardware issue").


⚠️ check-patch-compliance — Predicted Failure

Note: This checker did not run due to the merge conflict, but based on the patch content, it would likely fail with the following issues:

Issue 1: Non-lore.kernel.org Link URLs

All three commits use internal archive links instead of lore.kernel.org:

Link: http://shc-kerarch-hyd:8080/kernel_archive/20260703094224.990231-3-ziyue.zhang@oss.qualcomm.com/

The check-patch-compliance checker requires public lore.kernel.org URLs for FROMLIST:, FROMGIT:, UPSTREAM:, and BACKPORT: prefixes.

Issue 2: WORKAROUND prefix not in allowed list

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

  • FROMLIST:
  • FROMGIT:
  • UPSTREAM:
  • BACKPORT:

The WORKAROUND: prefix (while valid for the tree) is not in the checker's allowed list, so these commits will fail check-patch-compliance validation.

This is a known limitation — vendor-specific prefixes like WORKAROUND:, QCLINUX:, and PENDING: always fail this checker even though they are valid for internal topic branches.

Expected behavior: The checker will fail, but this is acceptable for WORKAROUND: commits that are not intended for upstream submission.


Verdict

Cannot merge until merge conflicts are resolved.

The PR cannot be evaluated by the kernel-checkers CI until the author rebases onto the latest integration baseline and resolves the conflicts in:

  • arch/arm64/boot/dts/qcom/qcs8300-ride.dts
  • drivers/bluetooth/hci_qca.c

Once rebased and conflicts resolved:

  1. Re-trigger the CI run
  2. The checkers will execute and provide validation results
  3. check-patch-compliance will fail (expected for WORKAROUND: prefix) — this is acceptable for vendor-internal workarounds

Action required: Rebase the PR branch and resolve merge conflicts, then re-run CI.

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.

2 participants