Re: Question about regulators

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 9 Apr 2019, Miquel Raynal wrote:

> Hi Hans,
> 
> Hans de Goede <hdegoede@xxxxxxxxxx> wrote on Tue, 9 Apr 2019 09:38:01
> +0200:
> 
> > 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
> > 
> 
> Thank you very much for answering my questions. I'll just stick to a
> 900mA limitation in all cases then.

If you want to be more strict about it, in theory you could enforce the
lower current limits.  We do know when they are supposed to take
effect, although that knowledge is currently not used.  The Linux USB
core has no mechanism for informing regulators about maximum current
limits, but some such mechanism certainly could be added.

For example, one relatively simple thing you could do is set the limit
to 900 mA when the device connection is SuperSpeed or faster, and 500
mA when the device connection is High speed or slower.  (And 2.5 mA 
when the device is suspended.)  But you would have to write the code to 
do this and insert it in the correct place in the xhci-hcd driver.

Alan Stern




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux