[PATCH 3/4] regulator: add voltage selection capability to mc13783 regulators.

Alberto Panizzo maramaopercheseimorto at gmail.com
Mon Dec 14 05:41:38 EST 2009


Il giorno dom, 13/12/2009 alle 21.01 +0100, Uwe Kleine-König ha scritto:
> On Sat, Dec 12, 2009 at 05:56:16PM +0100, Alberto Panizzo wrote:
> > This patch, complete the mc13783 regulator subsystem driver with 
> > voltage selecting capability.
> > Main Switches (SW1AB, SW2AB) are not supported yet.
> > 
> > Signed-off-by: Alberto Panizzo <maramaopercheseimorto at gmail.com>
> > ---
> >  drivers/regulator/mc13783-regulator.c |  375 ++++++++++++++++++++++++++++++---
> >  1 files changed, 348 insertions(+), 27 deletions(-)
> > 
> > diff --git a/drivers/regulator/mc13783-regulator.c b/drivers/regulator/mc13783-regulator.c
> > index 9f99862..ed78137 100644
> > --- a/drivers/regulator/mc13783-regulator.c
> > +++ b/drivers/regulator/mc13783-regulator.c
> > @@ -2,6 +2,7 @@
> >   * Regulator Driver for Freescale MC13783 PMIC
> >   *
> >   * Copyright (C) 2008 Sascha Hauer, Pengutronix <s.hauer at pengutronix.de>
> > + * Copyright 2009 Alberto Panizzo <maramaopercheseimorto at gmail.com>
> >   *
> >   * This program is free software; you can redistribute it and/or modify
> >   * it under the terms of the GNU General Public License version 2 as
> > @@ -18,9 +19,47 @@
> >  
> >  #define MC13783_REG_SWITCHERS4			28
> >  #define MC13783_REG_SWITCHERS4_PLLEN			(1 << 18)
> > +#define MC13783_REG_SWITCHERS4_PLLVSEL			(1 << 19)
> > +#define MC13783_REG_SWITCHERS4_PLLVSEL_M		(7 << 19)
> >  
> >  #define MC13783_REG_SWITCHERS5			29
> >  #define MC13783_REG_SWITCHERS5_SW3EN			(1 << 20)
> > +#define MC13783_REG_SWITCHERS5_SW3VSEL			18
> This looks inconsitent:
> 	MC13783_REG_SWITCHERS4_PLLVSEL	(1 << 19)
> 	MC13783_REG_SWITCHERS5_SW3VSEL	18
> 
> I didn't check the rest of the patch though it would be great if you
> wouldn't need all those arrays as they occupy much memory.
> 
> Best regards
> Uwe
> 

Yes this is a mistake and.. I'm not sure to embrace SWITCHERS4_PLL in
the regulators stuff at all.
The code that I propose can enable/disable and set the multiplication
factor for the PLL but this is not a voltage regulator!

Maybe the PLL must be initialised and controlled via another driver, 
in the audio codec?

For the arrays, also for me it is not the better code that I wrote
but voltages values have no regular stepping and this way is a great 
self explain way.
Look at tables 4-18 and 4-19 of the mc13783 information for GPL drivers..

The other ways are:
- Compress arrays in different phases, with complex initialisation.
- Write as many function as different regulators there are, increasing
  the driver complexity and also the text instead of data memory..

Sure, I have to correct all the coding style issues asserted by Mark!

Alberto.





More information about the linux-arm-kernel mailing list