[RFC PATCH v1] scsi: ufs: Remove pre-defined initial VCC voltage values

Avri Altman Avri.Altman at wdc.com
Tue Dec 1 02:00:21 EST 2020


> > >>>> Hi Stanley
> > >>>>
> > >>>> Thanks for the patch. Bao (nguyenb) was also working towards
> something
> > >>>> similar.
> > >>>> Would it be possible for you to take into account the scenario in
> which the
> > >>>> same platform supports both 2.x and 3.x UFS devices?
> > >>>>
> > >>>> These've different voltage requirements, 2.4v-3.6v.
> > >>>> I'm not sure if standard dts regulator properties can support this.
> > >>>>
> > >>>
> > >>> What is the actual voltage requirement for these devices and how
> does
> > >>> the software know what voltage to pick in this range?
> > >>>
> > >>> Regards,
> > >>> Bjorn
> > >>>
> > >>>> -asd
> > >>>>
> > >>>>
> > >>>> --
> > >>>> The Qualcomm Innovation Center, Inc. is a member of the Code
> Aurora Forum,
> > >>>> Linux Foundation Collaborative Project
> > >>
> > >> For platforms that support both 2.x (2.7v-3.6v) and 3.x (2.4v-2.7v), the
> > >> voltage requirements (Vcc) are 2.4v-3.6v. The software initializes the
> > >> ufs device at 2.95v & reads the version and if the device is 3.x, it may
> > >> do the following:
> > >> - Set the device power mode to SLEEP
> > >> - Disable the Vcc
> > >> - Enable the Vcc and set it to 2.5v
> > >> - Set the device power mode to ACTIVE
> > >>
> > >> All of the above may be done at HS-G1 & moved to max supported gear
> > >> based on the device version, perhaps?
> > >
> > > Hi Asutosh,
> > >
> > > Thanks for sharing this idea.
> > >
> > > 1. I did not see above flow defined in UFS specifications, please
> > > correct me if I was wrong.
> > >
> > > 2. For above flow, the concern is that I am not sure if all devices
> > > supporting VCC (2.4v - 2.7v) can accept higher voltage, say 2.95v, for
> > > version detection.
> > >
> > > 3. For version detection, another concern is that I am not sure if all
> > > 3.x devices support VCC (2.4v - 2.7v) only, or in other words, I am not
> > > sure if all 2.x devices support VCC (2.7v - 3.6v) only. The above rule
> > > will break any devices not obeying this "conventions".
> > >
> > > For platforms that support both 2.x (2.7v-3.6v) and 3.x (2.4v-2.7v),
> > >
> > > It would be good for UFS drivers detecting the correct voltage if the
> > > protocol is well-defined in specifications. Until that day, any
> > > "non-standard" way may be better implemented in vendor's ops?
> > >
> > > If the vop concept works on your platform, we could still keep struct
> > > ufs_vreg and allow vendors to configure proper min_uV and max_uV to
> make
> > > regulator_set_voltage() works during VCC toggling flow. Without specific
> > > vendor configurations, min_uV and max_uV would be NULL by default
> and
> > > UFS core driver will only enable/disasble VCC regulator only without
> > > adjusting its voltage.
> > >
> >
> > I think this would work. Do you plan to implement this?
> > If not, I can take this up. Please let me know.
> 
> Thanks for the understanding and support.
> 
> I would like to re-post this patch to simply removing the pre-defined
> initial values of all device powers.
> 
> For vop idea supporting the voltage detection way, could you please take
> it up since this would be better to fit what you need for fixing this
> issue?
Again - why vop and not a dts flag?
The platform owner is aware of which device ships on which platform, isn't it?

Thanks,
Avri


More information about the linux-arm-kernel mailing list