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

From: Naveen Kumar Goud Arepalli (QUIC)
Date: Wed Jul 26 2023 - 08:32:33 EST


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.
>>>> 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.

Thanks,
Naveen