2008-10-28 11:18:21

by Jonathan Cameron

[permalink] [raw]
Subject: [Regulator RFC] da903x: Where should usb charge pump support go?

Dear All,

The new da903x driver is proving to be a good replacement for the out of kernel
driver I've been using previously.

Unfortunately there is still quite a lot of functionality to to add.

The key one for me is control of the USB charge pump. So the question is, does
this fit within the regulator framework (i.e. should I add it to the regulator
driver) or should this be a seperate driver (and if so where?)

Personally I'm not convinced it fits cleanly within the regulator framework
given it is probably only ever going to get called from one driver and has
somewhat odd properties!

Thanks,

Jonathan Cameron


2008-10-28 11:24:41

by Felipe Balbi

[permalink] [raw]
Subject: Re: [Regulator RFC] da903x: Where should usb charge pump support go?

On Tue, Oct 28, 2008 at 11:18:24AM +0000, ext Jonathan Cameron wrote:
> Dear All,
>
> The new da903x driver is proving to be a good replacement for the out of kernel
> driver I've been using previously.
>
> Unfortunately there is still quite a lot of functionality to to add.
>
> The key one for me is control of the USB charge pump. So the question is, does
> this fit within the regulator framework (i.e. should I add it to the regulator
> driver) or should this be a seperate driver (and if so where?)
>
> Personally I'm not convinced it fits cleanly within the regulator framework
> given it is probably only ever going to get called from one driver and has
> somewhat odd properties!

I was thinking the same and even mailed Liam and Mark about it. The
design I was thinking was the charger chip would be done in regulator
framework and the battery chip (or current gauge) would be using power
supply fw and regulator consumer device.

The constraints would be basically the current and/or voltage range your
charger chip supports.

I still didn't have much time to hack on it, but seemed to be pretty
reasonable.

If someone has better idea, I'd trully like to hear that.

--
balbi

2008-10-28 11:59:22

by Mark Brown

[permalink] [raw]
Subject: Re: [Regulator RFC] da903x: Where should usb charge pump support go?

On Tue, Oct 28, 2008 at 11:18:24AM +0000, Jonathan Cameron wrote:

> The key one for me is control of the USB charge pump. So the question is, does
> this fit within the regulator framework (i.e. should I add it to the regulator
> driver) or should this be a seperate driver (and if so where?)

> Personally I'm not convinced it fits cleanly within the regulator framework
> given it is probably only ever going to get called from one driver and has
> somewhat odd properties!

What exactly does the USB charge pump control do here? Is it purely
controlling the power supplied to USB (I'm assuming that this is the PXA
USB controller and that the DA903x is so closely tied to it nobody would
use it with another CPU)? I'm guessing it's a bit more than that and
there's also control over the current that can be drawn from USB by the
system as well as that supplied.

2008-10-28 12:04:05

by Liam Girdwood

[permalink] [raw]
Subject: Re: [Regulator RFC] da903x: Where should usb charge pump support go?

On Tue, 2008-10-28 at 13:23 +0200, Felipe Balbi wrote:
> On Tue, Oct 28, 2008 at 11:18:24AM +0000, ext Jonathan Cameron wrote:
> > Dear All,
> >
> > The new da903x driver is proving to be a good replacement for the out of kernel
> > driver I've been using previously.
> >
> > Unfortunately there is still quite a lot of functionality to to add.
> >
> > The key one for me is control of the USB charge pump. So the question is, does
> > this fit within the regulator framework (i.e. should I add it to the regulator
> > driver) or should this be a seperate driver (and if so where?)
> >
> > Personally I'm not convinced it fits cleanly within the regulator framework
> > given it is probably only ever going to get called from one driver and has
> > somewhat odd properties!
>
> I was thinking the same and even mailed Liam and Mark about it. The
> design I was thinking was the charger chip would be done in regulator
> framework and the battery chip (or current gauge) would be using power
> supply fw and regulator consumer device.
>
> The constraints would be basically the current and/or voltage range your
> charger chip supports.
>
> I still didn't have much time to hack on it, but seemed to be pretty
> reasonable.
>
> If someone has better idea, I'd trully like to hear that.
>

