Re: [PATCH 1/3] drivers: misc: ak8974 / ami305 magnetometer driver

Mark Brown
2010-08-27T18:53:35Z

On Fri, Aug 27, 2010 at 07:59:13PM +0300, Onkalo Samu wrote:
> On Fri, 2010-08-27 at 14:31 +0200, ext Alan Cox wrote:

> > > +static int ak8974_regulators_on(struct ak8974_chip *chip)
> > > +{
> > > + int ret;
> > > + ret = regulator_bulk_enable(ARRAY_SIZE(chip->regs), chip->regs);

> > That bit seems platform specific but in generic code ?

> If the regulator frame work is not configured, this code does nothing.
> I have understood (hopefully correctly) that if the frame work is in use
> drivers could support that directly assuming that regulators are
> configured for that platform. If that is not the case, this should be
> platform specific.

Your understanding is correct - the regulator API provides separation
between the driver and the platform so that the driver code can work
with any platform. The driver requests supplies in terms of the
physical supplies the chip has (using the struct device and the supply
names from the datasheet). The regulator API them matches this with
actual regulators on a given system using data provied separately by the
code specific to that machine so that the regulator and the consumer
using it don't need to know about each other.

If the regulator API is disabled then the basic regulator API calls
compile to inline stubs that report success, and there's a facility for
optionally automatically stubbing out missing supplies when the API is
enabled.