linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / alpha / kernel / setup.c
index a94e6d9..45308bd 100644 (file)
@@ -19,8 +19,9 @@
 #include <linux/slab.h>
 #include <linux/user.h>
 #include <linux/a.out.h>
-#include <linux/screen_info.h>
+#include <linux/tty.h>
 #include <linux/delay.h>
+#include <linux/config.h>      /* CONFIG_ALPHA_LCA etc */
 #include <linux/mc146818rtc.h>
 #include <linux/console.h>
 #include <linux/cpu.h>
 #include <linux/init.h>
 #include <linux/string.h>
 #include <linux/ioport.h>
-#include <linux/platform_device.h>
 #include <linux/bootmem.h>
 #include <linux/pci.h>
 #include <linux/seq_file.h>
 #include <linux/root_dev.h>
 #include <linux/initrd.h>
 #include <linux/eisa.h>
-#include <linux/pfn.h>
 #ifdef CONFIG_MAGIC_SYSRQ
 #include <linux/sysrq.h>
 #include <linux/reboot.h>
@@ -44,7 +43,7 @@
 #include <asm/setup.h>
 #include <asm/io.h>
 
-extern struct atomic_notifier_head panic_notifier_list;
+extern struct notifier_block *panic_notifier_list;
 static int alpha_panic_event(struct notifier_block *, unsigned long, void *);
 static struct notifier_block alpha_panic_block = {
        alpha_panic_event,
@@ -113,6 +112,8 @@ struct alpha_machine_vector alpha_mv;
 int alpha_using_srm;
 #endif
 
+#define N(a) (sizeof(a)/sizeof(a[0]))
+
 static struct alpha_machine_vector *get_sysvec(unsigned long, unsigned long,
                                               unsigned long);
 static struct alpha_machine_vector *get_sysvec_byname(const char *);
@@ -237,10 +238,13 @@ reserve_std_resources(void)
        standard_io_resources[0].start = RTC_PORT(0);
        standard_io_resources[0].end = RTC_PORT(0) + 0x10;
 
-       for (i = 0; i < ARRAY_SIZE(standard_io_resources); ++i)
+       for (i = 0; i < N(standard_io_resources); ++i)
                request_resource(io, standard_io_resources+i);
 }
 
+#define PFN_UP(x)      (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
+#define PFN_DOWN(x)    ((x) >> PAGE_SHIFT)
+#define PFN_PHYS(x)    ((x) << PAGE_SHIFT)
 #define PFN_MAX                PFN_DOWN(0x80000000)
 #define for_each_mem_cluster(memdesc, cluster, i)              \
        for ((cluster) = (memdesc)->cluster, (i) = 0;           \
@@ -469,6 +473,11 @@ page_is_ram(unsigned long pfn)
        return 0;
 }
 
+#undef PFN_UP
+#undef PFN_DOWN
+#undef PFN_PHYS
+#undef PFN_MAX
+
 static int __init
 register_cpus(void)
 {
@@ -478,7 +487,7 @@ register_cpus(void)
                struct cpu *p = kzalloc(sizeof(*p), GFP_KERNEL);
                if (!p)
                        return -ENOMEM;
-               register_cpu(p, i);
+               register_cpu(p, i, NULL);
        }
        return 0;
 }
@@ -515,8 +524,7 @@ setup_arch(char **cmdline_p)
        }
 
        /* Register a call for panic conditions. */
-       atomic_notifier_chain_register(&panic_notifier_list,
-                       &alpha_panic_block);
+       notifier_chain_register(&panic_notifier_list, &alpha_panic_block);
 
 #ifdef CONFIG_ALPHA_GENERIC
        /* Assume that we've booted from SRM if we haven't booted from MILO.
@@ -915,13 +923,13 @@ get_sysvec(unsigned long type, unsigned long variation, unsigned long cpu)
 
        /* Search the system tables first... */
        vec = NULL;