Fwiw, we have done something similar with the wm8350 charger and exposed
it through the kernel power supply framework. The charger is connected
directly to the wm8350 line input and not controllable through any
regulator hence it was not made a regulator consumer.

Jonathan, since this charge pump has an 'odd' interface and one user it
may just be easier to initially add outwith the framework. It should
probably live in drivers/mfd with the da903x core.

Fwiw, we should look at supporting charge pumps in the regulator
framework as we already support voltage and current sink regulators.

Liam

2008-10-29 12:18:03

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [Regulator RFC] da903x: Where should usb charge pump support go?

Liam Girdwood wrote:
> On Tue, 2008-10-28 at 13:23 +0200, Felipe Balbi wrote:
>> On Tue, Oct 28, 2008 at 11:18:24AM +0000, ext Jonathan Cameron wrote:
>>> Dear All,
>>>
>>> The new da903x driver is proving to be a good replacement for the out
of kernel
>>> driver I've been using previously.
>>>
>>> Unfortunately there is still quite a lot of functionality to to add.
>>>
>>> The key one for me is control of the USB charge pump. So the question
is, does
>>> this fit within the regulator framework (i.e. should I add it to the
regulator
>>> driver) or should this be a seperate driver (and if so where?)
>>>
>>> Personally I'm not convinced it fits cleanly within the regulator
framework
>>> given it is probably only ever going to get called from one driver
and has
>>> somewhat odd properties!
>> I was thinking the same and even mailed Liam and Mark about it. The
>> design I was thinking was the charger chip would be done in regulator
>> framework and the battery chip (or current gauge) would be using power
>> supply fw and regulator consumer device.
>>
>> The constraints would be basically the current and/or voltage range your
>> charger chip supports.
>>
>> I still didn't have much time to hack on it, but seemed to be pretty
>> reasonable.
>>
>> If someone has better idea, I'd trully like to hear that.
>>
>
> Fwiw, we have done something similar with the wm8350 charger and exposed
> it through the kernel power supply framework. The charger is connected
> directly to the wm8350 line input and not controllable through any
> regulator hence it was not made a regulator consumer.
>
> Jonathan, since this charge pump has an 'odd' interface and one user it
> may just be easier to initially add outwith the framework. It should
> probably live in drivers/mfd with the da903x core.
That sounds a sensible option for now.
> Fwiw, we should look at supporting charge pumps in the regulator
> framework as we already support voltage and current sink regulators.
Seems like a good idea in the long run.

Anyhow, as a quick summary of what the da9030 (don't have the da9034
datasheet to hand) has that isn't currently supported (mainly with
a view to keeping things consistent)

The DC-DC Bucks.
This is probably just a simple matter of testing the obvious additions
to the code? (are there any known problems with this?)

USB charge pump.
Two modes, either 100mA at 5V or 10mA source for SR pulse generation
(from what I understand this is part of the detection of usb devices)
There are also 4 detectors vor various voltage and device attachment
functions.
Sim charge pump.
Slightly unusual and if not in 5V mode routes through ldo6 and ldo17
with controllable voltage guarantees (either 1.8V or 2.9V). Probably
needs to be tied into the control of these ldo's within the regulator
driver.

Battery Charger.
This one is complex. Supports 40 to 1400mA and 4 to 4.35V supply
with lots of monitoring. Has several different operating modes
and needs a non trivial driver. This one will be 'interesting'
to write (have a sand bucket ready and cross your fingers)

ADC
Used partly for internal monitoring functionality, partly for
auxiliary inputs. The question on this is whether to implement
it as a hwmon driver (somewhat unusual form, but sort of fits)
or whether some of this is needed for feedback to the battery
charger code etc.

Anyhow, the only one of critical importance to me is the usb charge pump,
so I'll work on that for now. I'd be interested in testing battery charger
code but have too many other drivers to write at the mo to be able to
code that up.

Thanks

Jonathan



2008-10-29 12:31:43

by Mark Brown

