[PATCH 2/2] mxc: enable EHCI PER clock
Gwenhael Goavec-Merou
gwenhael.goavec-merou at armadeus.com
Wed Dec 19 13:29:37 EST 2012
EHCI PER clock (aka usb_div) must be enabled to have EHCI driver working.
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou at armadeus.com>
---
drivers/usb/host/ehci-mxc.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/drivers/usb/host/ehci-mxc.c b/drivers/usb/host/ehci-mxc.c
index ec7f5d2..8050631 100644
--- a/drivers/usb/host/ehci-mxc.c
+++ b/drivers/usb/host/ehci-mxc.c
@@ -31,7 +31,7 @@
#define ULPI_VIEWPORT_OFFSET 0x170
struct ehci_mxc_priv {
- struct clk *usbclk, *ahbclk, *phyclk;
+ struct clk *usbclk, *ahbclk, *perclk, *phyclk;
struct usb_hcd *hcd;
};
@@ -150,6 +150,13 @@ static int ehci_mxc_drv_probe(struct platform_device *pdev)
}
clk_prepare_enable(priv->ahbclk);
+ priv->perclk = devm_clk_get(&pdev->dev, "per");
+ if (IS_ERR(priv->perclk)) {
+ ret = PTR_ERR(priv->perclk);
+ goto err_clk_per;
+ }
+ clk_prepare_enable(priv->perclk);
+
/* "dr" device has its own clock on i.MX51 */
priv->phyclk = devm_clk_get(&pdev->dev, "phy");
if (IS_ERR(priv->phyclk))
@@ -233,6 +240,8 @@ err_init:
if (priv->phyclk)
clk_disable_unprepare(priv->phyclk);
+ clk_disable_unprepare(priv->perclk);
+err_clk_per:
clk_disable_unprepare(priv->ahbclk);
err_clk_ahb:
clk_disable_unprepare(priv->usbclk);
@@ -259,6 +268,7 @@ static int __exit ehci_mxc_drv_remove(struct platform_device *pdev)
clk_disable_unprepare(priv->usbclk);
clk_disable_unprepare(priv->ahbclk);
+ clk_disable_unprepare(priv->perclk);
if (priv->phyclk)
clk_disable_unprepare(priv->phyclk);
--
1.7.8.6
More information about the linux-arm-kernel
mailing list