X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cpu%2Fmpc8260%2Fcpu.c;h=94651dc4a69846731d2e8bae49645e5b2eb63c95;hb=fa23044564091f05d9695beb7b5b9a931e7f41a4;hp=73881eef304291077cd2089d638a8f9479e97c55;hpb=4a9cbbe832e1c377d04cfb53e9679844595bc3cf;p=oweals%2Fu-boot.git diff --git a/cpu/mpc8260/cpu.c b/cpu/mpc8260/cpu.c index 73881eef30..94651dc4a6 100644 --- a/cpu/mpc8260/cpu.c +++ b/cpu/mpc8260/cpu.c @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000 + * (C) Copyright 2000-2006 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -22,12 +22,12 @@ */ /* - * CPU specific code for the MPC8260 + * CPU specific code for the MPC825x / MPC826x / MPC827x / MPC828x * * written or collected and sometimes rewritten by * Magnus Damm * - * minor modifications by + * modified by * Wolfgang Denk * * modified for 8260 by @@ -35,6 +35,9 @@ * * added 8260 masks by * Marius Groeger + * + * added HiP7 (824x/827x/8280) processors support by + * Yuli Barcohen */ #include @@ -44,10 +47,14 @@ #include #include +DECLARE_GLOBAL_DATA_PTR; + +#if defined(CONFIG_GET_CPU_STR_F) +extern int get_cpu_str_f (char *buf); +#endif + int checkcpu (void) { - DECLARE_GLOBAL_DATA_PTR; - volatile immap_t *immap = (immap_t *) CFG_IMMR; ulong clock = gd->cpu_clk; uint pvr = get_pvr (); @@ -56,15 +63,34 @@ int checkcpu (void) puts ("CPU: "); - if (((pvr >> 16) & 0xff) != 0x81) + switch (pvr) { + case PVR_8260: + case PVR_8260_HIP3: + k = 3; + break; + case PVR_8260_HIP4: + k = 4; + break; + case PVR_8260_HIP7R1: + case PVR_8260_HIP7RA: + case PVR_8260_HIP7: + k = 7; + break; + default: return -1; /* whoops! not an MPC8260 */ + } rev = pvr & 0xff; immr = immap->im_memctl.memc_immr; if ((immr & IMMR_ISB_MSK) != CFG_IMMR) return -1; /* whoops! someone moved the IMMR */ - printf ("MPC8260 (Rev %02x, Mask ", rev); +#if defined(CONFIG_GET_CPU_STR_F) + get_cpu_str_f (buf); + printf ("%s (HiP%d Rev %02x, Mask ", buf, k, rev); +#else + printf (CPU_ID_STR " (HiP%d Rev %02x, Mask ", k, rev); +#endif /* * the bottom 16 bits of the immr are the Part Number and Mask Number @@ -78,28 +104,55 @@ int checkcpu (void) switch (m) { case 0x0000: - printf ("0.2 2J24M"); + puts ("0.2 2J24M"); break; case 0x0010: - printf ("A.0 K22A"); + puts ("A.0 K22A"); break; case 0x0011: - printf ("A.1 1K22A-XC"); + puts ("A.1 1K22A-XC"); break; case 0x0001: - printf ("B.1 1K23A"); + puts ("B.1 1K23A"); break; case 0x0021: - printf ("B.2 2K23A-XC"); + puts ("B.2 2K23A-XC"); break; case 0x0023: - printf ("B.3 3K23A"); + puts ("B.3 3K23A"); break; case 0x0024: - printf ("C.2 6K23A"); + puts ("C.2 6K23A"); break; case 0x0060: - printf ("A.0(A) 2K25A"); + puts ("A.0(A) 2K25A"); + break; + case 0x0062: + puts ("B.1 4K25A"); + break; + case 0x0064: + puts ("C.0 5K25A"); + break; + case 0x0A00: + puts ("0.0 0K49M"); + break; + 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 1K50M"); + break; + case 0x0D00: + puts ("0.0 0K50M"); + break; + case 0x0D10: + puts ("1.0 1K50M"); break; default: printf ("unknown [immr=0x%04x,k=0x%04x]", m, k); @@ -176,8 +229,9 @@ void upmconfig (uint upm, uint * table, uint size) /* ------------------------------------------------------------------------- */ +#if !defined(CONFIG_HAVE_OWN_RESET) int -do_reset (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc, char *argv[]) +do_reset (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) { ulong msr, addr; @@ -209,6 +263,7 @@ do_reset (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc, char *argv[]) return 1; } +#endif /* CONFIG_HAVE_OWN_RESET */ /* ------------------------------------------------------------------------- */ @@ -218,8 +273,6 @@ do_reset (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc, char *argv[]) */ unsigned long get_tbclk (void) { - DECLARE_GLOBAL_DATA_PTR; - ulong tbclk; tbclk = (gd->bus_clk + 3L) / 4L;