[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