Re: [PATCH v3 5/5] Revert "scsi: ufs: disable vccq if it's not needed by UFS device"

From: Marc Gonzalez
Date: Sat Feb 09 2019 - 06:50:58 EST

Adding DT & regulator maintainers.

FTR, we are discussing the revert of patch 60f0187031c0
in the UFSHC driver.

On 09/02/2019 09:42, Alim Akhtar wrote:

> On 08/02/19 8:29 PM, Jeffrey Hugo wrote:
>> The evidence seems simple.  We have properly described in DT all the
>> regulators that are consumed by the UFS host controller, and by
>> extension, the UFS storage chip as well.
>> By default, with no kernel changes, UFS does not work.
>> Marc and I debugged the issue, and found that the VCCQ regulator was not
>> being handled properly, and reverting the change we are discussing fixes
>> the VCCQ regulator issue, and, as a result, UFS works.
> OK, fair, before we revert this patch, Marc can you try below patch,
> or let me know if you have already tried this and share your
> result/observation:
> --- a/arch/arm64/boot/dts/qcom/msm8998-mtp.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8998-mtp.dtsi
> @@ -212,6 +212,7 @@
> vreg_l26a_1p2: l26 {
> regulator-min-microvolt = <1200000>;
> regulator-max-microvolt = <1200000>;
> + regulator-always-on;

This property will make _regulator_disable() be (mostly)
a NOP for vreg_l26a_1p2. So the UFSHC driver will not
be able to disable vccq, and UFS will work.

I tested something similar by making regulator_disable()
a NOP which returns immediately. That's actually how I
found the issue in the UFSHC driver ;-)

But this is not a proper solution. This makes it impossible
to disable l26, even when there is no UFS driver, or when
the UFSHC goes into sleep mode.

>> Our analysis is that VCCQ is required and 60f0187031c05e
>> prevents the proper configuration of VCCQ, thus a required
>> resource (VCCQ) is not in the proper state.
> Not in proper state or vccq regulator is disabled?

The improper state is being disabled, instead of enabled.