phy: twl4030-usb: Fix for musb session bit based PM
Now with musb driver implementing generic session bit based PM, we need to have the USB PHYs behaving in a sane way for platforms implementing PM. Currently twl4030-usb enables PM in twl4030_phy_power_on() and then disables it in twl4030_phy_power_off(). This will block PM runtime for the SoC when no cable is connected. Fix the issue by moving PM runtime autosuspend call to happen where it gets called in twl4030_phy_power_on(). Note that this patch should not be backported to anything before commit467d5c9807
("usb: musb: Implement session bit based runtime PM for musb-core") as before that all the glue layers implemented their own PM. Fixes:467d5c9807
("usb: musb: Implement session bit based runtime PM for musb-core") Tested-by: Ladislav Michl <ladis@linux-mips.org> Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Tony Lindgren <tony@atomide.com> Acked-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Bin Liu <b-liu@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
247529170d
commit
f7c4a46352
|
@ -459,8 +459,6 @@ static int twl4030_phy_power_off(struct phy *phy)
|
|||
struct twl4030_usb *twl = phy_get_drvdata(phy);
|
||||
|
||||
dev_dbg(twl->dev, "%s\n", __func__);
|
||||
pm_runtime_mark_last_busy(twl->dev);
|
||||
pm_runtime_put_autosuspend(twl->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -472,6 +470,8 @@ static int twl4030_phy_power_on(struct phy *phy)
|
|||
dev_dbg(twl->dev, "%s\n", __func__);
|
||||
pm_runtime_get_sync(twl->dev);
|
||||
schedule_delayed_work(&twl->id_workaround_work, HZ);
|
||||
pm_runtime_mark_last_busy(twl->dev);
|
||||
pm_runtime_put_autosuspend(twl->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue