]> err.no Git - linux-2.6/blobdiff - arch/ppc/kernel/setup.c
Merge branch 'master'
[linux-2.6] / arch / ppc / kernel / setup.c
index c42f753269396ff297e02669004e3c126a921f26..6bcb85d2b7fd92be45bf49d1b7e9d23526c0276e 100644 (file)
 #include <asm/xmon.h>
 #include <asm/ocp.h>
 
-#if defined(CONFIG_85xx) || defined(CONFIG_83xx) || defined(CONFIG_MPC10X_BRIDGE)
+#define USES_PPC_SYS (defined(CONFIG_85xx) || defined(CONFIG_83xx) || \
+                     defined(CONFIG_MPC10X_BRIDGE) || defined(CONFIG_8260) || \
+                     defined(CONFIG_PPC_MPC52xx))
+
+#if USES_PPC_SYS
 #include <asm/ppc_sys.h>
 #endif
 
@@ -67,7 +71,8 @@ struct ide_machdep_calls ppc_ide_md;
 unsigned long boot_mem_size;
 
 unsigned long ISA_DMA_THRESHOLD;
-unsigned long DMA_MODE_READ, DMA_MODE_WRITE;
+unsigned int DMA_MODE_READ;
+unsigned int DMA_MODE_WRITE;
 
 #ifdef CONFIG_PPC_MULTIPLATFORM
 int _machine = 0;
@@ -78,8 +83,18 @@ extern void pmac_init(unsigned long r3, unsigned long r4,
                unsigned long r5, unsigned long r6, unsigned long r7);
 extern void chrp_init(unsigned long r3, unsigned long r4,
                unsigned long r5, unsigned long r6, unsigned long r7);
+
+dev_t boot_dev;
 #endif /* CONFIG_PPC_MULTIPLATFORM */
 
+int have_of;
+EXPORT_SYMBOL(have_of);
+
+#ifdef __DO_IRQ_CANON
+int ppc_do_canonicalize_irqs;
+EXPORT_SYMBOL(ppc_do_canonicalize_irqs);
+#endif
+
 #ifdef CONFIG_MAGIC_SYSRQ
 unsigned long SYSRQ_KEY = 0x54;
 #endif /* CONFIG_MAGIC_SYSRQ */
@@ -121,8 +136,6 @@ void machine_restart(char *cmd)
        ppc_md.restart(cmd);
 }
 
-EXPORT_SYMBOL(machine_restart);
-
 void machine_power_off(void)
 {
 #ifdef CONFIG_NVRAM
@@ -131,8 +144,6 @@ void machine_power_off(void)
        ppc_md.power_off();
 }
 
-EXPORT_SYMBOL(machine_power_off);
-
 void machine_halt(void)
 {
 #ifdef CONFIG_NVRAM
@@ -141,8 +152,6 @@ void machine_halt(void)
        ppc_md.halt();
 }
 
-EXPORT_SYMBOL(machine_halt);
-
 void (*pm_power_off)(void) = machine_power_off;
 
 #ifdef CONFIG_TAU
@@ -187,18 +196,18 @@ int show_cpuinfo(struct seq_file *m, void *v)
        seq_printf(m, "processor\t: %d\n", i);
        seq_printf(m, "cpu\t\t: ");
 
-       if (cur_cpu_spec[i]->pvr_mask)
-               seq_printf(m, "%s", cur_cpu_spec[i]->cpu_name);
+       if (cur_cpu_spec->pvr_mask)
+               seq_printf(m, "%s", cur_cpu_spec->cpu_name);
        else
                seq_printf(m, "unknown (%08x)", pvr);
 #ifdef CONFIG_ALTIVEC
-       if (cur_cpu_spec[i]->cpu_features & CPU_FTR_ALTIVEC)
+       if (cur_cpu_spec->cpu_features & CPU_FTR_ALTIVEC)
                seq_printf(m, ", altivec supported");
 #endif
        seq_printf(m, "\n");
 
 #ifdef CONFIG_TAU
