]> err.no Git - linux-2.6/blobdiff - arch/m68k/amiga/config.c
Merge branch 'davem-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[linux-2.6] / arch / m68k / amiga / config.c
index c3b69b1b0cef5c8de8c8ad1553f2439af0ce513d..50f5daab46b7b53ecb282fc50a6e8bad8f3df2df 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/zorro.h>
+#include <linux/module.h>
 
 #include <asm/bootinfo.h>
 #include <asm/setup.h>
 #include <asm/io.h>
 
 unsigned long amiga_model;
+EXPORT_SYMBOL(amiga_model);
+
 unsigned long amiga_eclock;
+EXPORT_SYMBOL(amiga_eclock);
+
 unsigned long amiga_masterclock;
+
 unsigned long amiga_colorclock;
+EXPORT_SYMBOL(amiga_colorclock);
+
 unsigned long amiga_chipset;
+EXPORT_SYMBOL(amiga_chipset);
+
 unsigned char amiga_vblank;
 unsigned char amiga_psfreq;
+
 struct amiga_hw_present amiga_hw_present;
+EXPORT_SYMBOL(amiga_hw_present);
 
 static char s_a500[] __initdata = "A500";
 static char s_a500p[] __initdata = "A500+";
@@ -79,8 +91,6 @@ static char *amiga_models[] __initdata = {
 
 static char amiga_model_name[13] = "Amiga ";
 
-extern char m68k_debug_device[];
-
 static void amiga_sched_init(irq_handler_t handler);
 /* amiga specific irq functions */
 extern void amiga_init_IRQ(void);
@@ -95,12 +105,10 @@ static unsigned int amiga_get_ss(void);
 extern void amiga_mksound(unsigned int count, unsigned int ticks);
 static void amiga_reset(void);
 extern void amiga_init_sound(void);
-static void amiga_savekmsg_init(void);
 static void amiga_mem_console_write(struct console *co, const char *b,
                                    unsigned int count);
 void amiga_serial_console_write(struct console *co, const char *s,
                                unsigned int count);
-static void amiga_debug_init(void);
 #ifdef CONFIG_HEARTBEAT
 static void amiga_heartbeat(int on);
 #endif
@@ -370,7 +378,6 @@ void __init config_amiga(void)
 {
        int i;
 
-       amiga_debug_init();
        amiga_identify();
 
        /* Yuk, we don't have PCI memory */
@@ -458,17 +465,6 @@ void __init config_amiga(void)
        /* initialize chipram allocator */
        amiga_chip_init();
 
-       /* debugging using chipram */
-       if (!strcmp(m68k_debug_device, "mem")) {
-               if (!AMIGAHW_PRESENT(CHIP_RAM))
-                       printk("Warning: no chipram present for debugging\n");
-               else {
-                       amiga_savekmsg_init();
-                       amiga_console_driver.write = amiga_mem_console_write;
-                       register_console(&amiga_console_driver);
-               }
-       }
-
        /* our beloved beeper */
        if (AMIGAHW_PRESENT(AMI_AUDIO))
                amiga_init_sound();
@@ -787,17 +783,33 @@ static void amiga_mem_console_write(struct console *co, const char *s,
        }
 }
 
-static void amiga_savekmsg_init(void)
+static int __init amiga_savekmsg_setup(char *arg)
 {
        static struct resource debug_res = { .name = "Debug" };
 
+       if (!MACH_IS_AMIGA || strcmp(arg, "mem"))
+               goto done;
+
+       if (!AMIGAHW_PRESENT(CHIP_RAM)) {
+               printk("Warning: no chipram present for debugging\n");
+               goto done;
+       }
+
        savekmsg = amiga_chip_alloc_res(SAVEKMSG_MAXMEM, &debug_res);
        savekmsg->magic1 = SAVEKMSG_MAGIC1;
        savekmsg->magic2 = SAVEKMSG_MAGIC2;
        savekmsg->magicptr = ZTWO_PADDR(savekmsg);
        savekmsg->size = 0;
+
+       amiga_console_driver.write = amiga_mem_console_write;
+       register_console(&amiga_console_driver);
+
+done:
+       return 0;
 }
 
+early_param("debug", amiga_savekmsg_setup);
+
 static void amiga_serial_putc(char c)
 {
        amiga_custom.serdat = (unsigned char)c | 0x100;
@@ -872,15 +884,18 @@ void amiga_serial_gets(struct console *co, char *s, int len)
 }
 #endif
 
-static void __init amiga_debug_init(void)
+static int __init amiga_debug_setup(char *arg)
 {
-       if (!strcmp(m68k_debug_device, "ser" )) {
+       if (MACH_IS_AMIGA && !strcmp(arg, "ser")) {
                /* no initialization required (?) */
                amiga_console_driver.write = amiga_serial_console_write;
                register_console(&amiga_console_driver);
        }
+       return 0;
 }
 
+early_param("debug", amiga_debug_setup);
+
 #ifdef CONFIG_HEARTBEAT
 static void amiga_heartbeat(int on)
 {