[permalink] [raw]
Subject: Re: [Regulator RFC] da903x: Where should usb charge pump support go?

On Wed, Oct 29, 2008 at 12:18:04PM +0000, Jonathan Cameron wrote:

> ADC
> Used partly for internal monitoring functionality, partly for
> auxiliary inputs. The question on this is whether to implement
> it as a hwmon driver (somewhat unusual form, but sort of fits)
> or whether some of this is needed for feedback to the battery
> charger code etc.

For WM8350 this is implemented as a device-specific function in the
driver core which is then used by other drivers to export the
information to relevant subsystems.

There was some work on a generic ADC framework that might be a better
fit for the auxiliary inputs but I'm not sure where that's going ATM or
if it's really appropriate.

2008-10-29 12:48:40

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [Regulator RFC] da903x: Where should usb charge pump support go?

Mark Brown wrote:
> On Wed, Oct 29, 2008 at 12:18:04PM +0000, Jonathan Cameron wrote:
>
>> ADC
>> Used partly for internal monitoring functionality, partly for
>> auxiliary inputs. The question on this is whether to implement
>> it as a hwmon driver (somewhat unusual form, but sort of fits)
>> or whether some of this is needed for feedback to the battery
>> charger code etc.
>
> For WM8350 this is implemented as a device-specific function in the
> driver core which is then used by other drivers to export the
> information to relevant subsystems.
Seems a sensible option. Can always put a hwmon driver on top of that
if people want the nice userspace interfaces etc.

> There was some work on a generic ADC framework that might be a better
> fit for the auxiliary inputs but I'm not sure where that's going ATM or
> if it's really appropriate.
That's probably me anyway (industrialio), it's stalled whilst I switch
my test platform to this driver and isn't really suitable for this
(unless someone wants to abuse the auxiliary adc inputs for general
purpose stuff).

It's focus (principally) is on fast capture from sensors by triggering events
(periodic timers / gpio / non periodic triggering schedules - haven't done
that one yet) rather than internal monitoring. Other such as input / hwmon
may be built on top of the underlying core, but that's not done yet.

As a quick and dirty progress report, the device handling side of things
is in place and working well. Current work is on generalizing the triggering
framework and working out how to handle the connectivity issues cleanly.
I did promise to post a release at the end of last week but have dropped
back a chunk as some 'minor' changes proved rather complex to do.

Jonathan



2008-10-29 13:06:15

by Mark Brown

[permalink] [raw]
Subject: Re: [Regulator RFC] da903x: Where should usb charge pump support go?

On Wed, Oct 29, 2008 at 12:48:41PM +0000, Jonathan Cameron wrote:
> Mark Brown wrote:

> > For WM8350 this is implemented as a device-specific function in the
> > driver core which is then used by other drivers to export the
> > information to relevant subsystems.

> Seems a sensible option. Can always put a hwmon driver on top of that
> if people want the nice userspace interfaces etc.

If it's anything like WM8350 you'll end up with multiple things sitting
on top of it.

> That's probably me anyway (industrialio), it's stalled whilst I switch
> my test platform to this driver and isn't really suitable for this

Ah, yes - so it is.

> (unless someone wants to abuse the auxiliary adc inputs for general
> purpose stuff).

My experience suggests that at least some designs will want to do that
but if you go with the internal-only support with multiple clients they
can always write a driver on top of that if/when they need it.

2008-10-29 13:21:17

by Mike Rapoport

[permalink] [raw]
Subject: Re: [Regulator RFC] da903x: Where should usb charge pump support go?

On Wed, Oct 29, 2008 at 2:18 PM, Jonathan Cameron
<[email protected]> wrote:

> Battery Charger.
> This one is complex. Supports 40 to 1400mA and 4 to 4.35V supply
> with lots of monitoring. Has several different operating modes
> and needs a non trivial driver. This one will be 'interesting'
> to write (have a sand bucket ready and cross your fingers)

I have the battery charger driver for EM-X270, but for now it's
tightly coupled to the platform code.
I'll try to make it generic but it'll take some time...




--
Sincerely Yours,
Mike.