UFS specification allows different VCC configurations for UFS devices, for example, (1)2.70V - 3.60V (For UFS 2.x devices) (2)2.40V - 2.70V (For UFS 3.x devices) For platforms supporting both ufs 2.x (2.7v-3.6v) and ufs 3.x (2.4v-2.7v), the voltage requirements (VCC) is 2.4v-3.6v. So to support this, we need to start the ufs device initialization with the common VCC voltage(2.7v) and after reading the device descriptor we need to switch to the correct range(vcc min and vcc max) of VCC voltage as per UFS device type since 2.7v is the marginal voltage as per specs for both type of devices. Once VCC regulator supply has been intialised to 2.7v and UFS device type is read from device descriptor, we follows below steps to change the VCC voltage values. 1. Set the device to SLEEP state. 2. Disable the Vcc Regulator. 3. Set the vcc voltage according to the device type and reenable the regulator. 4. Set the device mode back to ACTIVE. The above changes are done in vendor specific file by adding a vops which will be needed for platform supporting both ufs 2.x and ufs 3.x devices. Nitin Rawat (3): scsi: ufs: export api for use in vendor file scsi: ufs: add a vops to configure VCC voltage level scsi: ufs-qcom: configure VCC voltage level in vendor file drivers/scsi/ufs/ufs-qcom.c | 51 +++++++++++++++++++++++++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.c | 14 ++++++++++--- drivers/scsi/ufs/ufshcd.h | 14 +++++++++++++ 3 files changed, 76 insertions(+), 3 deletions(-) -- 2.7.4