scsi: ufs: Change "<name>-max-microamp" to non-mandatory property
authorStanley Chu <stanley.chu@mediatek.com>
Thu, 28 Mar 2019 09:16:26 +0000 (17:16 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 4 Apr 2019 03:11:35 +0000 (23:11 -0400)
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"
property may not need to define their current limit because they may want
to define voltage range only for proper voltage switching in different
power modes, especially for vcc, vccq or vccq2.

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

After resolving this, regulators without "<name>-max-microamp" property
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>
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Acked-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd-pltfrm.c

index 81c5d16..3444ff8 100644 (file)
@@ -158,11 +158,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")) {