Add USB Gadget support for mx35pdk The patch is baselined on: git://git.pengutronix.de/git/imx/linux-2.6.git mxc-master Signed-off-by: Harro Haan --- arch/arm/mach-mx3/clock-imx35.c | 3 +++ arch/arm/mach-mx3/mx35pdk.c | 12 ++++++++++++ drivers/usb/gadget/Kconfig | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) Index: linux-2.6.31/drivers/usb/gadget/Kconfig =================================================================== --- linux-2.6.31.orig/drivers/usb/gadget/Kconfig 2009-11-25 17:57:01.000000000 +0100 +++ linux-2.6.31/drivers/usb/gadget/Kconfig 2009-11-25 18:13:28.000000000 +0100 @@ -156,7 +156,7 @@ config USB_ATMEL_USBA config USB_GADGET_FSL_USB2 boolean "Freescale Highspeed USB DR Peripheral Controller" - depends on FSL_SOC || ARCH_MXC + depends on FSL_SOC || ARCH_MXC || ARCH_MX35 select USB_GADGET_DUALSPEED help Some of Freescale PowerPC processors have a High Speed Index: linux-2.6.31/arch/arm/mach-mx3/mx35pdk.c =================================================================== --- linux-2.6.31.orig/arch/arm/mach-mx3/mx35pdk.c 2009-11-25 17:57:01.000000000 +0100 +++ linux-2.6.31/arch/arm/mach-mx3/mx35pdk.c 2009-11-25 19:04:39.000000000 +0100 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -69,6 +70,15 @@ static struct pad_desc mx35pdk_pads[] = MX35_PAD_FEC_TDATA2__FEC_TDATA_2, MX35_PAD_FEC_RDATA3__FEC_RDATA_3, MX35_PAD_FEC_TDATA3__FEC_TDATA_3, + /* USBOTG */ + MX35_PAD_USBOTG_PWR__USB_TOP_USBOTG_PWR, + MX35_PAD_USBOTG_OC__USB_TOP_USBOTG_OC, +}; + +/* OTG config */ +static struct fsl_usb2_platform_data usb_pdata = { + .operating_mode = FSL_USB2_DR_DEVICE, + .phy_mode = FSL_USB2_PHY_UTMI_WIDE, }; /* @@ -81,6 +91,8 @@ static void __init mxc_board_init(void) platform_add_devices(devices, ARRAY_SIZE(devices)); mxc_register_device(&mxc_uart_device0, &uart_pdata); + + mxc_register_device(&mxc_otg_udc_device, &usb_pdata); } static void __init mx35pdk_timer_init(void) Index: linux-2.6.31/arch/arm/mach-mx3/clock-imx35.c =================================================================== --- linux-2.6.31.orig/arch/arm/mach-mx3/clock-imx35.c 2009-11-25 18:20:04.000000000 +0100 +++ linux-2.6.31/arch/arm/mach-mx3/clock-imx35.c 2009-11-25 18:29:08.000000000 +0100 @@ -387,6 +387,8 @@ DEFINE_CLOCK(csi_clk, 0, CCM_CGR3, 0 DEFINE_CLOCK(iim_clk, 0, CCM_CGR3, 2, NULL, NULL); DEFINE_CLOCK(gpu2d_clk, 0, CCM_CGR3, 4, NULL, NULL); +DEFINE_CLOCK(usbahb_clk, 0, 0, 0, get_rate_ahb, NULL); + static int clk_dummy_enable(struct clk *clk) { return 0; @@ -471,6 +473,7 @@ static struct clk_lookup lookups[] = { _REGISTER_CLOCK("mxc-ehci.1", "usb", usbotg_clk) _REGISTER_CLOCK("mxc-ehci.2", "usb", usbotg_clk) _REGISTER_CLOCK("fsl-usb2-udc", "usb", usbotg_clk) + _REGISTER_CLOCK("fsl-usb2-udc", "usb_ahb", usbahb_clk) _REGISTER_CLOCK("imx-wdt.0", NULL, wdog_clk) _REGISTER_CLOCK(NULL, "max", max_clk) _REGISTER_CLOCK(NULL, "audmux", audmux_clk) --