Re: Adding USB charge current property in the Linux Battery core

From: Felipe Balbi
Date: Wed Nov 09 2011 - 07:34:08 EST


Hi,

On Wed, Nov 09, 2011 at 12:30:19PM +0000, Ashish Jangam wrote:
> > > > On Wed, Nov 09, 2011 at 01:43:37PM +0530, ashishj3 wrote:
> > > > > For a better performance in USB charging operation, the DA9052/53
> > > > charging
> > > > > current can be configured in accordance with the USB host current
> > > > > delivering capacity (known through USB drivers negotiation).
> > > > >
> > > > > To implement this useful feature, a new writable property "USB charge
> > > > current"
> > > > > needs to be added in the Linux battery core.
> > > > >
> > > > > Let me know your views on it.
> > > >
> > > > that's the wrong way to do it. What we need is to use the transceiver
> > > > notifications to notify every time someone calls usb_gadget_vbus_draw()
> > > > and pass the mA parameter as argument to the event notification.
> > > >
> > >
> > > This means that we need to modify the function usb_gadget_vbus_draw()
> > > to add a call like blocking_notifier_call_chain() but will this be fine
> > with
> > > the usb gadget driver maintainers?
> >
> > I am the USB gadget driver maintainer and I have plans to do that
> > myself. First thing we need to do is convert the final UDC drivers to
> > the udc Class which I wrote and Sebastian helped brushing it up, then we
> > uninline the usb_gadget_* wrappers and move them to
> > drivers/usb/gadget/udc-core.c, then we can move the transceiver notifier
> > to the UDC as it makes more sense, and convert blocking into atomic
> > notifier.
>
> This sounds good but since most PMICs have I2C bus connectivity using atomic
> notifier can introduce problems.

we can't use blocking on atomic, right ? usb_gadget_vbus_draw() and most
of the others (usb_gadget_connect/disconnect, usb_gadget_frame_number,
and so on) are called from atomic context...

What i2c transceivers will have to do, is that they will need to defer
handling of the notification, which isn't all that big of a deal. If it
takes 300 miliseconds more to start charging, users won't even notice.

--
balbi

Attachment: signature.asc
Description: Digital signature