Re: [PATCH v7 03/14] usb: hcd.h: Add OTG to HCD interface

From: Roger Quadros
Date: Tue May 10 2016 - 05:12:29 EST


On 10/05/16 11:12, Felipe Balbi wrote:
>
> Hi,
>
> Roger Quadros <rogerq@xxxxxx> writes:
>> On 10/05/16 06:14, Peter Chen wrote:
>>> On Mon, May 09, 2016 at 12:45:38PM +0300, Roger Quadros wrote:
>>>> On 06/05/16 12:41, Peter Chen wrote:
>>>>> On Mon, May 02, 2016 at 03:18:46PM +0300, Roger Quadros wrote:
>>>>>> The OTG core will use struct otg_hcd_ops to interface
>>>>>> with the HCD controller.
>>>>>>
>>>>>> The main purpose of this interface is to avoid directly
>>>>>> calling HCD APIs from the OTG core as they
>>>>>> wouldn't be defined in the built-in symbol table if
>>>>>> CONFIG_USB is m.
>>>>>>
>>>>>> Signed-off-by: Roger Quadros <rogerq@xxxxxx>
>>>>>> Acked-by: Peter Chen <peter.chen@xxxxxxx>
>>>>>
>>>>> Roger, after thinking more, I still think current dependency between
>>>>> OTG, HCD and gadget are too complicated. Since the OTG can't work
>>>>> if it is built as module, I suggest letting OTG depends on HCD &&
>>>>> USB_GADGET, and it is a boolean, in that case, we don't need to
>>>>> export any HCD and gadget ops, things will be much simpler.
>>>>> What's your opinion?
>>>>
>>>> How will it work if HCD and USB_GADGET are modules and OTG is built-in?
>>>>
>>>
>>> The OTG will not be compiled at this situation, since it is boolean.
>>> In fact, like I mentioned at above, OTG or USB function can't work if
>>> it is built as module.
>>
>> Isn't this a limitation?
>
> I agree, it should work built-in or module.
>
>> As per the current implementation dual role works fine even with both
>> USB_GADGET and HCD as module.
>>
>> In the real world it is unlikely that GADGET and HCD will be built-in.
>
> we can't make this assumption, however :-)
>
Agreed, we need to make sure it works with all combinations.

cheers,
-roger