Re: [PATCH 1/1] usb: chipidea: Improve kconfig

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/08/13 03:02, Peter Chen wrote:
> Randy Dunlap <rdunlap@xxxxxxxxxxxxx> reported below problem
> at i386:
>> drivers/built-in.o: In function `ci_hdrc_host_init':
>> (.text+0x2ce75c): undefined reference to `ehci_init_driver'
> 
>> When USB_EHCI_HCD=m and USB_CHIPIDEA=y.
> 
> In fact, this problem is existed at all platforms which are using
> chipidea driver. The root cause of this problem is the chipidea host
> uses symbol exported from ehci-hcd, but chipidea core
> does not depends on USB_EHCI_HCD. So, chipidea driver
> will not be compiled as module if USB_EHCI_HCD=m.
> 
> It is very hard to give a perfect solution since chipidea core
> depends on USB || USB_GADGET, and chipdiea host depends on
> both USB_EHCI_HCD and USB_CHIPIDEA, the same problem exists for
> gadget.
> 
> To fix this problem, we had to have below assumptions:
> 
> - If USB_EHCI_HCD=y && USB_GADGET=y, USB_CHIPIDEA can be 'y'.
> 
> - If USB_EHCI_HCD=m && USB_GADGET=y, USB_CHIPIDEA=m
> or USB_CHIPIDEA_HOST can't be seen if USB_CHIPIDEA=y.
> It will cause compile error as no glue layer for ehci.
>> error: #error "missing bus glue for ehci-hcd"
> So, we had to compile USB_CHIPIDEA=m if USB_EHCI_HCD=m,
> current ehci hcd core guarantee it.
> 
> - If USB_EHCI_HCD=y && USB_GADGET=m, USB_CHIPIDEA=m
> or USB_CHIPIDEA_UDC can't be seen if USB_CHIPIDEA=y.
> Of cos, the gadget will out of working at this situation,
> so the user had to compile USB_CHIPIDEA=m.
> 
> - USB_EHCI_HCD=m && USB_GADGET=m, we can't see
> USB_CHIPIDEA_HOST and USB_CHIPIDEA_UDC unless
> USB_CHIPIDEA=m.
> 
> The reason why it has abvoe assumptions:
> - If both ehci core and gadget core build as module,
> the chipidea has to build as module.
> - If one of ehci core or gadget core is built in, another
> is built as module, we can only enable the function which
> is built in, or enable both roles as modules (USB_CHIPIDEA=m),
> since chipidea driver is unify core driver, the host or udc
> is not a individual driver.
> 
> Signed-off-by: Peter Chen <peter.chen@xxxxxxxxxxxxx>

Acked-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>

Thanks.


> ---
>  drivers/usb/chipidea/Kconfig |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/chipidea/Kconfig b/drivers/usb/chipidea/Kconfig
> index 608a2ae..eb2aa2e 100644
> --- a/drivers/usb/chipidea/Kconfig
> +++ b/drivers/usb/chipidea/Kconfig
> @@ -12,15 +12,15 @@ if USB_CHIPIDEA
>  
>  config USB_CHIPIDEA_UDC
>  	bool "ChipIdea device controller"
> -	depends on USB_GADGET=y || USB_GADGET=USB_CHIPIDEA
> +	depends on USB_GADGET=y || USB_CHIPIDEA=m
>  	help
>  	  Say Y here to enable device controller functionality of the
>  	  ChipIdea driver.
>  
>  config USB_CHIPIDEA_HOST
>  	bool "ChipIdea host controller"
> -	depends on USB=y || USB=USB_CHIPIDEA
> -	depends on USB_EHCI_HCD
> +	depends on USB=y
> +	depends on USB_EHCI_HCD=y || USB_CHIPIDEA=m
>  	select USB_EHCI_ROOT_HUB_TT
>  	help
>  	  Say Y here to enable host controller functionality of the
> 


-- 
~Randy
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux