Kim, The patch also cause the MPC8315ERDB broken, the 8315ERDB can not boot up.
The root cause is that the SATA clock is not correct. I will send one patch to fix it. Please merge it. Thanks, Dave > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf > Of Phillips Kim > Sent: 2008?1?16? 2:38 PM > To: u-boot-users@lists.sourceforge.net > Cc: D'Abbraccio Joe; Reiss Michael > Subject: [U-Boot-Users] [PATCH 1/2] mpc83xx: add support for > more system clock performance controls > > System registers that are modified are the Arbiter Configuration > Register (ACR), the System Priority Control Register (SPCR), and the > System Clock Configuration Register (SCCR). > > Signed-off by: Michael F. Reiss <[EMAIL PROTECTED]> > Signed-off by: Joe D'Abbraccio <[EMAIL PROTECTED]> > Signed-off-by: Kim Phillips <[EMAIL PROTECTED]> > --- > cpu/mpc83xx/cpu_init.c | 73 > +++++++++++++++++++++++++++++++++-------------- > cpu/mpc83xx/speed.c | 12 ++++---- > include/mpc83xx.h | 13 ++++++-- > 3 files changed, 67 insertions(+), 31 deletions(-) > > diff --git a/cpu/mpc83xx/cpu_init.c b/cpu/mpc83xx/cpu_init.c > index 18d5a76..3337d8c 100644 > --- a/cpu/mpc83xx/cpu_init.c > +++ b/cpu/mpc83xx/cpu_init.c > @@ -78,59 +78,88 @@ void cpu_init_f (volatile immap_t * im) > im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSECEP) | > (CFG_SPCR_TSECEP << SPCR_TSECEP_SHIFT); > #endif > > +#ifdef CFG_ACR_RPTCNT > + /* Arbiter repeat count */ > + im->arbiter.acr = (im->arbiter.acr & ~(ACR_RPTCNT)) | > + (CFG_ACR_RPTCNT << ACR_RPTCNT_SHIFT); > +#endif > + > +#ifdef CFG_SPCR_TSECEP > + /* all TSEC's Emergency priority */ > + im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSECEP) | > + (CFG_SPCR_TSECEP << SPCR_TSECEP_SHIFT); > +#endif > + > #ifdef CFG_SPCR_TSEC1EP > /* TSEC1 Emergency priority */ > - im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSEC1EP) | > (CFG_SPCR_TSEC1EP << SPCR_TSEC1EP_SHIFT); > + im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSEC1EP) | > + (CFG_SPCR_TSEC1EP << SPCR_TSEC1EP_SHIFT); > #endif > > #ifdef CFG_SPCR_TSEC2EP > /* TSEC2 Emergency priority */ > - im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSEC2EP) | > (CFG_SPCR_TSEC2EP << SPCR_TSEC2EP_SHIFT); > + im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSEC2EP) | > + (CFG_SPCR_TSEC2EP << SPCR_TSEC2EP_SHIFT); > +#endif > + > +#ifdef CFG_SCCR_ENCCM > + /* Encryption clock mode */ > + im->clk.sccr = (im->clk.sccr & ~SCCR_ENCCM) | > + (CFG_SCCR_ENCCM << SCCR_PCICM_SHIFT); > +#endif > + > +#ifdef CFG_SCCR_PCICM > + /* PCI & DMA clock mode */ > + im->clk.sccr = (im->clk.sccr & ~SCCR_PCICM) | > + (CFG_SCCR_PCICM << SCCR_PCICM_SHIFT); > +#endif > + > +#ifdef CFG_SCCR_TSECCM > + /* all TSEC's clock mode */ > + im->clk.sccr = (im->clk.sccr & ~SCCR_TSECCM) | > + (CFG_SCCR_TSECCM << SCCR_TSECCM_SHIFT); > #endif > > #ifdef CFG_SCCR_TSEC1CM > /* TSEC1 clock mode */ > - im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1CM) | > (CFG_SCCR_TSEC1CM << SCCR_TSEC1CM_SHIFT); > + im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1CM) | > + (CFG_SCCR_TSEC1CM << SCCR_TSEC1CM_SHIFT); > #endif > > #ifdef CFG_SCCR_TSEC2CM > - /* TSEC2 & I2C1 clock mode */ > - im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC2CM) | > (CFG_SCCR_TSEC2CM << SCCR_TSEC2CM_SHIFT); > + /* TSEC2 clock mode */ > + im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC2CM) | > + (CFG_SCCR_TSEC2CM << SCCR_TSEC2CM_SHIFT); > #endif > > #ifdef CFG_SCCR_TSEC1ON > /* TSEC1 clock switch */ > - im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1ON) | > (CFG_SCCR_TSEC1ON << SCCR_TSEC1ON_SHIFT); > + im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1ON) | > + (CFG_SCCR_TSEC1ON << SCCR_TSEC1ON_SHIFT); > #endif > > #ifdef CFG_SCCR_TSEC2ON > /* TSEC2 clock switch */ > - im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC2ON) | > (CFG_SCCR_TSEC2ON << SCCR_TSEC2ON_SHIFT); > + im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC2ON) | > + (CFG_SCCR_TSEC2ON << SCCR_TSEC2ON_SHIFT); > #endif > > #ifdef CFG_SCCR_USBMPHCM > /* USB MPH clock mode */ > - im->clk.sccr = (im->clk.sccr & ~SCCR_USBMPHCM) | > (CFG_SCCR_USBMPHCM << SCCR_USBMPHCM_SHIFT); > -#endif > - > -#ifdef CFG_SCCR_PCICM > - /* PCI & DMA clock mode */ > - im->clk.sccr = (im->clk.sccr & ~SCCR_PCICM) | > (CFG_SCCR_PCICM << SCCR_PCICM_SHIFT); > + im->clk.sccr = (im->clk.sccr & ~SCCR_USBMPHCM) | > + (CFG_SCCR_USBMPHCM << SCCR_USBMPHCM_SHIFT); > #endif > > #ifdef CFG_SCCR_USBDRCM > /* USB DR clock mode */ > - im->clk.sccr = (im->clk.sccr & ~SCCR_USBDRCM) | > (CFG_SCCR_USBDRCM << SCCR_USBDRCM_SHIFT); > + im->clk.sccr = (im->clk.sccr & ~SCCR_USBDRCM) | > + (CFG_SCCR_USBDRCM << SCCR_USBDRCM_SHIFT); > #endif > > -#ifdef CFG_SCCR_ENCCM > - /* Encryption clock mode */ > - im->clk.sccr = (im->clk.sccr & ~SCCR_ENCCM) | > (CFG_SCCR_ENCCM << SCCR_PCICM_SHIFT); > -#endif > - > -#ifdef CFG_ACR_RPTCNT > - /* Arbiter repeat count */ > - im->arbiter.acr = ((im->arbiter.acr & ~(ACR_RPTCNT)) | > (CFG_ACR_RPTCNT << ACR_RPTCNT_SHIFT)); > +#ifdef CFG_SCCR_SATACM > + /* SATA controller clock mode */ > + im->clk.sccr = (im->clk.sccr & ~SCCR_SATACM) | > + (CFG_SCCR_SATACM << SCCR_SATACM_SHIFT); > #endif > > /* RSR - Reset Status Register - clear all status (4.6.1.3) */ > diff --git a/cpu/mpc83xx/speed.c b/cpu/mpc83xx/speed.c > index 4f5a866..61c9379 100644 > --- a/cpu/mpc83xx/speed.c > +++ b/cpu/mpc83xx/speed.c > @@ -367,21 +367,21 @@ int get_clocks(void) > #endif > > #if defined(CONFIG_MPC837X) || defined(CONFIG_MPC8315) > - switch ((sccr & SCCR_SATA1CM) >> SCCR_SATA1CM_SHIFT) { > - case 0: > + switch ((sccr & SCCR_SATACM) >> SCCR_SATACM_SHIFT) { > + case SCCR_SATACM_0: > sata_clk = 0; > break; > - case 1: > + case SCCR_SATACM_1: > sata_clk = csb_clk; > break; > - case 2: > + case SCCR_SATACM_2: > sata_clk = csb_clk / 2; > break; > - case 3: > + case SCCR_SATACM_3: > sata_clk = csb_clk / 3; > break; > default: > - /* unkown SCCR_SATA1CM value */ > + /* unkown SCCR_SATACM value */ > return -11; > } > #endif > diff --git a/include/mpc83xx.h b/include/mpc83xx.h > index 7299ca0..39cecf2 100644 > --- a/include/mpc83xx.h > +++ b/include/mpc83xx.h > @@ -725,13 +725,20 @@ > #define SCCR_USBCM_3 0x00F00000 > > #elif defined(CONFIG_MPC8313) > -/* TSEC1 bits are for TSEC2 as well */ > #define SCCR_TSEC1CM 0xc0000000 > #define SCCR_TSEC1CM_SHIFT 30 > +#define SCCR_TSEC1CM_0 0x00000000 > #define SCCR_TSEC1CM_1 0x40000000 > #define SCCR_TSEC1CM_2 0x80000000 > #define SCCR_TSEC1CM_3 0xC0000000 > > +#define SCCR_TSEC2CM 0x30000000 > +#define SCCR_TSEC2CM_SHIFT 28 > +#define SCCR_TSEC2CM_0 0x00000000 > +#define SCCR_TSEC2CM_1 0x10000000 > +#define SCCR_TSEC2CM_2 0x20000000 > +#define SCCR_TSEC2CM_3 0x30000000 > + > #define SCCR_TSEC1ON 0x20000000 > #define SCCR_TSEC1ON_SHIFT 29 > #define SCCR_TSEC2ON 0x10000000 > @@ -831,8 +838,6 @@ > #define SCCR_PCIEXP2CM_3 0x000c0000 > > /* All of the four SATA controllers must have the same clock ratio */ > -#define SCCR_SATA1CM 0x000000c0 > -#define SCCR_SATA1CM_SHIFT 6 > #define SCCR_SATACM 0x000000ff > #define SCCR_SATACM_SHIFT 0 > #define SCCR_SATACM_0 0x00000000 > @@ -852,6 +857,7 @@ > */ > #define CSCONFIG_EN 0x80000000 > #define CSCONFIG_AP 0x00800000 > +#define CSCONFIG_ODT_WR_ACS 0x00010000 > #define CSCONFIG_ROW_BIT 0x00000700 > #define CSCONFIG_ROW_BIT_12 0x00000000 > #define CSCONFIG_ROW_BIT_13 0x00000100 > @@ -1480,6 +1486,7 @@ > > /* DDRCDR - DDR Control Driver Register > */ > +#define DDRCDR_DHC_EN 0x80000000 > #define DDRCDR_EN 0x40000000 > #define DDRCDR_PZ 0x3C000000 > #define DDRCDR_PZ_MAXZ 0x00000000 > -- > 1.5.3 > > > -------------------------------------------------------------- > ----------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > U-Boot-Users mailing list > U-Boot-Users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/u-boot-users > ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users