diff mbox series

[v3,4/5] scsi: ufs: Change "<name>-max-microamp" to non-mandatory property

Message ID 1552875280-16196-6-git-send-email-stanley.chu@mediatek.com (mailing list archive)
State New, archived
Headers show
Series [v3,1/5] scsi: ufs: Remove unused min_uA field in struct ufs_vreg | expand

Commit Message

Stanley Chu March 18, 2019, 2:14 a.m. UTC
In dt-bindings for ufs, "<name>-max-microamp" property indicates
current limit and is mandatory if "<name>-fixed-regulator" is not
defined on a specified regulator.

However, in some platforms, regulators without "<name>-fixed-regulator"
deifned may not need to define their current limit. They may only
want to define voltage range for proper voltage switching in
different power modes, especially for vcc, vccq or vccq2.

However, missing "<name>-max-microamp" property in device tree
will lead to initialization fail, thus above limitation shall be
resolved to tolerate such kind of regulators.

After resolving this, these regulators without "<name>-max-microamp"
will have undefined "max current" value, i.e., zero value in "max_uA"
field in struct ufs_vreg. Because we do bypass current switching
operation (by regulator_set_load) in case of undefined current limit,
this patch shall be safe.

Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
---
 drivers/scsi/ufs/ufshcd-pltfrm.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/scsi/ufs/ufshcd-pltfrm.c
index 588079286e8a..2f244d388ca8 100644
--- a/drivers/scsi/ufs/ufshcd-pltfrm.c
+++ b/drivers/scsi/ufs/ufshcd-pltfrm.c
@@ -157,11 +157,9 @@  static int ufshcd_populate_vreg(struct device *dev, const char *name,
 		goto out;
 
 	snprintf(prop_name, MAX_PROP_SIZE, "%s-max-microamp", name);
-	ret = of_property_read_u32(np, prop_name, &vreg->max_uA);
-	if (ret) {
-		dev_err(dev, "%s: unable to find %s err %d\n",
-				__func__, prop_name, ret);
-		goto out;
+	if (of_property_read_u32(np, prop_name, &vreg->max_uA)) {
+		dev_info(dev, "%s: unable to find %s\n", __func__, prop_name);
+		vreg->max_uA = 0;
 	}
 
 	if (!strcmp(name, "vcc")) {