Re: [PATCH v6 03/10] usb: dwc3: omap: Pass VBUS and ID events transparently

From: Roger Quadros
Date: Mon Apr 11 2016 - 09:52:30 EST


On 11/04/16 16:26, Felipe Balbi wrote:
>
> Hi,
>
> Roger Quadros <rogerq@xxxxxx> writes:
>> On 11/04/16 15:18, Felipe Balbi wrote:
>>>
>>> Hi,
>>>
>>> Roger Quadros <rogerq@xxxxxx> writes:
>>>> Don't make any decisions regarding VBUS session based on ID
>>>> status. That is best left to the OTG core.
>>>
>>> what about builds who don't want OTG and/or dual-role ?
>>>
>>>> Pass ID and VBUS events independent of each other so that OTG
>>>> core knows exactly what to do.
>>>>
>>>> This makes dual-role with extcon work with OTG irq on OMAP platforms.
>>>>
>>>> Signed-off-by: Roger Quadros <rogerq@xxxxxx>
>>>> ---
>>>> drivers/usb/dwc3/dwc3-omap.c | 15 ++++++---------
>>>> 1 file changed, 6 insertions(+), 9 deletions(-)
>>>>
>>>> diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
>>>> index 51ca098..c9b918d 100644
>>>> --- a/drivers/usb/dwc3/dwc3-omap.c
>>>> +++ b/drivers/usb/dwc3/dwc3-omap.c
>>>> @@ -233,19 +233,14 @@ static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,
>>>> }
>>>>
>>>> val = dwc3_omap_read_utmi_ctrl(omap);
>>>> - val &= ~(USBOTGSS_UTMI_OTG_CTRL_IDDIG
>>>> - | USBOTGSS_UTMI_OTG_CTRL_VBUSVALID
>>>> - | USBOTGSS_UTMI_OTG_CTRL_SESSEND);
>>>> - val |= USBOTGSS_UTMI_OTG_CTRL_SESSVALID
>>>> - | USBOTGSS_UTMI_OTG_CTRL_POWERPRESENT;
>>>> + val &= ~USBOTGSS_UTMI_OTG_CTRL_IDDIG;
>>>
>>> this creates the possibility of having a USB peripheral with VBUS_VALID,
>>> right
>>
>> Sorry, I didn't get what you meant.
>
> if you're touching these bits independently from each other, won't you
> have a situation where you notify IDFLOAT but don't notify that VBUS is
> off ?
>
We're setting the mailbox state for both ID and VBUS in dwc3_omap_extcon_register()
depending on the initial extcon state. After that, ID and VBUS will be signalled
only when they change.

cheers,
-roger