patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / arch / mips / au1000 / common / setup.c
index b45c214..d4c92fa 100644 (file)
@@ -65,40 +65,20 @@ extern void au1xxx_timer_setup(struct irqaction *irq);
 
 static int __init au1x00_setup(void)
 {
+       struct  cpu_spec *sp;
        char *argptr;
        unsigned long prid, cpupll, bclk = 1;
 
-       /* Various early Au1000 Errata corrected by this */
-       set_c0_config(1<<19); /* Config[OD] */
+       set_cpuspec();
+       sp = cur_cpu_spec[0];
 
        board_setup();  /* board specific setup */
 
        prid = read_c0_prid();
-       switch (prid)
-       {
-               case 0x00030100: printk("Au1000 DA "); bclk = 0; break;
-               case 0x00030201: printk("Au1000 HA "); bclk = 0; break;
-               case 0x00030202: printk("Au1000 HB "); bclk = 0; break;
-               case 0x00030203: printk("Au1000 HC "); break;
-               case 0x00030204: printk("Au1000 HD "); break;
-
-               case 0x01030200: printk("Au1500 AB "); break;
-               case 0x01030201: printk("Au1500 AC "); break;
-               case 0x01030202: printk("Au1500 AD "); break;
-
-               case 0x02030200: printk("Au1100 AB "); break;
-               case 0x02030201: printk("Au1100 BA "); break;
-               case 0x02030202: printk("Au1100 BC "); break;
-               case 0x02030203: printk("Au1100 BD "); break;
-               case 0x02030204: printk("Au1100 BE "); break;
-
-               case 0x03030200: printk("Au1550 AA "); break;
-
-               default: printk("Unknown Au1x00! "); bclk = 0; break;
-       }
        cpupll = (au_readl(0xB1900060) & 0x3F) * 12;
        printk("(PRId %08X) @ %dMHZ\n", prid, cpupll);
 
+       bclk = sp->cpu_bclk;
        if (bclk)
        {
                /* Enable BCLK switching */
@@ -107,6 +87,15 @@ static int __init au1x00_setup(void)
                printk("BCLK switching enabled!\n");
        }
 
+       if (sp->cpu_od) {
+               /* Various early Au1000 Errata corrected by this */
+               set_c0_config(1<<19); /* Set Config[OD] */
+       }
+       else {
+               /* Clear to obtain best system bus performance */
+               clear_c0_config(1<<19); /* Clear Config[OD] */
+       }
+
        argptr = prom_getcmdline();
 
 #ifdef CONFIG_SERIAL_AU1X00_CONSOLE