RE: [PATCH V1] arm64: dts: qcom: sa8775p-ride: Remove min and max voltages for L8A

From: Naveen Kumar Goud Arepalli (QUIC)
Date: Fri Aug 04 2023 - 04:04:37 EST


On 26/07/2023 14:32, Naveen Kumar Goud Arepalli (QUIC) wrote:
> On Tue, Jul 25, 2023 at 03:30:07PM +0530, Naveen Kumar Goud Arepalli wrote:
>> L8A is the supply for UFS VCC, UFS specification allows different VCC
>> configurations for UFS devices.
>> -UFS 2.x devices: 2.70V - 3.60V
>> -UFS 3.x devices: 2.40V - 2.70V
>>
>> As sa8775p-ride supports both ufs 2.x and ufs 3.x devices, remove
>> min/max voltages for L8A regulator. Initial voltage of L8A will be
>> set to 2.504v or 2.952v during PON depending on the UFS device type.
>> On sa8775, UFS is the only client in Linux for L8A and this regulator
>> will be voted only for enabling/disabling.
>>
>> Signed-off-by: Naveen Kumar Goud Arepalli <quic_narepall@xxxxxxxxxxx>
>> ---
>> arch/arm64/boot/dts/qcom/sa8775p-ride.dts | 2 --
>> 1 file changed, 2 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/sa8775p-ride.dts
>> b/arch/arm64/boot/dts/qcom/sa8775p-ride.dts
>> index ed76680410b4..6f3891a09e59 100644
>> --- a/arch/arm64/boot/dts/qcom/sa8775p-ride.dts
>> +++ b/arch/arm64/boot/dts/qcom/sa8775p-ride.dts
>> @@ -98,8 +98,6 @@
>>
>> vreg_l8a: ldo8 {
>> regulator-name = "vreg_l8a";
>> - regulator-min-microvolt = <2504000>;
>> - regulator-max-microvolt = <3300000>;
>> regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> regulator-allow-set-load;
>> regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
>> --
>> 2.17.1
>>
>
> Reviewing with very little expertise in the area....
> A few questions below that would help me understand this a bit better.
>
> Does it make sense to *not* set the range of the regulator at all?:
>>>> Yes, we are removing the range of the regulator.
>
> 1. A board dts knows its UFS device
> 2. Is UFS backwards compatible with respect to UFS2/UFS3?
> I don't know how the version is determined, but if it's a
> "start at UFS2, go to UFS3" should it be scaled as that goes?
> >>>> For a UFS device 3.x, we cannot start as UFS 2.0. vcc has to be as per UFS 3.x recommendations.
>
> Relying on the bootloader to set up the device before the kernel
> starts seems like a direction that should be actively avoided instead
> of depended on in my opinion.

I have trouble finding which part is your reply and which is quote of Andrew. Please reconfigure your mail client.

>>>>> As per upstream UFS driver, voltage voting is not there and we vote only for enable/disable .
> Since UFS is the only client in Linux for this rail (L8A ), we don't
> need min and max range to support UFS 2.x and 3.x cards.

I would assume some reasonable range is always desired. Why it cannot be the wider range from both? 2.4 - 3.6?

Wider range cannot be mentioned in DT, For UFS 2.x range is 2.7 V to 3.6 V and for UFS 3.x range is 2.4V to 2.7V.
Giving the wider range will not set the correct voltage.

For example:
If the range is mentioned as 2.4V to 3.6V in DT and we have connected UFS 2.x device, Since UFS driver is voting only for
regulator_enable(voltage is not being set) the voltage will be 2.4V(min voltage) from pmic driver which is wrong voltage for
UFS 2.x devices, which is violation of spec.

Regards
Naveen