]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - arch/mips/sgi-ip27/ip27-init.c
Merge tag 'mips_5.5' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
[linux.git] / arch / mips / sgi-ip27 / ip27-init.c
index 79a52c4727829224005378906fcc90d274dec669..f597e1ee2df7a1bf89ad4eeca7d870bf2482fc53 100644 (file)
 #include <linux/mm.h>
 #include <linux/export.h>
 #include <linux/cpumask.h>
+#include <asm/bootinfo.h>
 #include <asm/cpu.h>
 #include <asm/io.h>
 #include <asm/pgtable.h>
+#include <asm/sgialib.h>
 #include <asm/time.h>
 #include <asm/sn/types.h>
 #include <asm/sn/sn0/addrs.h>
 #include <asm/sn/sn0/ip27.h>
 #include <asm/sn/mapped_kernel.h>
 
+#include "ip27-common.h"
+
 #define CPU_NONE               (cpuid_t)-1
 
-static DECLARE_BITMAP(hub_init_mask, MAX_COMPACT_NODES);
+static DECLARE_BITMAP(hub_init_mask, MAX_NUMNODES);
 nasid_t master_nasid = INVALID_NASID;
 
-cnodeid_t      nasid_to_compact_node[MAX_NASIDS];
-nasid_t                compact_to_nasid_node[MAX_COMPACT_NODES];
-cnodeid_t      cpuid_to_compact_node[MAXCPUS];
-
-EXPORT_SYMBOL(nasid_to_compact_node);
-
 struct cpuinfo_ip27 sn_cpu_info[NR_CPUS];
 EXPORT_SYMBOL_GPL(sn_cpu_info);
 
-extern void pcibr_setup(cnodeid_t);
-
-static void per_hub_init(cnodeid_t cnode)
+static void per_hub_init(nasid_t nasid)
 {
-       struct hub_data *hub = hub_data(cnode);
-       nasid_t nasid = COMPACT_TO_NASID_NODEID(cnode);
+       struct hub_data *hub = hub_data(nasid);
 
        cpumask_set_cpu(smp_processor_id(), &hub->h_cpus);
 
-       if (test_and_set_bit(cnode, hub_init_mask))
+       if (test_and_set_bit(nasid, hub_init_mask))
                return;
        /*
         * Set CRB timeout at 5ms, (< PI timeout of 10ms)
@@ -67,7 +62,7 @@ static void per_hub_init(cnodeid_t cnode)
        REMOTE_HUB_S(nasid, IIO_ICTP, 0x800);
        REMOTE_HUB_S(nasid, IIO_ICTO, 0xff);
 
-       hub_rtc_init(cnode);
+       hub_rtc_init(nasid);
 
        if (nasid) {
                /* copy exception handlers from first node to current node */
@@ -83,15 +78,15 @@ void per_cpu_init(void)
 {
        int cpu = smp_processor_id();
        int slice = LOCAL_HUB_L(PI_CPU_NUM);
-       cnodeid_t cnode = get_compact_nodeid();
-       struct hub_data *hub = hub_data(cnode);
+       nasid_t nasid = get_nasid();
+       struct hub_data *hub = hub_data(nasid);
 
        if (test_and_set_bit(slice, &hub->slice_map))
                return;
 
        clear_c0_status(ST0_IM);
 
-       per_hub_init(cnode);
+       per_hub_init(nasid);
 
        cpu_time_init();
        install_ipi();
@@ -113,21 +108,13 @@ get_nasid(void)
                         >> NSRI_NODEID_SHFT);
 }
 
-/*
- * Map the physical node id to a virtual node id (virtual node ids are contiguous).
- */
-cnodeid_t get_compact_nodeid(void)
-{
-       return NASID_TO_COMPACT_NODEID(get_nasid());
-}
-
-extern void ip27_reboot_setup(void);
-
 void __init plat_mem_setup(void)
 {
        u64 p, e, n_mode;
        nasid_t nid;
 
+       register_smp_ops(&ip27_smp_ops);
+
        ip27_reboot_setup();
 
        /*
@@ -166,3 +153,15 @@ void __init plat_mem_setup(void)
        ioport_resource.end = ~0UL;
        set_io_port_base(IO_BASE);
 }
+
+const char *get_system_type(void)
+{
+       return "SGI Origin";
+}
+
+void __init prom_init(void)
+{
+       prom_init_cmdline(fw_arg0, (LONG *)fw_arg1);
+       prom_meminit();
+}
+