Hi,
On 09-04-19 09:26, Miquel Raynal wrote:
Hello,
Adding Greg & Hans just in case they have an idea, or someone else to
ping in mind.
Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote on Wed, 3 Apr 2019
10:13:43 +0200:
Hello,
I am reading the document named "xHCI interoperability testing v0.94"
available on usb.org. There is this paragraph:
Devices operating at Enhanced SuperSpeed GenX are allowed to
draw a maximum configured current of 900mA and unconfigured
current of 150mA. Devices operating at High-Speed or below may
draw a maximum configured current of 500mA and unconfigured
current of 100mA*. Devices must report their maximum configured
current draw and their power configuration as self or bus
powered to the host and must operate within the regions
reported. Additionally any device that is in the suspended
state may draw no more than 2.5 mA.
My understanding is that the current limitation on Vbus should be tuned
dynamically between 100, 150, 500 and 900mA depending on the type of
device and if has been configured or not.
Despite some researches in the USB core I can't find any mechanism
handling this in Linux implementation.
Behind this remark, I actually have boards (Armada 7040/8040 DB) with a
regulator on Vbus to limit the current to either 500 or 900mA. I
checked the xhci-platform driver which is used with these SoCs and I
don't find any mean to tweak this value depending on the inserted
device.
Should I actually care? Is it enough to limit to 900mA whenever the
xHCI driver is probed?
To be clear you are talking about a regulator producing Vbus for device
plugged into the system, right ?
In that case just configuring th current-limit at 900mA is fine, it really
is up to the device to not consume more then it may and even if it does since
the port is capable of delivering 900mA anyways that is not a problem.
There is code in various places in the kernel for Linux devices to not
consume too much energy (mostly in charger ic drivers) when the Linux
device itself is an USB device drawing power.
Regards,
Hans