[PATCH v2 2/4] phy: qcom: qmp-pcie: Add qref and refgen regulator vote for QCS8300 and SA8775p PHY

Ziyue Zhang ziyue.zhang at oss.qualcomm.com
Tue Nov 3 02:50:02 PST 2026


On 10/28/2026 10:37 PM, Konrad Dybcio wrote:
> On 9/16/26 12:20 PM, Ziyue Zhang wrote:
>> 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.
>>
>> These supplies were missing from the original driver, which was found
>> to be the root cause of occasional system crashes observed on QCS8300
>> and SA8775p platforms. Without voting for these supplies, the PCIe PHY
>> lacks stable reference clock and voltage, so the PHY never becomes
>> ready and initialization times out:
>>
>>    [    7.303119] qcom-qmp-pcie-phy 1c04000.phy: phy initialization timed-out
>>    [    7.309948] phy phy-1c04000.phy.0: phy poweron failed --> -110
>>
>> 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: a05b6d5135ec ("phy: qcom-qmp-pcie: add support for sa8775p")
>> Fixes: ebf198f17b5a ("phy: qcom-qmp-pcie: add dual lane PHY support for QCS8300")
>> Signed-off-by: Ziyue Zhang <ziyue.zhang at oss.qualcomm.com>
>> ---
>>   drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 16 ++++++++++------
>>   1 file changed, 10 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
>> index da83358c97ea..ab81c6e584a8 100644
>> --- a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
>> +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
>> @@ -4094,6 +4094,10 @@ static const char * const sm8550_qmp_phy_vreg_l[] = {
>>   	"vdda-phy", "vdda-pll", "vdda-qref",
>>   };
>>   
>> +static const char * const sa8775p_qmp_phy_vreg_l[] = {
>> +	"vdda-phy", "vdda-pll", "vdda-qref", "vdda-refgen", "refgen",
>> +};
> I think we could grab them unconditionally, as QREF/REFGEN appears
> on most/all SoCs (perhaps with regulator_optional_get so that we
> defer the correctness of this to dt-bindings for any specific
> platform)
>
> Konrad
Hi Konrad

I think that on future platforms, qref will be voted by the tcsr
driver or another driver, depending on where those registers are
located. The PHY driver will only need to vote for refgen1p2 and refgen0p9.

If future platforms need to vote for vdda-qref, vdda-refgen, and refgen,
they can simply reuse this vreg_list.
BR
Ziyue



More information about the linux-phy mailing list