Thread (59 messages) 59 messages, 12 authors, 2019-08-26

Re: [PATCH v10 5/6] usb:cdns3 Add Cadence USB3 DRD Driver

From: Roger Quadros <hidden>
Date: 2019-08-13 07:48:18
Also in: lkml


On 13/08/2019 10:30, Chunfeng Yun wrote:
On Mon, 2019-08-12 at 16:04 +0300, Roger Quadros wrote:
quoted
On 12/08/2019 15:46, Felipe Balbi wrote:
quoted
Hi,

Roger Quadros [off-list ref] writes:
quoted
quoted
The sysfs file we expose from the class for the role switches is
primarily meant for supporting proprietary protocols that require us
to basically override the connector USB data role. The default role
should always be selected in the drivers.
OK. Let's take this example
- Port is dual-role port micro AB.
- microAB to type-A adapter is connected which pulls ID low. port transitions
to "host" role by the controller driver.
- proprietary protocol want to switch role to device role so writes "device" to
mode switch sysfs. port transitions to "device" role.

Now, how does controller driver know to fall back to HW based role switching?
Use a 'disconnect' or 'suspend' event to go reset it? But that should,
probably, be done at kernel space, no?
Yes that could be one option.
So after a disconnect, sysfs role should reflect actual hardware role. correct?
Maybe it's difficult to support both HW based role switch and SW based
role switch by sysfs at the same if the HW's FSM rely on, such as, the
state of Vbus pin or ID pin. Likes the upper example, when user writes
"device" to mode switch sysfs, the driver should skip the HW state of ID
pin, due to it's state is Low, or force it as High.
We do need a clear way of indicating that SW wants to override so HW
state is ignored.
Another option way is that introduces a property in DTS to indicate the
way the driver want to use (HW based or SW based, usb_role_switch
doesn't provide this information for the controller driver), but is not
flexible enough.
That is not good enough for us. We need both HW and SW based role switching.

Can we introduce a new state (e.g. "auto") in usb_role_switch. This would
explicitly indicate the driver to do HW based switching.

This way we don't need to depend on connect/disconnect events and can
do role switch tests even without cable/device connected.

-- 
cheers,
-roger
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help