[PATCHv2 1/2] ARM pcm043: Use PDR0 to change cpu freq

Sascha Hauer s.hauer at pengutronix.de
Tue Aug 23 06:43:36 EDT 2011


On Tue, Aug 23, 2011 at 11:31:02AM +0200, Teresa Gamez wrote:
> Am Montag, den 22.08.2011, 19:27 +0200 schrieb Sascha Hauer:
> > Hi Teresa,
> > 
> > On Mon, Aug 22, 2011 at 03:51:04PM +0200, Teresa Gámez wrote:
> > > Instead of changing the MPCTL to set an other cpu frequency,
> > > use the post divider.
> > > 
> > > This prevents freezing when changing the clock from 399MHz to 532MHz.
> > 
> > Originally this command was meant for debugging purposes. The pcm043
> > comes up with 532MHz and there should be no need to change the
> > frequency. I remember that some boards are able to run barebox with
> > 532MHz but don't manage to start the kernel with this frequency. Also I
> > have one board which does not run with 532MHz at all, but I think it's
> > an early development sample.
> > Is there a need to run boards with a lower frequency than they are able
> > to do? Otherwise, if some boards are not stable at the default 532MHz
> > I suggest we should also lower the default to 399MHz.
> 
> Yes, there where different problems with older i.MX35 modules so that the
> frequency was lowered to 399MHz. 
> For the revision 1315.4 we made some PCB optimizations to run the pcm043
> safe with 532MHz. Additionally we switched the silicon revision to TO 2.1. 
> So it is ensured that all pcm043 with >= TO 2.1 run with 532MHz. 
> For that case we made a patch (for u-boot-v2) that checks the silicon revision
> and sets up the frequency post divider accordingly. 
> I'll update the patch and send it.

Thanks. This looks like a sane solution.

Sascha

> 
> Teresa
> 
> > 
> > Sascha
> > 
> > > 
> > > Signed-off-by: Teresa Gámez <t.gamez at phytec.de>
> > > ---
> > >  arch/arm/boards/pcm043/pcm043.c |    8 ++++----
> > >  1 files changed, 4 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/arch/arm/boards/pcm043/pcm043.c b/arch/arm/boards/pcm043/pcm043.c
> > > index 966899a..5cd6432 100644
> > > --- a/arch/arm/boards/pcm043/pcm043.c
> > > +++ b/arch/arm/boards/pcm043/pcm043.c
> > > @@ -301,8 +301,8 @@ static int pcm043_core_setup(void)
> > >  
> > >  core_initcall(pcm043_core_setup);
> > >  
> > > -#define MPCTL_PARAM_399     (IMX_PLL_PD(0) | IMX_PLL_MFD(15) | IMX_PLL_MFI(8) | IMX_PLL_MFN(5))
> > > -#define MPCTL_PARAM_532     ((1 << 31) | IMX_PLL_PD(0) | IMX_PLL_MFD(11) | IMX_PLL_MFI(11) | IMX_PLL_MFN(1))
> > > +#define CCM_PDR0_PARAM_399	((1 << 12) | (1 << 16))
> > > +#define CCM_PDR0_PARAM_532	(1 << 12)
> > >  
> > >  static int do_cpufreq(struct command *cmdtp, int argc, char *argv[])
> > >  {
> > > @@ -315,10 +315,10 @@ static int do_cpufreq(struct command *cmdtp, int argc, char *argv[])
> > >  
> > >  	switch (freq) {
> > >  	case 399:
> > > -		writel(MPCTL_PARAM_399, IMX_CCM_BASE + CCM_MPCTL);
> > > +		writel(CCM_PDR0_PARAM_399, IMX_CCM_BASE + CCM_PDR0);
> > >  		break;
> > >  	case 532:
> > > -		writel(MPCTL_PARAM_532, IMX_CCM_BASE + CCM_MPCTL);
> > > +		writel(CCM_PDR0_PARAM_532, IMX_CCM_BASE + CCM_PDR0);
> > >  		break;
> > >  	default:
> > >  		return COMMAND_ERROR_USAGE;
> > > -- 
> > > 1.7.0.4
> > > 
> > > 
> > > _______________________________________________
> > > barebox mailing list
> > > barebox at lists.infradead.org
> > > http://lists.infradead.org/mailman/listinfo/barebox
> > 
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list