[PATCH 1/8] fsl_mx3_udc: Add i.MX35 support
Guennadi Liakhovetski
g.liakhovetski at gmx.de
Fri Mar 12 04:56:42 EST 2010
(added usb to cc)
On Thu, 4 Feb 2010, Sascha Hauer wrote:
> The i.MX35 works fine with this driver, but we do not have
> the usb_ahb clock.
>
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> Cc: Guennadi Liakhovetski <g.liakhovetski at gmx.de>
Sorry for a delay...
> ---
> drivers/usb/gadget/fsl_mx3_udc.c | 31 ++++++++++++++++++++-----------
> 1 files changed, 20 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/usb/gadget/fsl_mx3_udc.c b/drivers/usb/gadget/fsl_mx3_udc.c
> index 4bc2bf3..20a802e 100644
> --- a/drivers/usb/gadget/fsl_mx3_udc.c
> +++ b/drivers/usb/gadget/fsl_mx3_udc.c
> @@ -17,6 +17,8 @@
> #include <linux/fsl_devices.h>
> #include <linux/platform_device.h>
>
> +#include <mach/hardware.h>
> +
> static struct clk *mxc_ahb_clk;
> static struct clk *mxc_usb_clk;
>
> @@ -28,14 +30,16 @@ int fsl_udc_clk_init(struct platform_device *pdev)
>
> pdata = pdev->dev.platform_data;
>
> - mxc_ahb_clk = clk_get(&pdev->dev, "usb_ahb");
> - if (IS_ERR(mxc_ahb_clk))
> - return PTR_ERR(mxc_ahb_clk);
> + if (!cpu_is_mx35()) {
> + mxc_ahb_clk = clk_get(&pdev->dev, "usb_ahb");
> + if (IS_ERR(mxc_ahb_clk))
> + return PTR_ERR(mxc_ahb_clk);
>
> - ret = clk_enable(mxc_ahb_clk);
> - if (ret < 0) {
> - dev_err(&pdev->dev, "clk_enable(\"usb_ahb\") failed\n");
> - goto eenahb;
> + ret = clk_enable(mxc_ahb_clk);
> + if (ret < 0) {
> + dev_err(&pdev->dev, "clk_enable(\"usb_ahb\") failed\n");
> + goto eenahb;
> + }
> }
>
> /* make sure USB_CLK is running at 60 MHz +/- 1000 Hz */
> @@ -50,6 +54,7 @@ int fsl_udc_clk_init(struct platform_device *pdev)
> if (pdata->phy_mode != FSL_USB2_PHY_ULPI &&
> (freq < 59999000 || freq > 60001000)) {
> dev_err(&pdev->dev, "USB_CLK=%lu, should be 60MHz\n", freq);
> + ret = -EINVAL;
> goto eclkrate;
> }
>
> @@ -66,9 +71,11 @@ eclkrate:
> clk_put(mxc_usb_clk);
> mxc_usb_clk = NULL;
> egusb:
> - clk_disable(mxc_ahb_clk);
> + if (!cpu_is_mx35())
> + clk_disable(mxc_ahb_clk);
> eenahb:
> - clk_put(mxc_ahb_clk);
> + if (!cpu_is_mx35())
> + clk_put(mxc_ahb_clk);
> return ret;
> }
>
You could do
egusb:
if (!cpu_is_mx35()) {
clk_disable(mxc_ahb_clk);
eenahb:
clk_put(mxc_ahb_clk);
}
here, which (arguably) looks a bit better, but that's not anything
critical, I think. Otherwise
Acked-by: Guennadi Liakhovetski <g.liakhovetski at gmx.de>
> @@ -90,6 +97,8 @@ void fsl_udc_clk_release(void)
> clk_disable(mxc_usb_clk);
> clk_put(mxc_usb_clk);
> }
> - clk_disable(mxc_ahb_clk);
> - clk_put(mxc_ahb_clk);
> + if (!cpu_is_mx35()) {
> + clk_disable(mxc_ahb_clk);
> + clk_put(mxc_ahb_clk);
> + }
> }
> --
> 1.6.6
>
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
More information about the linux-arm-kernel
mailing list