[PATCH 2/2] imx/mx3: depend on USB_ULPI for otg_ulpi_create
Valentin Longchamp
valentin.longchamp at epfl.ch
Mon Dec 21 10:25:12 EST 2009
Uwe Kleine-König wrote:
> otg_ulpi_create is defined in drivers/usb/otg/ulpi.c which depends on
> CONFIG_USB_ULPI. So protect its usage by the same symbol. Moreover
> mxc_ulpi_access_ops needs CONFIG_MXC_ULPI.
I completely agree on the fixes this patch brings. I however have some
comments with the mx31moboard parts.
Best Regards
Val
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
> Cc: Sascha Hauer <s.hauer at pengutronix.de>
> Cc: Valentin Longchamp <valentin.longchamp at epfl.ch>
> Cc: Daniel Mack <daniel at caiaq.de>
> ---
> Hello,
>
> This is still not a complete fix, as with
> CONFIG_USB=m, CONFIG_PCI=n, CONFIG_USB_OTG_UTILS=n
> drivers/usb/otg/ulpi.o isn't included in drivers/builtin.o and so the
> linker still errors out. Maybe USB_ULPI needs to select USB_OTG_UTILS?
> Then the line
>
> obj-$(CONFIG_USB_ULPI) += otg/
>
> in drivers/usb/Makefile becomes superflous as drivers/Makefile has
>
> obj-$(CONFIG_USB_OTG_UTILS) += usb/otg/
>
> . OTOH drivers/usb/otg/ulpi.c doesn't seem to make use of anything
> defined in drivers/usb/otg/otg.c. Daniel?
>
> Best regards
> Uwe
> ---
> arch/arm/mach-mx3/Kconfig | 3 ++-
> arch/arm/mach-mx3/mach-mx31lite.c | 4 ++++
> arch/arm/mach-mx3/mach-mx31moboard.c | 4 ++++
> 3 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig
> index ea8ed10..2829441 100644
> --- a/arch/arm/mach-mx3/Kconfig
> +++ b/arch/arm/mach-mx3/Kconfig
> @@ -49,6 +49,7 @@ config MACH_PCM037_EET
> config MACH_MX31LITE
> bool "Support MX31 LITEKIT (LogicPD)"
> select ARCH_MX31
> + select MXC_ULPI if USB_ULPI
> help
> Include support for MX31 LITEKIT platform. This includes specific
> configurations for the board and its peripherals.
> @@ -63,7 +64,7 @@ config MACH_MX31_3DS
> config MACH_MX31MOBOARD
> bool "Support mx31moboard platforms (EPFL Mobots group)"
> select ARCH_MX31
> - select MXC_ULPI
> + select MXC_ULPI if USB_ULPI
> help
> Include support for mx31moboard platform. This includes specific
> configurations for the board and its peripherals.
> diff --git a/arch/arm/mach-mx3/mach-mx31lite.c b/arch/arm/mach-mx3/mach-mx31lite.c
> index db741be..1e26397 100644
> --- a/arch/arm/mach-mx3/mach-mx31lite.c
> +++ b/arch/arm/mach-mx3/mach-mx31lite.c
> @@ -135,6 +135,7 @@ static struct spi_board_info mc13783_spi_dev __initdata = {
> * USB
> */
>
> +#if defined(CONFIG_USB_ULPI)
> #define USB_PAD_CFG (PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST | PAD_CTL_HYS_CMOS | \
> PAD_CTL_ODE_CMOS | PAD_CTL_100K_PU)
>
> @@ -180,6 +181,7 @@ static struct mxc_usbh_platform_data usbh2_pdata = {
> .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
> .flags = MXC_EHCI_POWER_PINS_ENABLED,
> };
> +#endif
>
> /*
> * NOR flash
> @@ -256,11 +258,13 @@ static void __init mxc_board_init(void)
> mxc_register_device(&mxc_spi_device1, &spi1_pdata);
> spi_register_board_info(&mc13783_spi_dev, 1);
>
> +#if defined(CONFIG_USB_ULPI)
> /* USB */
> usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
> USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
>
> mxc_register_device(&mxc_usbh2, &usbh2_pdata);
> +#endif
>
> /* SMSC9117 IRQ pin */
> ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_SFS6), "sms9117-irq");
> diff --git a/arch/arm/mach-mx3/mach-mx31moboard.c b/arch/arm/mach-mx3/mach-mx31moboard.c
> index 949b4de..8959cfb 100644
> --- a/arch/arm/mach-mx3/mach-mx31moboard.c
> +++ b/arch/arm/mach-mx3/mach-mx31moboard.c
> @@ -317,6 +317,7 @@ static void usb_xcvr_reset(void)
> gpio_set_value(USB_RESET_B, 1);
> }
>
> +#if defined(CONFIG_USB_ULPI)
> #define USB_PAD_CFG (PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST | PAD_CTL_HYS_CMOS | \
> PAD_CTL_ODE_CMOS | PAD_CTL_100K_PU)
>
> @@ -394,6 +395,7 @@ static int __init moboard_usbh2_init(void)
>
> return mxc_register_device(&mxc_usbh2, &usbh2_pdata);
> }
> +#endif
On our board, the otg port is always used and configured as slave. So it
does not use the ULPI code. The first #if defined then should go below,
after the definition of moboard_usbotg_init and before the definition of
usb_pdata (around line 343 in 2.6.33-rc1).
>
>
> static struct gpio_led mx31moboard_leds[] = {
> @@ -534,9 +536,11 @@ static void __init mxc_board_init(void)
>
> usb_xcvr_reset();
>
> +#if defined(CONFIG_USB_ULPI)
> moboard_usbotg_init();
> mxc_register_device(&mxc_otg_udc_device, &usb_pdata);
> moboard_usbh2_init();
> +#endif
For the same reason as above, the first two lines should go out of the
#if defined clause where only moboard_usbh2_init.
>
> switch (mx31moboard_baseboard) {
> case MX31NOBOARD:
--
Valentin Longchamp, PhD Student, EPFL-STI-LSRO1
valentin.longchamp at epfl.ch, Phone: +41216937827
http://people.epfl.ch/valentin.longchamp
MEA3485, Station 9, CH-1015 Lausanne
More information about the linux-arm-kernel
mailing list