aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/chipidea
diff options
context:
space:
mode:
authorFabio Estevam <fabio.estevam@freescale.com>2015-09-08 21:18:14 -0400
committerPeter Chen <peter.chen@freescale.com>2015-10-21 21:24:25 -0400
commit1fbf46280eb6866c762de5ec8ba35f09097b0d53 (patch)
tree6a9690b485b84280cb75a149f5e802256099f7ae /drivers/usb/chipidea
parent3ecb3e09b042e70799ff3a1ff464a5ecaa7547d9 (diff)
usb: chipidea: Add support for 'phy-clkgate-delay-us' property
Add support for the optional 'phy-clkgate-delay-us' property that is used to describe the delay time between putting PHY into low power mode and turning off the PHY clock. Signed-off-by: Li Jun <jun.li@freescale.com> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Peter Chen <peter.chen@freescale.com>
Diffstat (limited to 'drivers/usb/chipidea')
-rw-r--r--drivers/usb/chipidea/core.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
index 573c2876b263..f4fd76ab3aef 100644
--- a/drivers/usb/chipidea/core.c
+++ b/drivers/usb/chipidea/core.c
@@ -688,6 +688,10 @@ static int ci_get_platdata(struct device *dev,
688 if (of_usb_get_maximum_speed(dev->of_node) == USB_SPEED_FULL) 688 if (of_usb_get_maximum_speed(dev->of_node) == USB_SPEED_FULL)
689 platdata->flags |= CI_HDRC_FORCE_FULLSPEED; 689 platdata->flags |= CI_HDRC_FORCE_FULLSPEED;
690 690
691 if (of_find_property(dev->of_node, "phy-clkgate-delay-us", NULL))
692 of_property_read_u32(dev->of_node, "phy-clkgate-delay-us",
693 &platdata->phy_clkgate_delay_us);
694
691 platdata->itc_setting = 1; 695 platdata->itc_setting = 1;
692 if (of_find_property(dev->of_node, "itc-setting", NULL)) { 696 if (of_find_property(dev->of_node, "itc-setting", NULL)) {
693 ret = of_property_read_u32(dev->of_node, "itc-setting", 697 ret = of_property_read_u32(dev->of_node, "itc-setting",
@@ -1121,6 +1125,9 @@ static void ci_controller_suspend(struct ci_hdrc *ci)
1121{ 1125{
1122 disable_irq(ci->irq); 1126 disable_irq(ci->irq);
1123 ci_hdrc_enter_lpm(ci, true); 1127 ci_hdrc_enter_lpm(ci, true);
1128 if (ci->platdata->phy_clkgate_delay_us)
1129 usleep_range(ci->platdata->phy_clkgate_delay_us,
1130 ci->platdata->phy_clkgate_delay_us + 50);
1124 usb_phy_set_suspend(ci->usb_phy, 1); 1131 usb_phy_set_suspend(ci->usb_phy, 1);
1125 ci->in_lpm = true; 1132 ci->in_lpm = true;
1126 enable_irq(ci->irq); 1133 enable_irq(ci->irq);