On 06/26/2013 03:59 AM, Mikko Perttunen wrote:
> After this patch, usb vbus regulators for tegra usb phy devices can be 
> specified
> with the device tree attribute vbus-supply = <&x> where x is a regulator 
> defined
> in the device tree.

> diff --git a/drivers/usb/phy/phy-tegra-usb.c b/drivers/usb/phy/phy-tegra-usb.c

> @@ -250,12 +251,24 @@ static int utmip_pad_open(struct tegra_usb_phy *phy)
>               return PTR_ERR(phy->pad_clk);
>       }
>  
> +     phy->vbus = devm_regulator_get(phy->dev, "vbus");
> +     /* On some boards, the VBUS regulator doesn't need to be controlled */
> +     if (IS_ERR(phy->vbus)) {
> +             if (PTR_ERR(phy->vbus) == -ENODEV) {
> +                     dev_notice(phy->dev, "no vbus regulator");
> +                     phy->vbus = NULL;
> +             } else {
> +                     return PTR_ERR(phy->vbus);
> +             }
> +     }

I think this code should be added to some more core initialization
function; IIRC, there are separate utmip_pad_open() and some other
function for ULPI mode, and in the future there may be more for HSIC, etc.

For the error-handling, I think it'd be better to do:

* If property doesn't exist, set phy->vbus to some error value, e.g.
ERR_PTR(-ENODEV).
* If property does exist, call devm_regulator_get().
** If devm_regulator_get() returned any error, return it.

Or, does devm_regulator_get() return -ENODEV if-and-only-if the
vbus-supply DT property does not exist?

and ...

> @@ -280,6 +293,14 @@ static void utmip_pad_power_on(struct tegra_usb_phy *phy)
>       spin_unlock_irqrestore(&utmip_pad_lock, flags);
>  
>       clk_disable_unprepare(phy->pad_clk);
> +
> +     if (phy->vbus) {

Here, check if (IS_ERR(phy->vbus) instead. The reason is if
devm_regulator_get() returns either a valid value or an error-pointer,
then NULL could in theory be a valid value (it's up the the regulator
API to determine that), and hence this code shouldn't assume that it can
use NULL to represent "no regulator".
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to