Hi Kishon, On Wed, Apr 3, 2013 at 10:38 AM, Kishon Vijay Abraham I <kishon@xxxxxx> wrote: > Hi, > > > On Monday 01 April 2013 07:24 PM, Vivek Gautam wrote: >> >> Adding APIs to handle runtime power management on PHY >> devices. PHY consumers may need to wake-up/suspend PHYs >> when they work across autosuspend. >> >> Signed-off-by: Vivek Gautam <gautam.vivek@xxxxxxxxxxx> >> --- >> include/linux/usb/phy.h | 141 >> +++++++++++++++++++++++++++++++++++++++++++++++ >> 1 files changed, 141 insertions(+), 0 deletions(-) >> >> diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h >> index 6b5978f..01bf9c1 100644 >> --- a/include/linux/usb/phy.h >> +++ b/include/linux/usb/phy.h >> @@ -297,4 +297,145 @@ static inline const char *usb_phy_type_string(enum >> usb_phy_type type) >> return "UNKNOWN PHY TYPE"; >> } >> } >> + >> +static inline void usb_phy_autopm_enable(struct usb_phy *x) >> +{ >> + if (!x || !x->dev) { >> + dev_err(x->dev, "no PHY or attached device available\n"); >> + return; >> + } >> + >> + pm_runtime_enable(x->dev); >> +} > > > IMO we need not have wrapper APIs for runtime_enable and runtime_disable > here. Generally runtime_enable and runtime_disable is done in probe and > remove of a driver respectively. So it's better to leave the > runtime_enable/runtime_disable to be done in *phy provider* driver than > having an API for it to be done by *phy user* driver. Felipe, what do you > think? Thanks!! That's very true, runtime_enable() and runtime_disable() calls are made by *phy_provider* only. But a querry here. Wouldn't in any case a PHY consumer might want to disable runtime_pm on PHY ? Say, when consumer failed to suspend the PHY properly (*put_sync(phy->dev)* fails), how much sure is the consumer about the state of PHY ? -- Thanks & Regards Vivek -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html