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 81c5d16e4bc0a0cde1200030d95f2583ef9cd1fa..3444ff83c568e5e65b8c16afe38dba054196a91b 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")) {