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

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

 



On Thu, May 9, 2013 at 3:51 AM, Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:
> 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
>>
>
>

Alex, will you queue this one?


--
BR,
Peter Chen
--
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