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. -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html