diff options
author | Fabio Estevam <fabio.estevam@freescale.com> | 2015-09-08 21:18:14 -0400 |
---|---|---|
committer | Peter Chen <peter.chen@freescale.com> | 2015-10-21 21:24:25 -0400 |
commit | 1fbf46280eb6866c762de5ec8ba35f09097b0d53 (patch) | |
tree | 6a9690b485b84280cb75a149f5e802256099f7ae /drivers/usb/chipidea | |
parent | 3ecb3e09b042e70799ff3a1ff464a5ecaa7547d9 (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.c | 7 |
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); |