-       if (cur_cpu_spec[i]->cpu_features & CPU_FTR_TAU) {
+       if (cur_cpu_spec->cpu_features & CPU_FTR_TAU) {
 #ifdef CONFIG_TAU_AVERAGE
                /* more straightforward, but potentially misleading */
                seq_printf(m,  "temperature \t: %u C (uncalibrated)\n",
@@ -247,7 +256,7 @@ int show_cpuinfo(struct seq_file *m, void *v)
        seq_printf(m, "bogomips\t: %lu.%02lu\n",
                   lpj / (500000/HZ), (lpj / (5000/HZ)) % 100);
 
-#if defined(CONFIG_85xx) || defined(CONFIG_83xx) || defined(CONFIG_MPC10X_BRIDGE)
+#if USES_PPC_SYS
        if (cur_ppc_sys_spec->ppc_sys_name)
                seq_printf(m, "chipset\t\t: %s\n",
                        cur_ppc_sys_spec->ppc_sys_name);
@@ -341,7 +350,7 @@ early_init(int r3, int r4, int r5)
  * Assume here that all clock rates are the same in a
  * smp system.  -- Cort
  */
-int __openfirmware
+int
 of_show_percpuinfo(struct seq_file *m, int i)
 {
        struct device_node *cpu_node;
@@ -406,11 +415,15 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
                        _machine = _MACH_prep;
        }
 
+#ifdef CONFIG_PPC_PREP
        /* not much more to do here, if prep */
        if (_machine == _MACH_prep) {
                prep_init(r3, r4, r5, r6, r7);
                return;
        }
+#endif
+
+       have_of = 1;
 
        /* prom_init has already been called from __start */
        if (boot_infos)
@@ -481,12 +494,16 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
 #endif /* CONFIG_ADB */
 
        switch (_machine) {
+#ifdef CONFIG_PPC_PMAC
        case _MACH_Pmac:
                pmac_init(r3, r4, r5, r6, r7);
                break;
+#endif
+#ifdef CONFIG_PPC_CHRP
        case _MACH_chrp:
                chrp_init(r3, r4, r5, r6, r7);
                break;
+#endif
        }
 }
 
@@ -621,6 +638,26 @@ machine_init(unsigned long r3, unsigned long r4, unsigned long r5,
        if (ppc_md.progress)
                ppc_md.progress("id mach(): done", 0x200);
 }
+#ifdef CONFIG_BOOKE_WDT
+/* Checks wdt=x and wdt_period=xx command-line option */
+int __init early_parse_wdt(char *p)
+{
+       if (p && strncmp(p, "0", 1) != 0)
+              booke_wdt_enabled = 1;
+
+       return 0;
+}
+early_param("wdt", early_parse_wdt);
+
+int __init early_parse_wdt_period (char *p)
+{
+       if (p)
+               booke_wdt_period = simple_strtoul(p, NULL, 0);
+
+       return 0;
+}
+early_param("wdt_period", early_parse_wdt_period);
+#endif /* CONFIG_BOOKE_WDT */
 
 /* Checks "l2cr=xxxx" command-line option */
 int __init ppc_setup_l2cr(char *str)
@@ -703,7 +740,7 @@ void __init setup_arch(char **cmdline_p)
 #endif
 
 #ifdef CONFIG_XMON
-       xmon_map_scc();
+       xmon_init(1);
        if (strstr(cmd_line, "xmon"))
                xmon(NULL);
 #endif /* CONFIG_XMON */
@@ -727,12 +764,12 @@ void __init setup_arch(char **cmdline_p)
         * for a possibly more accurate value.
         */
        if (cpu_has_feature(CPU_FTR_SPLIT_ID_CACHE)) {
-               dcache_bsize = cur_cpu_spec[0]->dcache_bsize;
-               icache_bsize = cur_cpu_spec[0]->icache_bsize;
+               dcache_bsize = cur_cpu_spec->dcache_bsize;
+               icache_bsize = cur_cpu_spec->icache_bsize;
                ucache_bsize = 0;
        } else
                ucache_bsize = dcache_bsize = icache_bsize
-                       = cur_cpu_spec[0]->dcache_bsize;
+                       = cur_cpu_spec->dcache_bsize;
 
        /* reboot on panic */
        panic_timeout = 180;