[PATCH 4/5] PPC/PCM030: fix reference clock
Juergen Borleis
jbe at pengutronix.de
Mon Jul 27 00:55:32 PDT 2015
Hi Sascha,
On Monday 27 July 2015 07:42:40 Sascha Hauer wrote:
> On Fri, Jul 24, 2015 at 03:42:05PM +0200, Juergen Borleis wrote:
> > The PCM030 CPU module comes with a 33.333 MHz instead of a 33.333333 MHz
> > crystal reference. If such a special reference is in use, the USB PLL
> > needs a tweak to create a correct frequency. Without this tweak the USB
> > does not work correctly.
> >
> > Signed-off-by: Juergen Borleis <jbe at pengutronix.de>
> > ---
> > arch/ppc/boards/pcm030/config.h | 2 +-
> > arch/ppc/boards/pcm030/pcm030.c | 9 +++++++++
> > 2 files changed, 10 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/ppc/boards/pcm030/config.h
> > b/arch/ppc/boards/pcm030/config.h index 1521811..3fe1f28 100644
> > --- a/arch/ppc/boards/pcm030/config.h
> > +++ b/arch/ppc/boards/pcm030/config.h
> > @@ -25,7 +25,7 @@
> >
> > #include <mach/mpc5xxx.h>
> >
> > -#define CFG_MPC5XXX_CLKIN 33333333 /* ... running at 33.333333MHz */
> > +#define CFG_MPC5XXX_CLKIN 33333000 /* ... running at 33.333MHz */
> >
> > #define CFG_HID0_INIT HID0_ICE | HID0_ICFI
> > #define CFG_HID0_FINAL HID0_ICE
> > diff --git a/arch/ppc/boards/pcm030/pcm030.c
> > b/arch/ppc/boards/pcm030/pcm030.c index a7fa21d..376891a 100644
> > --- a/arch/ppc/boards/pcm030/pcm030.c
> > +++ b/arch/ppc/boards/pcm030/pcm030.c
> > @@ -32,6 +32,7 @@
> > #include <memory.h>
> > #include <linux/sizes.h>
> > #include <linux/stat.h>
> > +#include <asm/io.h>
> > #include <fs.h>
> >
> > static struct fec_platform_data fec_info = {
> > @@ -43,6 +44,14 @@ static int devices_init (void)
> > struct stat s;
> > int ret;
> >
> > +#if CFG_MPC5XXX_CLKIN == 33333000
> > + /*
> > + * Make USB work due to the special base crystal frequency:
> > + * 33,3330MHz * 16 = 533,328MHz main clock, but should be 528 MHz Clock
> > + */
> > + out_be32((void *)MPC5XXX_CDM_48_FDC, 0x00015555);
> > +#endif
>
> What's the point of having this #if? It's always true.
From my notes back from 2008 this tweak is only required if the reference
frequency is 33,333 MHz. And AFAIK there are 33,333333 MHz variants of the
PCM030 out in the wild (or 33,0 MHz?).
But checking other platform's code the value written seems more or less random.
The only important thing seems to be: this register must be setup. Its reset
value is 0x00000000 and the kernel does not touch this register.
I will remove the #if/#endif in v2.
jbe
--
Pengutronix e.K. | Juergen Borleis |
Industrial Linux Solutions | http://www.pengutronix.de/ |
More information about the barebox
mailing list