|
@@ -35,70 +35,6 @@
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
-static int check_CPU(long clock, uint pvr, uint immr)
|
|
|
-{
|
|
|
- immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
|
|
|
- uint k;
|
|
|
- char buf[32];
|
|
|
-
|
|
|
- /* the highest 16 bits should be 0x0050 for a 860 */
|
|
|
-
|
|
|
- if (PVR_VER(pvr) != PVR_VER(PVR_8xx))
|
|
|
- return -1;
|
|
|
-
|
|
|
- k = (immr << 16) |
|
|
|
- in_be16(&immap->im_cpm.cp_dparam16[PROFF_REVNUM / sizeof(u16)]);
|
|
|
-
|
|
|
- /*
|
|
|
- * Some boards use sockets so different CPUs can be used.
|
|
|
- * We have to check chip version in run time.
|
|
|
- */
|
|
|
- switch (k) {
|
|
|
- /* MPC866P/MPC866T/MPC859T/MPC859DSL/MPC852T */
|
|
|
- case 0x08010004: /* Rev. A.0 */
|
|
|
- printf("MPC866xxxZPnnA");
|
|
|
- break;
|
|
|
- case 0x08000003: /* Rev. 0.3 */
|
|
|
- printf("MPC866xxxZPnn");
|
|
|
- break;
|
|
|
- case 0x09000000: /* 870/875/880/885 */
|
|
|
- puts("MPC885ZPnn");
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- printf("unknown MPC86x (0x%08x)", k);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- printf(" at %s MHz: ", strmhz(buf, clock));
|
|
|
-
|
|
|
- print_size(checkicache(), " I-Cache ");
|
|
|
- print_size(checkdcache(), " D-Cache");
|
|
|
-
|
|
|
- /* do we have a FEC (860T/P or 852/859/866/885)? */
|
|
|
-
|
|
|
- out_be32(&immap->im_cpm.cp_fec.fec_addr_low, 0x12345678);
|
|
|
- if (in_be32(&immap->im_cpm.cp_fec.fec_addr_low) == 0x12345678)
|
|
|
- printf(" FEC present");
|
|
|
-
|
|
|
- putc('\n');
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-/* ------------------------------------------------------------------------- */
|
|
|
-
|
|
|
-int checkcpu(void)
|
|
|
-{
|
|
|
- ulong clock = gd->cpu_clk;
|
|
|
- uint immr = get_immr(); /* Return full IMMR contents */
|
|
|
- uint pvr = get_pvr();
|
|
|
-
|
|
|
- puts("CPU: ");
|
|
|
-
|
|
|
- return check_CPU(clock, pvr, immr);
|
|
|
-}
|
|
|
-
|
|
|
/* ------------------------------------------------------------------------- */
|
|
|
/* L1 i-cache */
|
|
|
|
|
@@ -143,7 +79,7 @@ int checkicache(void)
|
|
|
/* L1 d-cache */
|
|
|
/* call with cache disabled */
|
|
|
|
|
|
-int checkdcache(void)
|
|
|
+static int checkdcache(void)
|
|
|
{
|
|
|
immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
|
|
|
memctl8xx_t __iomem *memctl = &immap->im_memctl;
|
|
@@ -175,6 +111,70 @@ int checkdcache(void)
|
|
|
return lines << 4;
|
|
|
};
|
|
|
|
|
|
+static int check_CPU(long clock, uint pvr, uint immr)
|
|
|
+{
|
|
|
+ immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
|
|
|
+ uint k;
|
|
|
+ char buf[32];
|
|
|
+
|
|
|
+ /* the highest 16 bits should be 0x0050 for a 860 */
|
|
|
+
|
|
|
+ if (PVR_VER(pvr) != PVR_VER(PVR_8xx))
|
|
|
+ return -1;
|
|
|
+
|
|
|
+ k = (immr << 16) |
|
|
|
+ in_be16(&immap->im_cpm.cp_dparam16[PROFF_REVNUM / sizeof(u16)]);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Some boards use sockets so different CPUs can be used.
|
|
|
+ * We have to check chip version in run time.
|
|
|
+ */
|
|
|
+ switch (k) {
|
|
|
+ /* MPC866P/MPC866T/MPC859T/MPC859DSL/MPC852T */
|
|
|
+ case 0x08010004: /* Rev. A.0 */
|
|
|
+ printf("MPC866xxxZPnnA");
|
|
|
+ break;
|
|
|
+ case 0x08000003: /* Rev. 0.3 */
|
|
|
+ printf("MPC866xxxZPnn");
|
|
|
+ break;
|
|
|
+ case 0x09000000: /* 870/875/880/885 */
|
|
|
+ puts("MPC885ZPnn");
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ printf("unknown MPC86x (0x%08x)", k);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ printf(" at %s MHz: ", strmhz(buf, clock));
|
|
|
+
|
|
|
+ print_size(checkicache(), " I-Cache ");
|
|
|
+ print_size(checkdcache(), " D-Cache");
|
|
|
+
|
|
|
+ /* do we have a FEC (860T/P or 852/859/866/885)? */
|
|
|
+
|
|
|
+ out_be32(&immap->im_cpm.cp_fec.fec_addr_low, 0x12345678);
|
|
|
+ if (in_be32(&immap->im_cpm.cp_fec.fec_addr_low) == 0x12345678)
|
|
|
+ printf(" FEC present");
|
|
|
+
|
|
|
+ putc('\n');
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+/* ------------------------------------------------------------------------- */
|
|
|
+
|
|
|
+int checkcpu(void)
|
|
|
+{
|
|
|
+ ulong clock = gd->cpu_clk;
|
|
|
+ uint immr = get_immr(); /* Return full IMMR contents */
|
|
|
+ uint pvr = get_pvr();
|
|
|
+
|
|
|
+ puts("CPU: ");
|
|
|
+
|
|
|
+ return check_CPU(clock, pvr, immr);
|
|
|
+}
|
|
|
+
|
|
|
/* ------------------------------------------------------------------------- */
|
|
|
|
|
|
void upmconfig(uint upm, uint *table, uint size)
|