diff options
Diffstat (limited to 'cpu')
-rw-r--r-- | cpu/mpc5xxx/cpu_init.c | 5 | ||||
-rw-r--r-- | cpu/mpc5xxx/pci_mpc5200.c | 5 | ||||
-rw-r--r-- | cpu/mpc8260/cpu.c | 14 | ||||
-rw-r--r-- | cpu/mpc8260/i2c.c | 4 | ||||
-rw-r--r-- | cpu/mpc8260/speed.c | 5 |
5 files changed, 24 insertions, 9 deletions
diff --git a/cpu/mpc5xxx/cpu_init.c b/cpu/mpc5xxx/cpu_init.c index 3599a86..3df0050 100644 --- a/cpu/mpc5xxx/cpu_init.c +++ b/cpu/mpc5xxx/cpu_init.c @@ -170,6 +170,11 @@ void cpu_init_f (void) /* Configure the XLB Arbiter */ *(vu_long *)MPC5XXX_XLBARB_MPRIEN = 0xff; *(vu_long *)MPC5XXX_XLBARB_MPRIVAL = 0x11111111; + +# if defined(CFG_XLB_PIPELINING) + /* Enable piplining */ + *(vu_long *)(MPC5XXX_XLBARB + 0x40) &= ~(1 << 31); +# endif #endif /* CONFIG_MPC5200 */ } diff --git a/cpu/mpc5xxx/pci_mpc5200.c b/cpu/mpc5xxx/pci_mpc5200.c index 94c157f..490fcd2 100644 --- a/cpu/mpc5xxx/pci_mpc5200.c +++ b/cpu/mpc5xxx/pci_mpc5200.c @@ -129,11 +129,6 @@ void pci_mpc5xxx_init (struct pci_controller *hose) *(vu_long *)(MPC5XXX_XLBARB + 0x40) &= ~((7 << 8) | (3 << 5)); *(vu_long *)(MPC5XXX_XLBARB + 0x40) |= (3 << 8) | (3 << 5); -#if 0 - /* Enable piplining */ - *(vu_long *)(MPC5XXX_XLBARB + 0x40) &= ~(1 << 31); -#endif - /* Disable interrupts from PCI controller */ *(vu_long *)MPC5XXX_PCI_GSCR &= ~(7 << 12); *(vu_long *)MPC5XXX_PCI_ICR &= ~(7 << 24); diff --git a/cpu/mpc8260/cpu.c b/cpu/mpc8260/cpu.c index 8adf950..8d634b0 100644 --- a/cpu/mpc8260/cpu.c +++ b/cpu/mpc8260/cpu.c @@ -68,6 +68,7 @@ int checkcpu (void) k = 4; break; case PVR_8260_HIP7R1: + case PVR_8260_HIP7RA: case PVR_8260_HIP7: k = 7; break; @@ -129,9 +130,20 @@ int checkcpu (void) case 0x0A01: puts ("0.1 1K49M"); break; + case 0x0A10: + puts ("1.0 1K49M"); + break; case 0x0C00: + puts ("0.0 0K50M"); + break; + case 0x0C10: + puts ("1.0 0K50M"); + break; case 0x0D00: - printf ("0.0 0K50M"); + puts ("0.0 0K50M"); + break; + case 0x0D10: + puts ("1.0 0K50M"); break; default: printf ("unknown [immr=0x%04x,k=0x%04x]", m, k); diff --git a/cpu/mpc8260/i2c.c b/cpu/mpc8260/i2c.c index 789c514..e0ac684 100644 --- a/cpu/mpc8260/i2c.c +++ b/cpu/mpc8260/i2c.c @@ -149,7 +149,7 @@ i2c_roundrate(int hz, int speed, int filter, int modval, PRINTD(("\t\tmoddiv=%d, brgdiv=%d\n", moddiv, brgdiv)); - *brgval = (brgdiv / 2) - 3 - (2*filter); + *brgval = ((brgdiv + 1) / 2) - 3 - (2*filter); if ((*brgval < 0) || (*brgval > 255)) { PRINTD(("\t\trejected brgval=%d\n", *brgval)); @@ -158,7 +158,7 @@ i2c_roundrate(int hz, int speed, int filter, int modval, brgdiv = 2 * (*brgval + 3 + (2 * filter)); div = moddiv * brgdiv ; - *totspeed = (hz + div - 1) / div; + *totspeed = hz / div; PRINTD(("\t\taccepted brgval=%d, totspeed=%d\n", *brgval, *totspeed)); diff --git a/cpu/mpc8260/speed.c b/cpu/mpc8260/speed.c index 16f4e90..a761a17 100644 --- a/cpu/mpc8260/speed.c +++ b/cpu/mpc8260/speed.c @@ -125,7 +125,10 @@ int get_clocks (void) busdf = (scmr & SCMR_BUSDF_MSK) >> SCMR_BUSDF_SHIFT; cpmdf = (scmr & SCMR_CPMDF_MSK) >> SCMR_CPMDF_SHIFT; - if ((get_pvr () == PVR_8260_HIP7) || (get_pvr () == PVR_8260_HIP7R1)) { /* HiP7 */ + /* HiP7, HiP7 Rev01, HiP7 RevA */ + if ((get_pvr () == PVR_8260_HIP7) || + (get_pvr () == PVR_8260_HIP7R1) || + (get_pvr () == PVR_8260_HIP7RA)) { pllmf = (scmr & SCMR_PLLMF_MSKH7) >> SCMR_PLLMF_SHIFT; gd->vco_out = clkin * (pllmf + 1); } else { /* HiP3, HiP4 */ |