On 5/11/2023 7:19 AM, Thinh Nguyen wrote:
On Thu, May 11, 2023, Krishna Kurapati PSSNV wrote:
On 5/11/2023 2:59 AM, Thinh Nguyen wrote:
Hi,
On Wed, May 10, 2023, Krishna Kurapati PSSNV wrote:
Hi Team,
If we set maximum speed to "super-speed" for a SSP capable controller, I
see device mode working in SS but host mode still works in SSP. From the
yaml documentation of max-speed, I see the following:
maximum-speed:
description:
Tells USB controllers we want to work up to a certain speed. Incase
this isn't passed via DT, USB controllers should default to their maximum HW
capability.
Shouldn't this maximum speed get limited to gen1 even for host mode ?
The description is ambiguous here. However, we only ever use this
property to limit the speed for device mode (from what I see in the
other drivers of the kernel). Should we ever need to limit this for host
mode, IMHO, we should introduce a new property for that and clarify this
property.
Hi Thinh,
Sorry for not being clear. The following is the version and ID of SM8550
controller: (usb31 controller)
VER_NUM: 0x3139302A
VER_TYPE: 0x67612A2A
USB3_PRI_USB31_IP_NAME (0xA60C120) = 0x33313130
We need to force this to gen-1 to fallback to SS even for host mode too as
customers are facing compliance issues on SSP.
I meant the documentation for maximum-speed property isn't clear for
cases such as DRD usb controller where the controller can operate in
different modes. Your description is pretty clear.
If so, can we set LLUCTL Force_Gen1 bit if (Controller is Gen2 && max_speed
= SuperSpeed) somewhere after GCTL core soft reset is done in set_mode ?
BTW, that's for dwc_usb31. For dwc_usb32, we use a different register to
limit different eSS speeds and lanecount.
To limit to highspeed for xhci, we can disable usb3 ports (clear the
PORTSC.PP). I don't think we can force limit to full or low speed for
dwc3 host mode.
From your explanation, can I send a patch for with the following:
1. Update description for max speed
2. Add force_gen1 property and if it is set, check the version (usb31) and
set LLUCTL.Force_Gen1 bit.
Later if someone wants to add code for usb32 as well, they can reuse the
same property and extend the code for the same.
Let me know if this would be acceptable.
I'm thinking to introduce a generic "host-maximum-speed" property
instead of a "force_gen1" that's specific to dwc3 controller only.
So that we can update the documentation for "maximum-speed" as follow:
* The "maximum-speed" applies to both host and device modes. If
"host-maximum-speed" is specified, then the host may have a different
constraint.
Or
* The "maximum-speed" only applies for device mode. The
"host-maximum-speed" is for host mode.
Thanks,
Thinh
Hi Thinh,
If we do so, we need to update the code for supporting other speeds
as well (changes in xhci would be needed I believe). Wanted to limit
this to dwc3 only and so was suggesting to add force_gen1 property.
Regards,
Krishna,