-       if (type < ARRAY_SIZE(systype_vecs)) {
+       if (type < N(systype_vecs)) {
                vec = systype_vecs[type];
        } else if ((type > ST_API_BIAS) &&
-                  (type - ST_API_BIAS) < ARRAY_SIZE(api_vecs)) {
+                  (type - ST_API_BIAS) < N(api_vecs)) {
                vec = api_vecs[type - ST_API_BIAS];
        } else if ((type > ST_UNOFFICIAL_BIAS) &&
-                  (type - ST_UNOFFICIAL_BIAS) < ARRAY_SIZE(unofficial_vecs)) {
+                  (type - ST_UNOFFICIAL_BIAS) < N(unofficial_vecs)) {
                vec = unofficial_vecs[type - ST_UNOFFICIAL_BIAS];
        }
 
@@ -935,11 +943,11 @@ get_sysvec(unsigned long type, unsigned long variation, unsigned long cpu)
 
                switch (type) {
                case ST_DEC_ALCOR:
-                       if (member < ARRAY_SIZE(alcor_indices))
+                       if (member < N(alcor_indices))
                                vec = alcor_vecs[alcor_indices[member]];
                        break;
                case ST_DEC_EB164:
-                       if (member < ARRAY_SIZE(eb164_indices))
+                       if (member < N(eb164_indices))
                                vec = eb164_vecs[eb164_indices[member]];
                        /* PC164 may show as EB164 variation with EV56 CPU,
                           but, since no true EB164 had anything but EV5... */
@@ -947,24 +955,24 @@ get_sysvec(unsigned long type, unsigned long variation, unsigned long cpu)
                                vec = &pc164_mv;
                        break;
                case ST_DEC_EB64P:
-                       if (member < ARRAY_SIZE(eb64p_indices))
+                       if (member < N(eb64p_indices))
                                vec = eb64p_vecs[eb64p_indices[member]];
                        break;
                case ST_DEC_EB66:
-                       if (member < ARRAY_SIZE(eb66_indices))
+                       if (member < N(eb66_indices))
                                vec = eb66_vecs[eb66_indices[member]];
                        break;
                case ST_DEC_MARVEL:
-                       if (member < ARRAY_SIZE(marvel_indices))
+                       if (member < N(marvel_indices))
                                vec = marvel_vecs[marvel_indices[member]];
                        break;
                case ST_DEC_TITAN:
                        vec = titan_vecs[0];    /* default */
-                       if (member < ARRAY_SIZE(titan_indices))
+                       if (member < N(titan_indices))
                                vec = titan_vecs[titan_indices[member]];
                        break;
                case ST_DEC_TSUNAMI:
-                       if (member < ARRAY_SIZE(tsunami_indices))
+                       if (member < N(tsunami_indices))
                                vec = tsunami_vecs[tsunami_indices[member]];
                        break;
                case ST_DEC_1000:
@@ -1036,7 +1044,7 @@ get_sysvec_byname(const char *name)
 
        size_t i;
 
-       for (i = 0; i < ARRAY_SIZE(all_vecs); ++i) {
+       for (i = 0; i < N(all_vecs); ++i) {
                struct alpha_machine_vector *mv = all_vecs[i];
                if (strcasecmp(mv->vector_name, name) == 0)
                        return mv;
@@ -1052,13 +1060,13 @@ get_sysnames(unsigned long type, unsigned long variation, unsigned long cpu,
 
        /* If not in the tables, make it UNKNOWN,
           else set type name to family */
-       if (type < ARRAY_SIZE(systype_names)) {
+       if (type < N(systype_names)) {
                *type_name = systype_names[type];
        } else if ((type > ST_API_BIAS) &&
-                  (type - ST_API_BIAS) < ARRAY_SIZE(api_names)) {
+                  (type - ST_API_BIAS) < N(api_names)) {
                *type_name = api_names[type - ST_API_BIAS];
        } else if ((type > ST_UNOFFICIAL_BIAS) &&
-                  (type - ST_UNOFFICIAL_BIAS) < ARRAY_SIZE(unofficial_names)) {
+                  (type - ST_UNOFFICIAL_BIAS) < N(unofficial_names)) {
                *type_name = unofficial_names[type - ST_UNOFFICIAL_BIAS];
        } else {
                *type_name = sys_unknown;
@@ -1080,7 +1088,7 @@ get_sysnames(unsigned long type, unsigned long variation, unsigned long cpu,
        default: /* default to variation "0" for now */
                break;
        case ST_DEC_EB164:
-               if (member < ARRAY_SIZE(eb164_indices))
+               if (member < N(eb164_indices))
                        *variation_name = eb164_names[eb164_indices[member]];
                /* PC164 may show as EB164 variation, but with EV56 CPU,
                   so, since no true EB164 had anything but EV5... */
@@ -1088,32 +1096,32 @@ get_sysnames(unsigned long type, unsigned long variation, unsigned long cpu,
                        *variation_name = eb164_names[1]; /* make it PC164 */
                break;
        case ST_DEC_ALCOR:
-               if (member < ARRAY_SIZE(alcor_indices))
+               if (member < N(alcor_indices))
                        *variation_name = alcor_names[alcor_indices[member]];
                break;
        case ST_DEC_EB64P:
-               if (member < ARRAY_SIZE(eb64p_indices))
+               if (member < N(eb64p_indices))
                        *variation_name = eb64p_names[eb64p_indices[member]];
                break;
        case ST_DEC_EB66:
-               if (member < ARRAY_SIZE(eb66_indices))
+               if (member < N(eb66_indices))
                        *variation_name = eb66_names[eb66_indices[member]];
                break;
        case ST_DEC_MARVEL:
-               if (member < ARRAY_SIZE(marvel_indices))
+               if (member < N(marvel_indices))
                        *variation_name = marvel_names[marvel_indices[member]];
                break;
        case ST_DEC_RAWHIDE:
-               if (member < ARRAY_SIZE(rawhide_indices))
+               if (member < N(rawhide_indices))
                        *variation_name = rawhide_names[rawhide_indices[member]];
                break;
        case ST_DEC_TITAN:
                *variation_name = titan_names[0];       /* default */
-               if (member < ARRAY_SIZE(titan_indices))
+               if (member < N(titan_indices))
                        *variation_name = titan_names[titan_indices[member]];
                break;
        case ST_DEC_TSUNAMI:
-               if (member < ARRAY_SIZE(tsunami_indices))
+               if (member < N(tsunami_indices))
                        *variation_name = tsunami_names[tsunami_indices[member]];
                break;
        }
@@ -1208,7 +1216,7 @@ show_cpuinfo(struct seq_file *f, void *slot)
 
        cpu_index = (unsigned) (cpu->type - 1);
        cpu_name = "Unknown";
-       if (cpu_index < ARRAY_SIZE(cpu_names))
+       if (cpu_index < N(cpu_names))
                cpu_name = cpu_names[cpu_index];
 
        get_sysnames(hwrpb->sys_type, hwrpb->sys_variation,
@@ -1493,20 +1501,3 @@ alpha_panic_event(struct notifier_block *this, unsigned long event, void *ptr)
 #endif
         return NOTIFY_DONE;
 }
-
-static __init int add_pcspkr(void)
-{
-       struct platform_device *pd;
-       int ret;
-
-       pd = platform_device_alloc("pcspkr", -1);
-       if (!pd)
-               return -ENOMEM;
-
-       ret = platform_device_add(pd);
-       if (ret)
-               platform_device_put(pd);
-
-       return ret;
-}
-device_initcall(add_pcspkr);