aboutsummaryrefslogtreecommitdiffstats
path: root/debian/patches/bugfix/m68k/m68k-reformat.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/bugfix/m68k/m68k-reformat.diff')
-rw-r--r--debian/patches/bugfix/m68k/m68k-reformat.diff4818
1 files changed, 4818 insertions, 0 deletions
diff --git a/debian/patches/bugfix/m68k/m68k-reformat.diff b/debian/patches/bugfix/m68k/m68k-reformat.diff
new file mode 100644
index 000000000000..d218533dd0c5
--- /dev/null
+++ b/debian/patches/bugfix/m68k/m68k-reformat.diff
@@ -0,0 +1,4818 @@
+Subject: [PATCH] m68k: reformat various m68k files
+
+From: Roman Zippel <zippel@linux-m68k.org>
+
+Reformat various m68k files, so they actually look like Linux sources.
+
+Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
+Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
+---
+ arch/m68k/amiga/config.c | 1062 +++++++++++++++++++++++------------------------
+ arch/m68k/atari/config.c | 983 ++++++++++++++++++++-----------------------
+ arch/m68k/atari/debug.c | 470 ++++++++++----------
+ arch/m68k/kernel/entry.S | 2
+ arch/m68k/kernel/head.S | 2
+ arch/m68k/kernel/setup.c | 381 ++++++++--------
+ arch/m68k/mac/config.c | 161 +++----
+ arch/m68k/mac/debug.c | 331 +++++++-------
+ arch/m68k/q40/config.c | 259 +++++------
+ arch/m68k/sun3x/prom.c | 121 ++---
+ 10 files changed, 1856 insertions(+), 1916 deletions(-)
+
+--- linux-m68k-2.6.21.orig/arch/m68k/amiga/config.c
++++ linux-m68k-2.6.21/arch/m68k/amiga/config.c
+@@ -22,9 +22,7 @@
+ #include <linux/vt_kern.h>
+ #include <linux/delay.h>
+ #include <linux/interrupt.h>
+-#ifdef CONFIG_ZORRO
+ #include <linux/zorro.h>
+-#endif
+
+ #include <asm/bootinfo.h>
+ #include <asm/setup.h>
+@@ -62,21 +60,21 @@ static char s_cdtv[] __initdata = "CDTV"
+ static char s_cd32[] __initdata = "CD32";
+ static char s_draco[] __initdata = "Draco";
+ static char *amiga_models[] __initdata = {
+- [AMI_500-AMI_500] = s_a500,
+- [AMI_500PLUS-AMI_500] = s_a500p,
+- [AMI_600-AMI_500] = s_a600,
+- [AMI_1000-AMI_500] = s_a1000,
+- [AMI_1200-AMI_500] = s_a1200,
+- [AMI_2000-AMI_500] = s_a2000,
+- [AMI_2500-AMI_500] = s_a2500,
+- [AMI_3000-AMI_500] = s_a3000,
+- [AMI_3000T-AMI_500] = s_a3000t,
+- [AMI_3000PLUS-AMI_500] = s_a3000p,
+- [AMI_4000-AMI_500] = s_a4000,
+- [AMI_4000T-AMI_500] = s_a4000t,
+- [AMI_CDTV-AMI_500] = s_cdtv,
+- [AMI_CD32-AMI_500] = s_cd32,
+- [AMI_DRACO-AMI_500] = s_draco,
++ [AMI_500-AMI_500] = s_a500,
++ [AMI_500PLUS-AMI_500] = s_a500p,
++ [AMI_600-AMI_500] = s_a600,
++ [AMI_1000-AMI_500] = s_a1000,
++ [AMI_1200-AMI_500] = s_a1200,
++ [AMI_2000-AMI_500] = s_a2000,
++ [AMI_2500-AMI_500] = s_a2500,
++ [AMI_3000-AMI_500] = s_a3000,
++ [AMI_3000T-AMI_500] = s_a3000t,
++ [AMI_3000PLUS-AMI_500] = s_a3000p,
++ [AMI_4000-AMI_500] = s_a4000,
++ [AMI_4000T-AMI_500] = s_a4000t,
++ [AMI_CDTV-AMI_500] = s_cdtv,
++ [AMI_CD32-AMI_500] = s_cd32,
++ [AMI_DRACO-AMI_500] = s_draco,
+ };
+
+ static char amiga_model_name[13] = "Amiga ";
+@@ -85,17 +83,17 @@ extern char m68k_debug_device[];
+
+ static void amiga_sched_init(irq_handler_t handler);
+ /* amiga specific irq functions */
+-extern void amiga_init_IRQ (void);
++extern void amiga_init_IRQ(void);
+ static void amiga_get_model(char *model);
+ static int amiga_get_hardware_list(char *buffer);
+ /* amiga specific timer functions */
+-static unsigned long amiga_gettimeoffset (void);
+-static int a3000_hwclk (int, struct rtc_time *);
+-static int a2000_hwclk (int, struct rtc_time *);
+-static int amiga_set_clock_mmss (unsigned long);
+-static unsigned int amiga_get_ss (void);
+-extern void amiga_mksound( unsigned int count, unsigned int ticks );
+-static void amiga_reset (void);
++static unsigned long amiga_gettimeoffset(void);
++static int a3000_hwclk(int, struct rtc_time *);
++static int a2000_hwclk(int, struct rtc_time *);
++static int amiga_set_clock_mmss(unsigned long);
++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,
+@@ -108,9 +106,9 @@ static void amiga_heartbeat(int on);
+ #endif
+
+ static struct console amiga_console_driver = {
+- .name = "debug",
+- .flags = CON_PRINTBUFFER,
+- .index = -1,
++ .name = "debug",
++ .flags = CON_PRINTBUFFER,
++ .index = -1,
+ };
+
+
+@@ -119,24 +117,24 @@ static struct console amiga_console_driv
+ */
+
+ static struct {
+- struct resource _ciab, _ciaa, _custom, _kickstart;
++ struct resource _ciab, _ciaa, _custom, _kickstart;
+ } mb_resources = {
+- ._ciab = {
+- .name = "CIA B", .start = 0x00bfd000, .end = 0x00bfdfff
+- },
+- ._ciaa = {
+- .name = "CIA A", .start = 0x00bfe000, .end = 0x00bfefff
+- },
+- ._custom = {
+- .name = "Custom I/O", .start = 0x00dff000, .end = 0x00dfffff
+- },
+- ._kickstart = {
+- .name = "Kickstart ROM", .start = 0x00f80000, .end = 0x00ffffff
+- }
++ ._ciab = {
++ .name = "CIA B", .start = 0x00bfd000, .end = 0x00bfdfff
++ },
++ ._ciaa = {
++ .name = "CIA A", .start = 0x00bfe000, .end = 0x00bfefff
++ },
++ ._custom = {
++ .name = "Custom I/O", .start = 0x00dff000, .end = 0x00dfffff
++ },
++ ._kickstart = {
++ .name = "Kickstart ROM", .start = 0x00f80000, .end = 0x00ffffff
++ }
+ };
+
+ static struct resource rtc_resource = {
+- .start = 0x00dc0000, .end = 0x00dcffff
++ .start = 0x00dc0000, .end = 0x00dcffff
+ };
+
+ static struct resource ram_resource[NUM_MEMINFO];
+@@ -148,57 +146,57 @@ static struct resource ram_resource[NUM_
+
+ int amiga_parse_bootinfo(const struct bi_record *record)
+ {
+- int unknown = 0;
+- const unsigned long *data = record->data;
++ int unknown = 0;
++ const unsigned long *data = record->data;
+
+- switch (record->tag) {
++ switch (record->tag) {
+ case BI_AMIGA_MODEL:
+- amiga_model = *data;
+- break;
++ amiga_model = *data;
++ break;
+
+ case BI_AMIGA_ECLOCK:
+- amiga_eclock = *data;
+- break;
++ amiga_eclock = *data;
++ break;
+
+ case BI_AMIGA_CHIPSET:
+- amiga_chipset = *data;
+- break;
++ amiga_chipset = *data;
++ break;
+
+ case BI_AMIGA_CHIP_SIZE:
+- amiga_chip_size = *(const int *)data;
+- break;
++ amiga_chip_size = *(const int *)data;
++ break;
+
+ case BI_AMIGA_VBLANK:
+- amiga_vblank = *(const unsigned char *)data;
+- break;
++ amiga_vblank = *(const unsigned char *)data;
++ break;
+
+ case BI_AMIGA_PSFREQ:
+- amiga_psfreq = *(const unsigned char *)data;
+- break;
++ amiga_psfreq = *(const unsigned char *)data;
++ break;
+
+ case BI_AMIGA_AUTOCON:
+ #ifdef CONFIG_ZORRO
+- if (zorro_num_autocon < ZORRO_NUM_AUTO) {
+- const struct ConfigDev *cd = (struct ConfigDev *)data;
+- struct zorro_dev *dev = &zorro_autocon[zorro_num_autocon++];
+- dev->rom = cd->cd_Rom;
+- dev->slotaddr = cd->cd_SlotAddr;
+- dev->slotsize = cd->cd_SlotSize;
+- dev->resource.start = (unsigned long)cd->cd_BoardAddr;
+- dev->resource.end = dev->resource.start+cd->cd_BoardSize-1;
+- } else
+- printk("amiga_parse_bootinfo: too many AutoConfig devices\n");
++ if (zorro_num_autocon < ZORRO_NUM_AUTO) {
++ const struct ConfigDev *cd = (struct ConfigDev *)data;
++ struct zorro_dev *dev = &zorro_autocon[zorro_num_autocon++];
++ dev->rom = cd->cd_Rom;
++ dev->slotaddr = cd->cd_SlotAddr;
++ dev->slotsize = cd->cd_SlotSize;
++ dev->resource.start = (unsigned long)cd->cd_BoardAddr;
++ dev->resource.end = dev->resource.start + cd->cd_BoardSize - 1;
++ } else
++ printk("amiga_parse_bootinfo: too many AutoConfig devices\n");
+ #endif /* CONFIG_ZORRO */
+- break;
++ break;
+
+ case BI_AMIGA_SERPER:
+- /* serial port period: ignored here */
+- break;
++ /* serial port period: ignored here */
++ break;
+
+ default:
+- unknown = 1;
+- }
+- return(unknown);
++ unknown = 1;
++ }
++ return unknown;
+ }
+
+ /*
+@@ -207,159 +205,159 @@ int amiga_parse_bootinfo(const struct bi
+
+ static void __init amiga_identify(void)
+ {
+- /* Fill in some default values, if necessary */
+- if (amiga_eclock == 0)
+- amiga_eclock = 709379;
+-
+- memset(&amiga_hw_present, 0, sizeof(amiga_hw_present));
+-
+- printk("Amiga hardware found: ");
+- if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO) {
+- printk("[%s] ", amiga_models[amiga_model-AMI_500]);
+- strcat(amiga_model_name, amiga_models[amiga_model-AMI_500]);
+- }
+-
+- switch(amiga_model) {
+- case AMI_UNKNOWN:
+- goto Generic;
+-
+- case AMI_600:
+- case AMI_1200:
+- AMIGAHW_SET(A1200_IDE);
+- AMIGAHW_SET(PCMCIA);
+- case AMI_500:
+- case AMI_500PLUS:
+- case AMI_1000:
+- case AMI_2000:
+- case AMI_2500:
+- AMIGAHW_SET(A2000_CLK); /* Is this correct for all models? */
+- goto Generic;
+-
+- case AMI_3000:
+- case AMI_3000T:
+- AMIGAHW_SET(AMBER_FF);
+- AMIGAHW_SET(MAGIC_REKICK);
+- /* fall through */
+- case AMI_3000PLUS:
+- AMIGAHW_SET(A3000_SCSI);
+- AMIGAHW_SET(A3000_CLK);
+- AMIGAHW_SET(ZORRO3);
+- goto Generic;
+-
+- case AMI_4000T:
+- AMIGAHW_SET(A4000_SCSI);
+- /* fall through */
+- case AMI_4000:
+- AMIGAHW_SET(A4000_IDE);
+- AMIGAHW_SET(A3000_CLK);
+- AMIGAHW_SET(ZORRO3);
+- goto Generic;
+-
+- case AMI_CDTV:
+- case AMI_CD32:
+- AMIGAHW_SET(CD_ROM);
+- AMIGAHW_SET(A2000_CLK); /* Is this correct? */
+- goto Generic;
+-
+- Generic:
+- AMIGAHW_SET(AMI_VIDEO);
+- AMIGAHW_SET(AMI_BLITTER);
+- AMIGAHW_SET(AMI_AUDIO);
+- AMIGAHW_SET(AMI_FLOPPY);
+- AMIGAHW_SET(AMI_KEYBOARD);
+- AMIGAHW_SET(AMI_MOUSE);
+- AMIGAHW_SET(AMI_SERIAL);
+- AMIGAHW_SET(AMI_PARALLEL);
+- AMIGAHW_SET(CHIP_RAM);
+- AMIGAHW_SET(PAULA);
+-
+- switch(amiga_chipset) {
+- case CS_OCS:
+- case CS_ECS:
+- case CS_AGA:
+- switch (amiga_custom.deniseid & 0xf) {
+- case 0x0c:
+- AMIGAHW_SET(DENISE_HR);
+- break;
+- case 0x08:
+- AMIGAHW_SET(LISA);
+- break;
+- }
+- break;
+- default:
+- AMIGAHW_SET(DENISE);
+- break;
+- }
+- switch ((amiga_custom.vposr>>8) & 0x7f) {
+- case 0x00:
+- AMIGAHW_SET(AGNUS_PAL);
+- break;
+- case 0x10:
+- AMIGAHW_SET(AGNUS_NTSC);
+- break;
+- case 0x20:
+- case 0x21:
+- AMIGAHW_SET(AGNUS_HR_PAL);
+- break;
+- case 0x30:
+- case 0x31:
+- AMIGAHW_SET(AGNUS_HR_NTSC);
+- break;
+- case 0x22:
+- case 0x23:
+- AMIGAHW_SET(ALICE_PAL);
+- break;
+- case 0x32:
+- case 0x33:
+- AMIGAHW_SET(ALICE_NTSC);
+- break;
+- }
+- AMIGAHW_SET(ZORRO);
+- break;
+-
+- case AMI_DRACO:
+- panic("No support for Draco yet");
+-
+- default:
+- panic("Unknown Amiga Model");
+- }
++ /* Fill in some default values, if necessary */
++ if (amiga_eclock == 0)
++ amiga_eclock = 709379;
++
++ memset(&amiga_hw_present, 0, sizeof(amiga_hw_present));
++
++ printk("Amiga hardware found: ");
++ if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO) {
++ printk("[%s] ", amiga_models[amiga_model-AMI_500]);
++ strcat(amiga_model_name, amiga_models[amiga_model-AMI_500]);
++ }
++
++ switch (amiga_model) {
++ case AMI_UNKNOWN:
++ goto Generic;
++
++ case AMI_600:
++ case AMI_1200:
++ AMIGAHW_SET(A1200_IDE);
++ AMIGAHW_SET(PCMCIA);
++ case AMI_500:
++ case AMI_500PLUS:
++ case AMI_1000:
++ case AMI_2000:
++ case AMI_2500:
++ AMIGAHW_SET(A2000_CLK); /* Is this correct for all models? */
++ goto Generic;
++
++ case AMI_3000:
++ case AMI_3000T:
++ AMIGAHW_SET(AMBER_FF);
++ AMIGAHW_SET(MAGIC_REKICK);
++ /* fall through */
++ case AMI_3000PLUS:
++ AMIGAHW_SET(A3000_SCSI);
++ AMIGAHW_SET(A3000_CLK);
++ AMIGAHW_SET(ZORRO3);
++ goto Generic;
++
++ case AMI_4000T:
++ AMIGAHW_SET(A4000_SCSI);
++ /* fall through */
++ case AMI_4000:
++ AMIGAHW_SET(A4000_IDE);
++ AMIGAHW_SET(A3000_CLK);
++ AMIGAHW_SET(ZORRO3);
++ goto Generic;
++
++ case AMI_CDTV:
++ case AMI_CD32:
++ AMIGAHW_SET(CD_ROM);
++ AMIGAHW_SET(A2000_CLK); /* Is this correct? */
++ goto Generic;
++
++ Generic:
++ AMIGAHW_SET(AMI_VIDEO);
++ AMIGAHW_SET(AMI_BLITTER);
++ AMIGAHW_SET(AMI_AUDIO);
++ AMIGAHW_SET(AMI_FLOPPY);
++ AMIGAHW_SET(AMI_KEYBOARD);
++ AMIGAHW_SET(AMI_MOUSE);
++ AMIGAHW_SET(AMI_SERIAL);
++ AMIGAHW_SET(AMI_PARALLEL);
++ AMIGAHW_SET(CHIP_RAM);
++ AMIGAHW_SET(PAULA);
++
++ switch (amiga_chipset) {
++ case CS_OCS:
++ case CS_ECS:
++ case CS_AGA:
++ switch (amiga_custom.deniseid & 0xf) {
++ case 0x0c:
++ AMIGAHW_SET(DENISE_HR);
++ break;
++ case 0x08:
++ AMIGAHW_SET(LISA);
++ break;
++ }
++ break;
++ default:
++ AMIGAHW_SET(DENISE);
++ break;
++ }
++ switch ((amiga_custom.vposr>>8) & 0x7f) {
++ case 0x00:
++ AMIGAHW_SET(AGNUS_PAL);
++ break;
++ case 0x10:
++ AMIGAHW_SET(AGNUS_NTSC);
++ break;
++ case 0x20:
++ case 0x21:
++ AMIGAHW_SET(AGNUS_HR_PAL);
++ break;
++ case 0x30:
++ case 0x31:
++ AMIGAHW_SET(AGNUS_HR_NTSC);
++ break;
++ case 0x22:
++ case 0x23:
++ AMIGAHW_SET(ALICE_PAL);
++ break;
++ case 0x32:
++ case 0x33:
++ AMIGAHW_SET(ALICE_NTSC);
++ break;
++ }
++ AMIGAHW_SET(ZORRO);
++ break;
+
+-#define AMIGAHW_ANNOUNCE(name, str) \
+- if (AMIGAHW_PRESENT(name)) \
+- printk(str)
++ case AMI_DRACO:
++ panic("No support for Draco yet");
++
++ default:
++ panic("Unknown Amiga Model");
++ }
+
+- AMIGAHW_ANNOUNCE(AMI_VIDEO, "VIDEO ");
+- AMIGAHW_ANNOUNCE(AMI_BLITTER, "BLITTER ");
+- AMIGAHW_ANNOUNCE(AMBER_FF, "AMBER_FF ");
+- AMIGAHW_ANNOUNCE(AMI_AUDIO, "AUDIO ");
+- AMIGAHW_ANNOUNCE(AMI_FLOPPY, "FLOPPY ");
+- AMIGAHW_ANNOUNCE(A3000_SCSI, "A3000_SCSI ");
+- AMIGAHW_ANNOUNCE(A4000_SCSI, "A4000_SCSI ");
+- AMIGAHW_ANNOUNCE(A1200_IDE, "A1200_IDE ");
+- AMIGAHW_ANNOUNCE(A4000_IDE, "A4000_IDE ");
+- AMIGAHW_ANNOUNCE(CD_ROM, "CD_ROM ");
+- AMIGAHW_ANNOUNCE(AMI_KEYBOARD, "KEYBOARD ");
+- AMIGAHW_ANNOUNCE(AMI_MOUSE, "MOUSE ");
+- AMIGAHW_ANNOUNCE(AMI_SERIAL, "SERIAL ");
+- AMIGAHW_ANNOUNCE(AMI_PARALLEL, "PARALLEL ");
+- AMIGAHW_ANNOUNCE(A2000_CLK, "A2000_CLK ");
+- AMIGAHW_ANNOUNCE(A3000_CLK, "A3000_CLK ");
+- AMIGAHW_ANNOUNCE(CHIP_RAM, "CHIP_RAM ");
+- AMIGAHW_ANNOUNCE(PAULA, "PAULA ");
+- AMIGAHW_ANNOUNCE(DENISE, "DENISE ");
+- AMIGAHW_ANNOUNCE(DENISE_HR, "DENISE_HR ");
+- AMIGAHW_ANNOUNCE(LISA, "LISA ");
+- AMIGAHW_ANNOUNCE(AGNUS_PAL, "AGNUS_PAL ");
+- AMIGAHW_ANNOUNCE(AGNUS_NTSC, "AGNUS_NTSC ");
+- AMIGAHW_ANNOUNCE(AGNUS_HR_PAL, "AGNUS_HR_PAL ");
+- AMIGAHW_ANNOUNCE(AGNUS_HR_NTSC, "AGNUS_HR_NTSC ");
+- AMIGAHW_ANNOUNCE(ALICE_PAL, "ALICE_PAL ");
+- AMIGAHW_ANNOUNCE(ALICE_NTSC, "ALICE_NTSC ");
+- AMIGAHW_ANNOUNCE(MAGIC_REKICK, "MAGIC_REKICK ");
+- AMIGAHW_ANNOUNCE(PCMCIA, "PCMCIA ");
+- if (AMIGAHW_PRESENT(ZORRO))
+- printk("ZORRO%s ", AMIGAHW_PRESENT(ZORRO3) ? "3" : "");
+- printk("\n");
++#define AMIGAHW_ANNOUNCE(name, str) \
++ if (AMIGAHW_PRESENT(name)) \
++ printk(str)
++
++ AMIGAHW_ANNOUNCE(AMI_VIDEO, "VIDEO ");
++ AMIGAHW_ANNOUNCE(AMI_BLITTER, "BLITTER ");
++ AMIGAHW_ANNOUNCE(AMBER_FF, "AMBER_FF ");
++ AMIGAHW_ANNOUNCE(AMI_AUDIO, "AUDIO ");
++ AMIGAHW_ANNOUNCE(AMI_FLOPPY, "FLOPPY ");
++ AMIGAHW_ANNOUNCE(A3000_SCSI, "A3000_SCSI ");
++ AMIGAHW_ANNOUNCE(A4000_SCSI, "A4000_SCSI ");
++ AMIGAHW_ANNOUNCE(A1200_IDE, "A1200_IDE ");
++ AMIGAHW_ANNOUNCE(A4000_IDE, "A4000_IDE ");
++ AMIGAHW_ANNOUNCE(CD_ROM, "CD_ROM ");
++ AMIGAHW_ANNOUNCE(AMI_KEYBOARD, "KEYBOARD ");
++ AMIGAHW_ANNOUNCE(AMI_MOUSE, "MOUSE ");
++ AMIGAHW_ANNOUNCE(AMI_SERIAL, "SERIAL ");
++ AMIGAHW_ANNOUNCE(AMI_PARALLEL, "PARALLEL ");
++ AMIGAHW_ANNOUNCE(A2000_CLK, "A2000_CLK ");
++ AMIGAHW_ANNOUNCE(A3000_CLK, "A3000_CLK ");
++ AMIGAHW_ANNOUNCE(CHIP_RAM, "CHIP_RAM ");
++ AMIGAHW_ANNOUNCE(PAULA, "PAULA ");
++ AMIGAHW_ANNOUNCE(DENISE, "DENISE ");
++ AMIGAHW_ANNOUNCE(DENISE_HR, "DENISE_HR ");
++ AMIGAHW_ANNOUNCE(LISA, "LISA ");
++ AMIGAHW_ANNOUNCE(AGNUS_PAL, "AGNUS_PAL ");
++ AMIGAHW_ANNOUNCE(AGNUS_NTSC, "AGNUS_NTSC ");
++ AMIGAHW_ANNOUNCE(AGNUS_HR_PAL, "AGNUS_HR_PAL ");
++ AMIGAHW_ANNOUNCE(AGNUS_HR_NTSC, "AGNUS_HR_NTSC ");
++ AMIGAHW_ANNOUNCE(ALICE_PAL, "ALICE_PAL ");
++ AMIGAHW_ANNOUNCE(ALICE_NTSC, "ALICE_NTSC ");
++ AMIGAHW_ANNOUNCE(MAGIC_REKICK, "MAGIC_REKICK ");
++ AMIGAHW_ANNOUNCE(PCMCIA, "PCMCIA ");
++ if (AMIGAHW_PRESENT(ZORRO))
++ printk("ZORRO%s ", AMIGAHW_PRESENT(ZORRO3) ? "3" : "");
++ printk("\n");
+
+ #undef AMIGAHW_ANNOUNCE
+ }
+@@ -370,119 +368,117 @@ static void __init amiga_identify(void)
+
+ void __init config_amiga(void)
+ {
+- int i;
++ int i;
++
++ amiga_debug_init();
++ amiga_identify();
+
+- amiga_debug_init();
+- amiga_identify();
++ /* Yuk, we don't have PCI memory */
++ iomem_resource.name = "Memory";
++ for (i = 0; i < 4; i++)
++ request_resource(&iomem_resource, &((struct resource *)&mb_resources)[i]);
++
++ mach_sched_init = amiga_sched_init;
++ mach_init_IRQ = amiga_init_IRQ;
++ mach_get_model = amiga_get_model;
++ mach_get_hardware_list = amiga_get_hardware_list;
++ mach_gettimeoffset = amiga_gettimeoffset;
++ if (AMIGAHW_PRESENT(A3000_CLK)) {
++ mach_hwclk = a3000_hwclk;
++ rtc_resource.name = "A3000 RTC";
++ request_resource(&iomem_resource, &rtc_resource);
++ } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ {
++ mach_hwclk = a2000_hwclk;
++ rtc_resource.name = "A2000 RTC";
++ request_resource(&iomem_resource, &rtc_resource);
++ }
+
+- /* Yuk, we don't have PCI memory */
+- iomem_resource.name = "Memory";
+- for (i = 0; i < 4; i++)
+- request_resource(&iomem_resource, &((struct resource *)&mb_resources)[i]);
+-
+- mach_sched_init = amiga_sched_init;
+- mach_init_IRQ = amiga_init_IRQ;
+- mach_get_model = amiga_get_model;
+- mach_get_hardware_list = amiga_get_hardware_list;
+- mach_gettimeoffset = amiga_gettimeoffset;
+- if (AMIGAHW_PRESENT(A3000_CLK)){
+- mach_hwclk = a3000_hwclk;
+- rtc_resource.name = "A3000 RTC";
+- request_resource(&iomem_resource, &rtc_resource);
+- }
+- else{ /* if (AMIGAHW_PRESENT(A2000_CLK)) */
+- mach_hwclk = a2000_hwclk;
+- rtc_resource.name = "A2000 RTC";
+- request_resource(&iomem_resource, &rtc_resource);
+- }
+-
+- mach_max_dma_address = 0xffffffff; /*
+- * default MAX_DMA=0xffffffff
+- * on all machines. If we don't
+- * do so, the SCSI code will not
+- * be able to allocate any mem
+- * for transfers, unless we are
+- * dealing with a Z2 mem only
+- * system. /Jes
+- */
+-
+- mach_set_clock_mmss = amiga_set_clock_mmss;
+- mach_get_ss = amiga_get_ss;
+- mach_reset = amiga_reset;
++ /*
++ * default MAX_DMA=0xffffffff on all machines. If we don't do so, the SCSI
++ * code will not be able to allocate any mem for transfers, unless we are
++ * dealing with a Z2 mem only system. /Jes
++ */
++ mach_max_dma_address = 0xffffffff;
++
++ mach_set_clock_mmss = amiga_set_clock_mmss;
++ mach_get_ss = amiga_get_ss;
++ mach_reset = amiga_reset;
+ #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
+- mach_beep = amiga_mksound;
++ mach_beep = amiga_mksound;
+ #endif
+
+ #ifdef CONFIG_HEARTBEAT
+- mach_heartbeat = amiga_heartbeat;
++ mach_heartbeat = amiga_heartbeat;
+ #endif
+
+- /* Fill in the clock values (based on the 700 kHz E-Clock) */
+- amiga_masterclock = 40*amiga_eclock; /* 28 MHz */
+- amiga_colorclock = 5*amiga_eclock; /* 3.5 MHz */
+-
+- /* clear all DMA bits */
+- amiga_custom.dmacon = DMAF_ALL;
+- /* ensure that the DMA master bit is set */
+- amiga_custom.dmacon = DMAF_SETCLR | DMAF_MASTER;
+-
+- /* don't use Z2 RAM as system memory on Z3 capable machines */
+- if (AMIGAHW_PRESENT(ZORRO3)) {
+- int i, j;
+- u32 disabled_z2mem = 0;
+- for (i = 0; i < m68k_num_memory; i++)
+- if (m68k_memory[i].addr < 16*1024*1024) {
+- if (i == 0) {
+- /* don't cut off the branch we're sitting on */
+- printk("Warning: kernel runs in Zorro II memory\n");
+- continue;
+- }
+- disabled_z2mem += m68k_memory[i].size;
+- m68k_num_memory--;
+- for (j = i; j < m68k_num_memory; j++)
+- m68k_memory[j] = m68k_memory[j+1];
+- i--;
+- }
+- if (disabled_z2mem)
+- printk("%dK of Zorro II memory will not be used as system memory\n",
+- disabled_z2mem>>10);
+- }
+-
+- /* request all RAM */
+- for (i = 0; i < m68k_num_memory; i++) {
+- ram_resource[i].name =
+- (m68k_memory[i].addr >= 0x01000000) ? "32-bit Fast RAM" :
+- (m68k_memory[i].addr < 0x00c00000) ? "16-bit Fast RAM" :
+- "16-bit Slow RAM";
+- ram_resource[i].start = m68k_memory[i].addr;
+- ram_resource[i].end = m68k_memory[i].addr+m68k_memory[i].size-1;
+- request_resource(&iomem_resource, &ram_resource[i]);
+- }
+-
+- /* 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();
+-
+- /*
+- * if it is an A3000, set the magic bit that forces
+- * a hard rekick
+- */
+- if (AMIGAHW_PRESENT(MAGIC_REKICK))
+- *(unsigned char *)ZTWO_VADDR(0xde0002) |= 0x80;
++ /* Fill in the clock values (based on the 700 kHz E-Clock) */
++ amiga_masterclock = 40*amiga_eclock; /* 28 MHz */
++ amiga_colorclock = 5*amiga_eclock; /* 3.5 MHz */
++
++ /* clear all DMA bits */
++ amiga_custom.dmacon = DMAF_ALL;
++ /* ensure that the DMA master bit is set */
++ amiga_custom.dmacon = DMAF_SETCLR | DMAF_MASTER;
++
++ /* don't use Z2 RAM as system memory on Z3 capable machines */
++ if (AMIGAHW_PRESENT(ZORRO3)) {
++ int i, j;
++ u32 disabled_z2mem = 0;
++
++ for (i = 0; i < m68k_num_memory; i++) {
++ if (m68k_memory[i].addr < 16*1024*1024) {
++ if (i == 0) {
++ /* don't cut off the branch we're sitting on */
++ printk("Warning: kernel runs in Zorro II memory\n");
++ continue;
++ }
++ disabled_z2mem += m68k_memory[i].size;
++ m68k_num_memory--;
++ for (j = i; j < m68k_num_memory; j++)
++ m68k_memory[j] = m68k_memory[j+1];
++ i--;
++ }
++ }
++ if (disabled_z2mem)
++ printk("%dK of Zorro II memory will not be used as system memory\n",
++ disabled_z2mem>>10);
++ }
++
++ /* request all RAM */
++ for (i = 0; i < m68k_num_memory; i++) {
++ ram_resource[i].name =
++ (m68k_memory[i].addr >= 0x01000000) ? "32-bit Fast RAM" :
++ (m68k_memory[i].addr < 0x00c00000) ? "16-bit Fast RAM" :
++ "16-bit Slow RAM";
++ ram_resource[i].start = m68k_memory[i].addr;
++ ram_resource[i].end = m68k_memory[i].addr+m68k_memory[i].size-1;
++ request_resource(&iomem_resource, &ram_resource[i]);
++ }
++
++ /* 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();
++
++ /*
++ * if it is an A3000, set the magic bit that forces
++ * a hard rekick
++ */
++ if (AMIGAHW_PRESENT(MAGIC_REKICK))
++ *(unsigned char *)ZTWO_VADDR(0xde0002) |= 0x80;
+ }
+
+ static unsigned short jiffy_ticks;
+@@ -490,12 +486,12 @@ static unsigned short jiffy_ticks;
+ static void __init amiga_sched_init(irq_handler_t timer_routine)
+ {
+ static struct resource sched_res = {
+- .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff,
++ .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff,
+ };
+ jiffy_ticks = (amiga_eclock+HZ/2)/HZ;
+
+ if (request_resource(&mb_resources._ciab, &sched_res))
+- printk("Cannot allocate ciab.ta{lo,hi}\n");
++ printk("Cannot allocate ciab.ta{lo,hi}\n");
+ ciab.cra &= 0xC0; /* turn off timer A, continuous mode, from Eclk */
+ ciab.talo = jiffy_ticks % 256;
+ ciab.tahi = jiffy_ticks / 256;
+@@ -513,7 +509,7 @@ static void __init amiga_sched_init(irq_
+ #define TICK_SIZE 10000
+
+ /* This is always executed with interrupts disabled. */
+-static unsigned long amiga_gettimeoffset (void)
++static unsigned long amiga_gettimeoffset(void)
+ {
+ unsigned short hi, lo, hi2;
+ unsigned long ticks, offset = 0;
+@@ -585,15 +581,15 @@ static int a2000_hwclk(int op, struct rt
+
+ tod_2000.cntrl1 = TOD2000_CNTRL1_HOLD;
+
+- while ((tod_2000.cntrl1 & TOD2000_CNTRL1_BUSY) && cnt--)
+- {
+- tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD;
+- udelay(70);
+- tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD;
++ while ((tod_2000.cntrl1 & TOD2000_CNTRL1_BUSY) && cnt--) {
++ tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD;
++ udelay(70);
++ tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD;
+ }
+
+ if (!cnt)
+- printk(KERN_INFO "hwclk: timed out waiting for RTC (0x%x)\n", tod_2000.cntrl1);
++ printk(KERN_INFO "hwclk: timed out waiting for RTC (0x%x)\n",
++ tod_2000.cntrl1);
+
+ if (!op) { /* read */
+ t->tm_sec = tod_2000.second1 * 10 + tod_2000.second2;
+@@ -606,7 +602,7 @@ static int a2000_hwclk(int op, struct rt
+ if (t->tm_year <= 69)
+ t->tm_year += 100;
+
+- if (!(tod_2000.cntrl3 & TOD2000_CNTRL3_24HMODE)){
++ if (!(tod_2000.cntrl3 & TOD2000_CNTRL3_24HMODE)) {
+ if (!(tod_2000.hour1 & TOD2000_HOUR1_PM) && t->tm_hour == 12)
+ t->tm_hour = 0;
+ else if ((tod_2000.hour1 & TOD2000_HOUR1_PM) && t->tm_hour != 12)
+@@ -642,7 +638,7 @@ static int a2000_hwclk(int op, struct rt
+ return 0;
+ }
+
+-static int amiga_set_clock_mmss (unsigned long nowtime)
++static int amiga_set_clock_mmss(unsigned long nowtime)
+ {
+ short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60;
+
+@@ -660,8 +656,7 @@ static int amiga_set_clock_mmss (unsigne
+
+ tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD;
+
+- while ((tod_2000.cntrl1 & TOD2000_CNTRL1_BUSY) && cnt--)
+- {
++ while ((tod_2000.cntrl1 & TOD2000_CNTRL1_BUSY) && cnt--) {
+ tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD;
+ udelay(70);
+ tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD;
+@@ -681,7 +676,7 @@ static int amiga_set_clock_mmss (unsigne
+ return 0;
+ }
+
+-static unsigned int amiga_get_ss( void )
++static unsigned int amiga_get_ss(void)
+ {
+ unsigned int s;
+
+@@ -695,71 +690,72 @@ static unsigned int amiga_get_ss( void )
+ return s;
+ }
+
+-static NORET_TYPE void amiga_reset( void )
++static NORET_TYPE void amiga_reset(void)
+ ATTRIB_NORET;
+
+-static void amiga_reset (void)
++static void amiga_reset(void)
+ {
+- unsigned long jmp_addr040 = virt_to_phys(&&jmp_addr_label040);
+- unsigned long jmp_addr = virt_to_phys(&&jmp_addr_label);
+-
+- local_irq_disable();
+- if (CPU_IS_040_OR_060)
+- /* Setup transparent translation registers for mapping
+- * of 16 MB kernel segment before disabling translation
+- */
+- __asm__ __volatile__
+- ("movel %0,%/d0\n\t"
+- "andl #0xff000000,%/d0\n\t"
+- "orw #0xe020,%/d0\n\t" /* map 16 MB, enable, cacheable */
+- ".chip 68040\n\t"
+- "movec %%d0,%%itt0\n\t"
+- "movec %%d0,%%dtt0\n\t"
+- ".chip 68k\n\t"
+- "jmp %0@\n\t"
+- : /* no outputs */
+- : "a" (jmp_addr040));
+- else
+- /* for 680[23]0, just disable translation and jump to the physical
+- * address of the label
+- */
+- __asm__ __volatile__
+- ("pmove %/tc,%@\n\t"
+- "bclr #7,%@\n\t"
+- "pmove %@,%/tc\n\t"
+- "jmp %0@\n\t"
+- : /* no outputs */
+- : "a" (jmp_addr));
+- jmp_addr_label040:
+- /* disable translation on '040 now */
+- __asm__ __volatile__
+- ("moveq #0,%/d0\n\t"
+- ".chip 68040\n\t"
+- "movec %%d0,%%tc\n\t" /* disable MMU */
+- ".chip 68k\n\t"
+- : /* no outputs */
+- : /* no inputs */
+- : "d0");
+-
+- jmp_addr_label:
+- /* pickup reset address from AmigaOS ROM, reset devices and jump
+- * to reset address
+- */
+- __asm__ __volatile__
+- ("movew #0x2700,%/sr\n\t"
+- "leal 0x01000000,%/a0\n\t"
+- "subl %/a0@(-0x14),%/a0\n\t"
+- "movel %/a0@(4),%/a0\n\t"
+- "subql #2,%/a0\n\t"
+- "bra 1f\n\t"
+- /* align on a longword boundary */
+- __ALIGN_STR "\n"
+- "1:\n\t"
+- "reset\n\t"
+- "jmp %/a0@" : /* Just that gcc scans it for % escapes */ );
++ unsigned long jmp_addr040 = virt_to_phys(&&jmp_addr_label040);
++ unsigned long jmp_addr = virt_to_phys(&&jmp_addr_label);
+
+- for (;;);
++ local_irq_disable();
++ if (CPU_IS_040_OR_060)
++ /* Setup transparent translation registers for mapping
++ * of 16 MB kernel segment before disabling translation
++ */
++ asm volatile ("\n"
++ " move.l %0,%%d0\n"
++ " and.l #0xff000000,%%d0\n"
++ " or.w #0xe020,%%d0\n" /* map 16 MB, enable, cacheable */
++ " .chip 68040\n"
++ " movec %%d0,%%itt0\n"
++ " movec %%d0,%%dtt0\n"
++ " .chip 68k\n"
++ " jmp %0@\n"
++ : /* no outputs */
++ : "a" (jmp_addr040)
++ : "d0");
++ else
++ /* for 680[23]0, just disable translation and jump to the physical
++ * address of the label
++ */
++ asm volatile ("\n"
++ " pmove %%tc,%@\n"
++ " bclr #7,%@\n"
++ " pmove %@,%%tc\n"
++ " jmp %0@\n"
++ : /* no outputs */
++ : "a" (jmp_addr));
++jmp_addr_label040:
++ /* disable translation on '040 now */
++ asm volatile ("\n"
++ " moveq #0,%%d0\n"
++ " .chip 68040\n"
++ " movec %%d0,%%tc\n" /* disable MMU */
++ " .chip 68k\n"
++ : /* no outputs */
++ : /* no inputs */
++ : "d0");
++
++ jmp_addr_label:
++ /* pickup reset address from AmigaOS ROM, reset devices and jump
++ * to reset address
++ */
++ asm volatile ("\n"
++ " move.w #0x2700,%sr\n"
++ " lea 0x01000000,%a0\n"
++ " sub.l %a0@(-0x14),%a0\n"
++ " move.l %a0@(4),%a0\n"
++ " subq.l #2,%a0\n"
++ " jra 1f\n"
++ /* align on a longword boundary */
++ " " __ALIGN_STR "\n"
++ "1:\n"
++ " reset\n"
++ " jmp %a0@");
+
++ for (;;)
++ ;
+ }
+
+
+@@ -773,11 +769,11 @@ static void amiga_reset (void)
+ #define SAVEKMSG_MAGIC2 0x4B4D5347 /* 'KMSG' */
+
+ struct savekmsg {
+- unsigned long magic1; /* SAVEKMSG_MAGIC1 */
+- unsigned long magic2; /* SAVEKMSG_MAGIC2 */
+- unsigned long magicptr; /* address of magic1 */
+- unsigned long size;
+- char data[0];
++ unsigned long magic1; /* SAVEKMSG_MAGIC1 */
++ unsigned long magic2; /* SAVEKMSG_MAGIC2 */
++ unsigned long magicptr; /* address of magic1 */
++ unsigned long size;
++ char data[0];
+ };
+
+ static struct savekmsg *savekmsg;
+@@ -785,100 +781,100 @@ static struct savekmsg *savekmsg;
+ static void amiga_mem_console_write(struct console *co, const char *s,
+ unsigned int count)
+ {
+- if (savekmsg->size+count <= SAVEKMSG_MAXMEM-sizeof(struct savekmsg)) {
+- memcpy(savekmsg->data+savekmsg->size, s, count);
+- savekmsg->size += count;
+- }
++ if (savekmsg->size + count <= SAVEKMSG_MAXMEM-sizeof(struct savekmsg)) {
++ memcpy(savekmsg->data + savekmsg->size, s, count);
++ savekmsg->size += count;
++ }
+ }
+
+ static void amiga_savekmsg_init(void)
+ {
+- static struct resource debug_res = { .name = "Debug" };
++ static struct resource debug_res = { .name = "Debug" };
+
+- 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;
++ 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;
+ }
+
+ static void amiga_serial_putc(char c)
+ {
+- amiga_custom.serdat = (unsigned char)c | 0x100;
+- while (!(amiga_custom.serdatr & 0x2000))
+- ;
++ amiga_custom.serdat = (unsigned char)c | 0x100;
++ while (!(amiga_custom.serdatr & 0x2000))
++ ;
+ }
+
+ void amiga_serial_console_write(struct console *co, const char *s,
+- unsigned int count)
++ unsigned int count)
+ {
+- while (count--) {
+- if (*s == '\n')
+- amiga_serial_putc('\r');
+- amiga_serial_putc(*s++);
+- }
++ while (count--) {
++ if (*s == '\n')
++ amiga_serial_putc('\r');
++ amiga_serial_putc(*s++);
++ }
+ }
+
+ #ifdef CONFIG_SERIAL_CONSOLE
+ void amiga_serial_puts(const char *s)
+ {
+- amiga_serial_console_write(NULL, s, strlen(s));
++ amiga_serial_console_write(NULL, s, strlen(s));
+ }
+
+ int amiga_serial_console_wait_key(struct console *co)
+ {
+- int ch;
++ int ch;
+
+- while (!(amiga_custom.intreqr & IF_RBF))
+- barrier();
+- ch = amiga_custom.serdatr & 0xff;
+- /* clear the interrupt, so that another character can be read */
+- amiga_custom.intreq = IF_RBF;
+- return ch;
++ while (!(amiga_custom.intreqr & IF_RBF))
++ barrier();
++ ch = amiga_custom.serdatr & 0xff;
++ /* clear the interrupt, so that another character can be read */
++ amiga_custom.intreq = IF_RBF;
++ return ch;
+ }
+
+ void amiga_serial_gets(struct console *co, char *s, int len)
+ {
+- int ch, cnt = 0;
++ int ch, cnt = 0;
++
++ while (1) {
++ ch = amiga_serial_console_wait_key(co);
+
+- while (1) {
+- ch = amiga_serial_console_wait_key(co);
++ /* Check for backspace. */
++ if (ch == 8 || ch == 127) {
++ if (cnt == 0) {
++ amiga_serial_putc('\007');
++ continue;
++ }
++ cnt--;
++ amiga_serial_puts("\010 \010");
++ continue;
++ }
++
++ /* Check for enter. */
++ if (ch == 10 || ch == 13)
++ break;
++
++ /* See if line is too long. */
++ if (cnt >= len + 1) {
++ amiga_serial_putc(7);
++ cnt--;
++ continue;
++ }
+
+- /* Check for backspace. */
+- if (ch == 8 || ch == 127) {
+- if (cnt == 0) {
+- amiga_serial_putc('\007');
+- continue;
+- }
+- cnt--;
+- amiga_serial_puts("\010 \010");
+- continue;
+- }
+-
+- /* Check for enter. */
+- if (ch == 10 || ch == 13)
+- break;
+-
+- /* See if line is too long. */
+- if (cnt >= len + 1) {
+- amiga_serial_putc(7);
+- cnt--;
+- continue;
+- }
+-
+- /* Store and echo character. */
+- s[cnt++] = ch;
+- amiga_serial_putc(ch);
+- }
+- /* Print enter. */
+- amiga_serial_puts("\r\n");
+- s[cnt] = 0;
++ /* Store and echo character. */
++ s[cnt++] = ch;
++ amiga_serial_putc(ch);
++ }
++ /* Print enter. */
++ amiga_serial_puts("\r\n");
++ s[cnt] = 0;
+ }
+ #endif
+
+ static void __init amiga_debug_init(void)
+ {
+- if (!strcmp( m68k_debug_device, "ser" )) {
++ if (!strcmp(m68k_debug_device, "ser" )) {
+ /* no initialization required (?) */
+ amiga_console_driver.write = amiga_serial_console_write;
+ register_console(&amiga_console_driver);
+@@ -888,10 +884,10 @@ static void __init amiga_debug_init(void
+ #ifdef CONFIG_HEARTBEAT
+ static void amiga_heartbeat(int on)
+ {
+- if (on)
+- ciaa.pra &= ~2;
+- else
+- ciaa.pra |= 2;
++ if (on)
++ ciaa.pra &= ~2;
++ else
++ ciaa.pra |= 2;
+ }
+ #endif
+
+@@ -901,81 +897,81 @@ static void amiga_heartbeat(int on)
+
+ static void amiga_get_model(char *model)
+ {
+- strcpy(model, amiga_model_name);
++ strcpy(model, amiga_model_name);
+ }
+
+
+ static int amiga_get_hardware_list(char *buffer)
+ {
+- int len = 0;
++ int len = 0;
+
+- if (AMIGAHW_PRESENT(CHIP_RAM))
+- len += sprintf(buffer+len, "Chip RAM:\t%ldK\n", amiga_chip_size>>10);
+- len += sprintf(buffer+len, "PS Freq:\t%dHz\nEClock Freq:\t%ldHz\n",
+- amiga_psfreq, amiga_eclock);
+- if (AMIGAHW_PRESENT(AMI_VIDEO)) {
+- char *type;
+- switch(amiga_chipset) {
+- case CS_OCS:
+- type = "OCS";
+- break;
+- case CS_ECS:
+- type = "ECS";
+- break;
+- case CS_AGA:
+- type = "AGA";
+- break;
+- default:
+- type = "Old or Unknown";
+- break;
++ if (AMIGAHW_PRESENT(CHIP_RAM))
++ len += sprintf(buffer+len, "Chip RAM:\t%ldK\n", amiga_chip_size>>10);
++ len += sprintf(buffer+len, "PS Freq:\t%dHz\nEClock Freq:\t%ldHz\n",
++ amiga_psfreq, amiga_eclock);
++ if (AMIGAHW_PRESENT(AMI_VIDEO)) {
++ char *type;
++ switch (amiga_chipset) {
++ case CS_OCS:
++ type = "OCS";
++ break;
++ case CS_ECS:
++ type = "ECS";
++ break;
++ case CS_AGA:
++ type = "AGA";
++ break;
++ default:
++ type = "Old or Unknown";
++ break;
++ }
++ len += sprintf(buffer+len, "Graphics:\t%s\n", type);
+ }
+- len += sprintf(buffer+len, "Graphics:\t%s\n", type);
+- }
+
+ #define AMIGAHW_ANNOUNCE(name, str) \
+- if (AMIGAHW_PRESENT(name)) \
+- len += sprintf (buffer+len, "\t%s\n", str)
++ if (AMIGAHW_PRESENT(name)) \
++ len += sprintf (buffer+len, "\t%s\n", str)
+
+- len += sprintf (buffer + len, "Detected hardware:\n");
++ len += sprintf (buffer + len, "Detected hardware:\n");
+
+- AMIGAHW_ANNOUNCE(AMI_VIDEO, "Amiga Video");
+- AMIGAHW_ANNOUNCE(AMI_BLITTER, "Blitter");
+- AMIGAHW_ANNOUNCE(AMBER_FF, "Amber Flicker Fixer");
+- AMIGAHW_ANNOUNCE(AMI_AUDIO, "Amiga Audio");
+- AMIGAHW_ANNOUNCE(AMI_FLOPPY, "Floppy Controller");
+- AMIGAHW_ANNOUNCE(A3000_SCSI, "SCSI Controller WD33C93 (A3000 style)");
+- AMIGAHW_ANNOUNCE(A4000_SCSI, "SCSI Controller NCR53C710 (A4000T style)");
+- AMIGAHW_ANNOUNCE(A1200_IDE, "IDE Interface (A1200 style)");
+- AMIGAHW_ANNOUNCE(A4000_IDE, "IDE Interface (A4000 style)");
+- AMIGAHW_ANNOUNCE(CD_ROM, "Internal CD ROM drive");
+- AMIGAHW_ANNOUNCE(AMI_KEYBOARD, "Keyboard");
+- AMIGAHW_ANNOUNCE(AMI_MOUSE, "Mouse Port");
+- AMIGAHW_ANNOUNCE(AMI_SERIAL, "Serial Port");
+- AMIGAHW_ANNOUNCE(AMI_PARALLEL, "Parallel Port");
+- AMIGAHW_ANNOUNCE(A2000_CLK, "Hardware Clock (A2000 style)");
+- AMIGAHW_ANNOUNCE(A3000_CLK, "Hardware Clock (A3000 style)");
+- AMIGAHW_ANNOUNCE(CHIP_RAM, "Chip RAM");
+- AMIGAHW_ANNOUNCE(PAULA, "Paula 8364");
+- AMIGAHW_ANNOUNCE(DENISE, "Denise 8362");
+- AMIGAHW_ANNOUNCE(DENISE_HR, "Denise 8373");
+- AMIGAHW_ANNOUNCE(LISA, "Lisa 8375");
+- AMIGAHW_ANNOUNCE(AGNUS_PAL, "Normal/Fat PAL Agnus 8367/8371");
+- AMIGAHW_ANNOUNCE(AGNUS_NTSC, "Normal/Fat NTSC Agnus 8361/8370");
+- AMIGAHW_ANNOUNCE(AGNUS_HR_PAL, "Fat Hires PAL Agnus 8372");
+- AMIGAHW_ANNOUNCE(AGNUS_HR_NTSC, "Fat Hires NTSC Agnus 8372");
+- AMIGAHW_ANNOUNCE(ALICE_PAL, "PAL Alice 8374");
+- AMIGAHW_ANNOUNCE(ALICE_NTSC, "NTSC Alice 8374");
+- AMIGAHW_ANNOUNCE(MAGIC_REKICK, "Magic Hard Rekick");
+- AMIGAHW_ANNOUNCE(PCMCIA, "PCMCIA Slot");
++ AMIGAHW_ANNOUNCE(AMI_VIDEO, "Amiga Video");
++ AMIGAHW_ANNOUNCE(AMI_BLITTER, "Blitter");
++ AMIGAHW_ANNOUNCE(AMBER_FF, "Amber Flicker Fixer");
++ AMIGAHW_ANNOUNCE(AMI_AUDIO, "Amiga Audio");
++ AMIGAHW_ANNOUNCE(AMI_FLOPPY, "Floppy Controller");
++ AMIGAHW_ANNOUNCE(A3000_SCSI, "SCSI Controller WD33C93 (A3000 style)");
++ AMIGAHW_ANNOUNCE(A4000_SCSI, "SCSI Controller NCR53C710 (A4000T style)");
++ AMIGAHW_ANNOUNCE(A1200_IDE, "IDE Interface (A1200 style)");
++ AMIGAHW_ANNOUNCE(A4000_IDE, "IDE Interface (A4000 style)");
++ AMIGAHW_ANNOUNCE(CD_ROM, "Internal CD ROM drive");
++ AMIGAHW_ANNOUNCE(AMI_KEYBOARD, "Keyboard");
++ AMIGAHW_ANNOUNCE(AMI_MOUSE, "Mouse Port");
++ AMIGAHW_ANNOUNCE(AMI_SERIAL, "Serial Port");
++ AMIGAHW_ANNOUNCE(AMI_PARALLEL, "Parallel Port");
++ AMIGAHW_ANNOUNCE(A2000_CLK, "Hardware Clock (A2000 style)");
++ AMIGAHW_ANNOUNCE(A3000_CLK, "Hardware Clock (A3000 style)");
++ AMIGAHW_ANNOUNCE(CHIP_RAM, "Chip RAM");
++ AMIGAHW_ANNOUNCE(PAULA, "Paula 8364");
++ AMIGAHW_ANNOUNCE(DENISE, "Denise 8362");
++ AMIGAHW_ANNOUNCE(DENISE_HR, "Denise 8373");
++ AMIGAHW_ANNOUNCE(LISA, "Lisa 8375");
++ AMIGAHW_ANNOUNCE(AGNUS_PAL, "Normal/Fat PAL Agnus 8367/8371");
++ AMIGAHW_ANNOUNCE(AGNUS_NTSC, "Normal/Fat NTSC Agnus 8361/8370");
++ AMIGAHW_ANNOUNCE(AGNUS_HR_PAL, "Fat Hires PAL Agnus 8372");
++ AMIGAHW_ANNOUNCE(AGNUS_HR_NTSC, "Fat Hires NTSC Agnus 8372");
++ AMIGAHW_ANNOUNCE(ALICE_PAL, "PAL Alice 8374");
++ AMIGAHW_ANNOUNCE(ALICE_NTSC, "NTSC Alice 8374");
++ AMIGAHW_ANNOUNCE(MAGIC_REKICK, "Magic Hard Rekick");
++ AMIGAHW_ANNOUNCE(PCMCIA, "PCMCIA Slot");
+ #ifdef CONFIG_ZORRO
+- if (AMIGAHW_PRESENT(ZORRO))
+- len += sprintf(buffer+len, "\tZorro II%s AutoConfig: %d Expansion "
+- "Device%s\n",
+- AMIGAHW_PRESENT(ZORRO3) ? "I" : "",
+- zorro_num_autocon, zorro_num_autocon == 1 ? "" : "s");
++ if (AMIGAHW_PRESENT(ZORRO))
++ len += sprintf(buffer+len, "\tZorro II%s AutoConfig: %d Expansion "
++ "Device%s\n",
++ AMIGAHW_PRESENT(ZORRO3) ? "I" : "",
++ zorro_num_autocon, zorro_num_autocon == 1 ? "" : "s");
+ #endif /* CONFIG_ZORRO */
+
+ #undef AMIGAHW_ANNOUNCE
+
+- return(len);
++ return len;
+ }
+--- linux-m68k-2.6.21.orig/arch/m68k/atari/config.c
++++ linux-m68k-2.6.21/arch/m68k/atari/config.c
+@@ -50,19 +50,19 @@ int atari_dont_touch_floppy_select;
+ int atari_rtc_year_offset;
+
+ /* local function prototypes */
+-static void atari_reset( void );
++static void atari_reset(void);
+ static void atari_get_model(char *model);
+ static int atari_get_hardware_list(char *buffer);
+
+ /* atari specific irq functions */
+ extern void atari_init_IRQ (void);
+-extern void atari_mksound( unsigned int count, unsigned int ticks );
++extern void atari_mksound(unsigned int count, unsigned int ticks);
+ #ifdef CONFIG_HEARTBEAT
+-static void atari_heartbeat( int on );
++static void atari_heartbeat(int on);
+ #endif
+
+ /* atari specific timer functions (in time.c) */
+-extern void atari_sched_init(irq_handler_t );
++extern void atari_sched_init(irq_handler_t);
+ extern unsigned long atari_gettimeoffset (void);
+ extern int atari_mste_hwclk (int, struct rtc_time *);
+ extern int atari_tt_hwclk (int, struct rtc_time *);
+@@ -73,48 +73,6 @@ extern int atari_tt_set_clock_mmss (unsi
+ extern void atari_debug_init(void);
+
+
+-/* I've moved hwreg_present() and hwreg_present_bywrite() out into
+- * mm/hwtest.c, to avoid having multiple copies of the same routine
+- * in the kernel [I wanted them in hp300 and they were already used
+- * in the nubus code. NB: I don't have an Atari so this might (just
+- * conceivably) break something.
+- * I've preserved the #if 0 version of hwreg_present_bywrite() here
+- * for posterity.
+- * -- Peter Maydell <pmaydell@chiark.greenend.org.uk>, 05/1998
+- */
+-
+-#if 0
+-static int __init
+-hwreg_present_bywrite(volatile void *regp, unsigned char val)
+-{
+- int ret;
+- long save_sp, save_vbr;
+- static long tmp_vectors[3] = { [2] = (long)&&after_test };
+-
+- __asm__ __volatile__
+- ( "movec %/vbr,%2\n\t" /* save vbr value */
+- "movec %4,%/vbr\n\t" /* set up temporary vectors */
+- "movel %/sp,%1\n\t" /* save sp */
+- "moveq #0,%0\n\t" /* assume not present */
+- "moveb %5,%3@\n\t" /* write the hardware reg */
+- "cmpb %3@,%5\n\t" /* compare it */
+- "seq %0" /* comes here only if reg */
+- /* is present */
+- : "=d&" (ret), "=r&" (save_sp), "=r&" (save_vbr)
+- : "a" (regp), "r" (tmp_vectors), "d" (val)
+- );
+- after_test:
+- __asm__ __volatile__
+- ( "movel %0,%/sp\n\t" /* restore sp */
+- "movec %1,%/vbr" /* restore vbr */
+- : : "r" (save_sp), "r" (save_vbr) : "sp"
+- );
+-
+- return( ret );
+-}
+-#endif
+-
+-
+ /* ++roman: This is a more elaborate test for an SCC chip, since the plain
+ * Medusa board generates DTACK at the SCC's standard addresses, but a SCC
+ * board in the Medusa is possible. Also, the addresses where the ST_ESCC
+@@ -123,26 +81,34 @@ hwreg_present_bywrite(volatile void *reg
+ * should be readable without trouble (from channel A!).
+ */
+
+-static int __init scc_test( volatile char *ctla )
++static int __init scc_test(volatile char *ctla)
+ {
+- if (!hwreg_present( ctla ))
+- return( 0 );
++ if (!hwreg_present(ctla))
++ return 0;
+ MFPDELAY();
+
+- *ctla = 2; MFPDELAY();
+- *ctla = 0x40; MFPDELAY();
++ *ctla = 2;
++ MFPDELAY();
++ *ctla = 0x40;
++ MFPDELAY();
+
+- *ctla = 2; MFPDELAY();
+- if (*ctla != 0x40) return( 0 );
++ *ctla = 2;
++ MFPDELAY();
++ if (*ctla != 0x40)
++ return 0;
+ MFPDELAY();
+
+- *ctla = 2; MFPDELAY();
+- *ctla = 0x60; MFPDELAY();
++ *ctla = 2;
++ MFPDELAY();
++ *ctla = 0x60;
++ MFPDELAY();
+
+- *ctla = 2; MFPDELAY();
+- if (*ctla != 0x60) return( 0 );
++ *ctla = 2;
++ MFPDELAY();
++ if (*ctla != 0x60)
++ return 0;
+
+- return( 1 );
++ return 1;
+ }
+
+
+@@ -152,59 +118,58 @@ static int __init scc_test( volatile cha
+
+ int __init atari_parse_bootinfo(const struct bi_record *record)
+ {
+- int unknown = 0;
+- const u_long *data = record->data;
++ int unknown = 0;
++ const u_long *data = record->data;
+
+- switch (record->tag) {
++ switch (record->tag) {
+ case BI_ATARI_MCH_COOKIE:
+- atari_mch_cookie = *data;
+- break;
++ atari_mch_cookie = *data;
++ break;
+ case BI_ATARI_MCH_TYPE:
+- atari_mch_type = *data;
+- break;
++ atari_mch_type = *data;
++ break;
+ default:
+- unknown = 1;
+- }
+- return(unknown);
++ unknown = 1;
++ break;
++ }
++ return unknown;
+ }
+
+
+ /* Parse the Atari-specific switches= option. */
+-void __init atari_switches_setup( const char *str, unsigned len )
++void __init atari_switches_setup(const char *str, unsigned len)
+ {
+- char switches[len+1];
+- char *p;
+- int ovsc_shift;
+- char *args = switches;
+-
+- /* copy string to local array, strsep works destructively... */
+- strlcpy( switches, str, sizeof(switches) );
+- atari_switches = 0;
+-
+- /* parse the options */
+- while ((p = strsep(&args, ",")) != NULL) {
+- if (!*p) continue;
+- ovsc_shift = 0;
+- if (strncmp( p, "ov_", 3 ) == 0) {
+- p += 3;
+- ovsc_shift = ATARI_SWITCH_OVSC_SHIFT;
+- }
+-
+- if (strcmp( p, "ikbd" ) == 0) {
+- /* RTS line of IKBD ACIA */
+- atari_switches |= ATARI_SWITCH_IKBD << ovsc_shift;
+- }
+- else if (strcmp( p, "midi" ) == 0) {
+- /* RTS line of MIDI ACIA */
+- atari_switches |= ATARI_SWITCH_MIDI << ovsc_shift;
+- }
+- else if (strcmp( p, "snd6" ) == 0) {
+- atari_switches |= ATARI_SWITCH_SND6 << ovsc_shift;
++ char switches[len+1];
++ char *p;
++ int ovsc_shift;
++ char *args = switches;
++
++ /* copy string to local array, strsep works destructively... */
++ strlcpy(switches, str, sizeof(switches));
++ atari_switches = 0;
++
++ /* parse the options */
++ while ((p = strsep(&args, ",")) != NULL) {
++ if (!*p)
++ continue;
++ ovsc_shift = 0;
++ if (strncmp(p, "ov_", 3) == 0) {
++ p += 3;
++ ovsc_shift = ATARI_SWITCH_OVSC_SHIFT;
++ }
++
++ if (strcmp(p, "ikbd") == 0) {
++ /* RTS line of IKBD ACIA */
++ atari_switches |= ATARI_SWITCH_IKBD << ovsc_shift;
++ } else if (strcmp(p, "midi") == 0) {
++ /* RTS line of MIDI ACIA */
++ atari_switches |= ATARI_SWITCH_MIDI << ovsc_shift;
++ } else if (strcmp(p, "snd6") == 0) {
++ atari_switches |= ATARI_SWITCH_SND6 << ovsc_shift;
++ } else if (strcmp(p, "snd7") == 0) {
++ atari_switches |= ATARI_SWITCH_SND7 << ovsc_shift;
++ }
+ }
+- else if (strcmp( p, "snd7" ) == 0) {
+- atari_switches |= ATARI_SWITCH_SND7 << ovsc_shift;
+- }
+- }
+ }
+
+
+@@ -214,284 +179,283 @@ void __init atari_switches_setup( const
+
+ void __init config_atari(void)
+ {
+- unsigned short tos_version;
++ unsigned short tos_version;
+
+- memset(&atari_hw_present, 0, sizeof(atari_hw_present));
++ memset(&atari_hw_present, 0, sizeof(atari_hw_present));
+
+- atari_debug_init();
++ atari_debug_init();
+
+- ioport_resource.end = 0xFFFFFFFF; /* Change size of I/O space from 64KB
+- to 4GB. */
++ /* Change size of I/O space from 64KB to 4GB. */
++ ioport_resource.end = 0xFFFFFFFF;
+
+- mach_sched_init = atari_sched_init;
+- mach_init_IRQ = atari_init_IRQ;
+- mach_get_model = atari_get_model;
+- mach_get_hardware_list = atari_get_hardware_list;
+- mach_gettimeoffset = atari_gettimeoffset;
+- mach_reset = atari_reset;
+- mach_max_dma_address = 0xffffff;
++ mach_sched_init = atari_sched_init;
++ mach_init_IRQ = atari_init_IRQ;
++ mach_get_model = atari_get_model;
++ mach_get_hardware_list = atari_get_hardware_list;
++ mach_gettimeoffset = atari_gettimeoffset;
++ mach_reset = atari_reset;
++ mach_max_dma_address = 0xffffff;
+ #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
+- mach_beep = atari_mksound;
++ mach_beep = atari_mksound;
+ #endif
+ #ifdef CONFIG_HEARTBEAT
+- mach_heartbeat = atari_heartbeat;
++ mach_heartbeat = atari_heartbeat;
+ #endif
+
+- /* Set switches as requested by the user */
+- if (atari_switches & ATARI_SWITCH_IKBD)
+- acia.key_ctrl = ACIA_DIV64 | ACIA_D8N1S | ACIA_RHTID;
+- if (atari_switches & ATARI_SWITCH_MIDI)
+- acia.mid_ctrl = ACIA_DIV16 | ACIA_D8N1S | ACIA_RHTID;
+- if (atari_switches & (ATARI_SWITCH_SND6|ATARI_SWITCH_SND7)) {
+- sound_ym.rd_data_reg_sel = 14;
+- sound_ym.wd_data = sound_ym.rd_data_reg_sel |
+- ((atari_switches&ATARI_SWITCH_SND6) ? 0x40 : 0) |
+- ((atari_switches&ATARI_SWITCH_SND7) ? 0x80 : 0);
+- }
+-
+- /* ++bjoern:
+- * Determine hardware present
+- */
++ /* Set switches as requested by the user */
++ if (atari_switches & ATARI_SWITCH_IKBD)
++ acia.key_ctrl = ACIA_DIV64 | ACIA_D8N1S | ACIA_RHTID;
++ if (atari_switches & ATARI_SWITCH_MIDI)
++ acia.mid_ctrl = ACIA_DIV16 | ACIA_D8N1S | ACIA_RHTID;
++ if (atari_switches & (ATARI_SWITCH_SND6|ATARI_SWITCH_SND7)) {
++ sound_ym.rd_data_reg_sel = 14;
++ sound_ym.wd_data = sound_ym.rd_data_reg_sel |
++ ((atari_switches&ATARI_SWITCH_SND6) ? 0x40 : 0) |
++ ((atari_switches&ATARI_SWITCH_SND7) ? 0x80 : 0);
++ }
+
+- printk( "Atari hardware found: " );
+- if (MACH_IS_MEDUSA || MACH_IS_HADES) {
+- /* There's no Atari video hardware on the Medusa, but all the
+- * addresses below generate a DTACK so no bus error occurs! */
+- }
+- else if (hwreg_present( f030_xreg )) {
+- ATARIHW_SET(VIDEL_SHIFTER);
+- printk( "VIDEL " );
+- /* This is a temporary hack: If there is Falcon video
+- * hardware, we assume that the ST-DMA serves SCSI instead of
+- * ACSI. In the future, there should be a better method for
+- * this...
+- */
+- ATARIHW_SET(ST_SCSI);
+- printk( "STDMA-SCSI " );
+- }
+- else if (hwreg_present( tt_palette )) {
+- ATARIHW_SET(TT_SHIFTER);
+- printk( "TT_SHIFTER " );
+- }
+- else if (hwreg_present( &shifter.bas_hi )) {
+- if (hwreg_present( &shifter.bas_lo ) &&
+- (shifter.bas_lo = 0x0aau, shifter.bas_lo == 0x0aau)) {
+- ATARIHW_SET(EXTD_SHIFTER);
+- printk( "EXTD_SHIFTER " );
+- }
+- else {
+- ATARIHW_SET(STND_SHIFTER);
+- printk( "STND_SHIFTER " );
+- }
+- }
+- if (hwreg_present( &mfp.par_dt_reg )) {
+- ATARIHW_SET(ST_MFP);
+- printk( "ST_MFP " );
+- }
+- if (hwreg_present( &tt_mfp.par_dt_reg )) {
+- ATARIHW_SET(TT_MFP);
+- printk( "TT_MFP " );
+- }
+- if (hwreg_present( &tt_scsi_dma.dma_addr_hi )) {
+- ATARIHW_SET(SCSI_DMA);
+- printk( "TT_SCSI_DMA " );
+- }
+- if (!MACH_IS_HADES && hwreg_present( &st_dma.dma_hi )) {
+- ATARIHW_SET(STND_DMA);
+- printk( "STND_DMA " );
+- }
+- if (MACH_IS_MEDUSA || /* The ST-DMA address registers aren't readable
+- * on all Medusas, so the test below may fail */
+- (hwreg_present( &st_dma.dma_vhi ) &&
+- (st_dma.dma_vhi = 0x55) && (st_dma.dma_hi = 0xaa) &&
+- st_dma.dma_vhi == 0x55 && st_dma.dma_hi == 0xaa &&
+- (st_dma.dma_vhi = 0xaa) && (st_dma.dma_hi = 0x55) &&
+- st_dma.dma_vhi == 0xaa && st_dma.dma_hi == 0x55)) {
+- ATARIHW_SET(EXTD_DMA);
+- printk( "EXTD_DMA " );
+- }
+- if (hwreg_present( &tt_scsi.scsi_data )) {
+- ATARIHW_SET(TT_SCSI);
+- printk( "TT_SCSI " );
+- }
+- if (hwreg_present( &sound_ym.rd_data_reg_sel )) {
+- ATARIHW_SET(YM_2149);
+- printk( "YM2149 " );
+- }
+- if (!MACH_IS_MEDUSA && !MACH_IS_HADES &&
+- hwreg_present( &tt_dmasnd.ctrl )) {
+- ATARIHW_SET(PCM_8BIT);
+- printk( "PCM " );
+- }
+- if (!MACH_IS_HADES && hwreg_present( &falcon_codec.unused5 )) {
+- ATARIHW_SET(CODEC);
+- printk( "CODEC " );
+- }
+- if (hwreg_present( &dsp56k_host_interface.icr )) {
+- ATARIHW_SET(DSP56K);
+- printk( "DSP56K " );
+- }
+- if (hwreg_present( &tt_scc_dma.dma_ctrl ) &&
++ /* ++bjoern:
++ * Determine hardware present
++ */
++
++ printk("Atari hardware found: ");
++ if (MACH_IS_MEDUSA || MACH_IS_HADES) {
++ /* There's no Atari video hardware on the Medusa, but all the
++ * addresses below generate a DTACK so no bus error occurs! */
++ } else if (hwreg_present(f030_xreg)) {
++ ATARIHW_SET(VIDEL_SHIFTER);
++ printk("VIDEL ");
++ /* This is a temporary hack: If there is Falcon video
++ * hardware, we assume that the ST-DMA serves SCSI instead of
++ * ACSI. In the future, there should be a better method for
++ * this...
++ */
++ ATARIHW_SET(ST_SCSI);
++ printk("STDMA-SCSI ");
++ } else if (hwreg_present(tt_palette)) {
++ ATARIHW_SET(TT_SHIFTER);
++ printk("TT_SHIFTER ");
++ } else if (hwreg_present(&shifter.bas_hi)) {
++ if (hwreg_present(&shifter.bas_lo) &&
++ (shifter.bas_lo = 0x0aau, shifter.bas_lo == 0x0aau)) {
++ ATARIHW_SET(EXTD_SHIFTER);
++ printk("EXTD_SHIFTER ");
++ } else {
++ ATARIHW_SET(STND_SHIFTER);
++ printk("STND_SHIFTER ");
++ }
++ }
++ if (hwreg_present(&mfp.par_dt_reg)) {
++ ATARIHW_SET(ST_MFP);
++ printk("ST_MFP ");
++ }
++ if (hwreg_present(&tt_mfp.par_dt_reg)) {
++ ATARIHW_SET(TT_MFP);
++ printk("TT_MFP ");
++ }
++ if (hwreg_present(&tt_scsi_dma.dma_addr_hi)) {
++ ATARIHW_SET(SCSI_DMA);
++ printk("TT_SCSI_DMA ");
++ }
++ if (!MACH_IS_HADES && hwreg_present(&st_dma.dma_hi)) {
++ ATARIHW_SET(STND_DMA);
++ printk("STND_DMA ");
++ }
++ /*
++ * The ST-DMA address registers aren't readable
++ * on all Medusas, so the test below may fail
++ */
++ if (MACH_IS_MEDUSA ||
++ (hwreg_present(&st_dma.dma_vhi) &&
++ (st_dma.dma_vhi = 0x55) && (st_dma.dma_hi = 0xaa) &&
++ st_dma.dma_vhi == 0x55 && st_dma.dma_hi == 0xaa &&
++ (st_dma.dma_vhi = 0xaa) && (st_dma.dma_hi = 0x55) &&
++ st_dma.dma_vhi == 0xaa && st_dma.dma_hi == 0x55)) {
++ ATARIHW_SET(EXTD_DMA);
++ printk("EXTD_DMA ");
++ }
++ if (hwreg_present(&tt_scsi.scsi_data)) {
++ ATARIHW_SET(TT_SCSI);
++ printk("TT_SCSI ");
++ }
++ if (hwreg_present(&sound_ym.rd_data_reg_sel)) {
++ ATARIHW_SET(YM_2149);
++ printk("YM2149 ");
++ }
++ if (!MACH_IS_MEDUSA && !MACH_IS_HADES &&
++ hwreg_present(&tt_dmasnd.ctrl)) {
++ ATARIHW_SET(PCM_8BIT);
++ printk("PCM ");
++ }
++ if (!MACH_IS_HADES && hwreg_present(&falcon_codec.unused5)) {
++ ATARIHW_SET(CODEC);
++ printk("CODEC ");
++ }
++ if (hwreg_present(&dsp56k_host_interface.icr)) {
++ ATARIHW_SET(DSP56K);
++ printk("DSP56K ");
++ }
++ if (hwreg_present(&tt_scc_dma.dma_ctrl) &&
+ #if 0
+- /* This test sucks! Who knows some better? */
+- (tt_scc_dma.dma_ctrl = 0x01, (tt_scc_dma.dma_ctrl & 1) == 1) &&
+- (tt_scc_dma.dma_ctrl = 0x00, (tt_scc_dma.dma_ctrl & 1) == 0)
++ /* This test sucks! Who knows some better? */
++ (tt_scc_dma.dma_ctrl = 0x01, (tt_scc_dma.dma_ctrl & 1) == 1) &&
++ (tt_scc_dma.dma_ctrl = 0x00, (tt_scc_dma.dma_ctrl & 1) == 0)
+ #else
+- !MACH_IS_MEDUSA && !MACH_IS_HADES
++ !MACH_IS_MEDUSA && !MACH_IS_HADES
+ #endif
+- ) {
+- ATARIHW_SET(SCC_DMA);
+- printk( "SCC_DMA " );
+- }
+- if (scc_test( &scc.cha_a_ctrl )) {
+- ATARIHW_SET(SCC);
+- printk( "SCC " );
+- }
+- if (scc_test( &st_escc.cha_b_ctrl )) {
+- ATARIHW_SET( ST_ESCC );
+- printk( "ST_ESCC " );
+- }
+- if (MACH_IS_HADES)
+- {
+- ATARIHW_SET( VME );
+- printk( "VME " );
+- }
+- else if (hwreg_present( &tt_scu.sys_mask )) {
+- ATARIHW_SET(SCU);
+- /* Assume a VME bus if there's a SCU */
+- ATARIHW_SET( VME );
+- printk( "VME SCU " );
+- }
+- if (hwreg_present( (void *)(0xffff9210) )) {
+- ATARIHW_SET(ANALOG_JOY);
+- printk( "ANALOG_JOY " );
+- }
+- if (!MACH_IS_HADES && hwreg_present( blitter.halftone )) {
+- ATARIHW_SET(BLITTER);
+- printk( "BLITTER " );
+- }
+- if (hwreg_present((void *)0xfff00039)) {
+- ATARIHW_SET(IDE);
+- printk( "IDE " );
+- }
++ ) {
++ ATARIHW_SET(SCC_DMA);
++ printk("SCC_DMA ");
++ }
++ if (scc_test(&scc.cha_a_ctrl)) {
++ ATARIHW_SET(SCC);
++ printk("SCC ");
++ }
++ if (scc_test(&st_escc.cha_b_ctrl)) {
++ ATARIHW_SET(ST_ESCC);
++ printk("ST_ESCC ");
++ }
++ if (MACH_IS_HADES) {
++ ATARIHW_SET(VME);
++ printk("VME ");
++ } else if (hwreg_present(&tt_scu.sys_mask)) {
++ ATARIHW_SET(SCU);
++ /* Assume a VME bus if there's a SCU */
++ ATARIHW_SET(VME);
++ printk("VME SCU ");
++ }
++ if (hwreg_present((void *)(0xffff9210))) {
++ ATARIHW_SET(ANALOG_JOY);
++ printk("ANALOG_JOY ");
++ }
++ if (!MACH_IS_HADES && hwreg_present(blitter.halftone)) {
++ ATARIHW_SET(BLITTER);
++ printk("BLITTER ");
++ }
++ if (hwreg_present((void *)0xfff00039)) {
++ ATARIHW_SET(IDE);
++ printk("IDE ");
++ }
+ #if 1 /* This maybe wrong */
+- if (!MACH_IS_MEDUSA && !MACH_IS_HADES &&
+- hwreg_present( &tt_microwire.data ) &&
+- hwreg_present( &tt_microwire.mask ) &&
+- (tt_microwire.mask = 0x7ff,
+- udelay(1),
+- tt_microwire.data = MW_LM1992_PSG_HIGH | MW_LM1992_ADDR,
+- udelay(1),
+- tt_microwire.data != 0)) {
+- ATARIHW_SET(MICROWIRE);
+- while (tt_microwire.mask != 0x7ff) ;
+- printk( "MICROWIRE " );
+- }
++ if (!MACH_IS_MEDUSA && !MACH_IS_HADES &&
++ hwreg_present(&tt_microwire.data) &&
++ hwreg_present(&tt_microwire.mask) &&
++ (tt_microwire.mask = 0x7ff,
++ udelay(1),
++ tt_microwire.data = MW_LM1992_PSG_HIGH | MW_LM1992_ADDR,
++ udelay(1),
++ tt_microwire.data != 0)) {
++ ATARIHW_SET(MICROWIRE);
++ while (tt_microwire.mask != 0x7ff)
++ ;
++ printk("MICROWIRE ");
++ }
+ #endif
+- if (hwreg_present( &tt_rtc.regsel )) {
+- ATARIHW_SET(TT_CLK);
+- printk( "TT_CLK " );
+- mach_hwclk = atari_tt_hwclk;
+- mach_set_clock_mmss = atari_tt_set_clock_mmss;
+- }
+- if (!MACH_IS_HADES && hwreg_present( &mste_rtc.sec_ones)) {
+- ATARIHW_SET(MSTE_CLK);
+- printk( "MSTE_CLK ");
+- mach_hwclk = atari_mste_hwclk;
+- mach_set_clock_mmss = atari_mste_set_clock_mmss;
+- }
+- if (!MACH_IS_MEDUSA && !MACH_IS_HADES &&
+- hwreg_present( &dma_wd.fdc_speed ) &&
+- hwreg_write( &dma_wd.fdc_speed, 0 )) {
+- ATARIHW_SET(FDCSPEED);
+- printk( "FDC_SPEED ");
+- }
+- if (!MACH_IS_HADES && !ATARIHW_PRESENT(ST_SCSI)) {
+- ATARIHW_SET(ACSI);
+- printk( "ACSI " );
+- }
+- printk("\n");
+-
+- if (CPU_IS_040_OR_060)
+- /* Now it seems to be safe to turn of the tt0 transparent
+- * translation (the one that must not be turned off in
+- * head.S...)
+- */
+- __asm__ volatile ("moveq #0,%/d0\n\t"
+- ".chip 68040\n\t"
+- "movec %%d0,%%itt0\n\t"
+- "movec %%d0,%%dtt0\n\t"
+- ".chip 68k"
+- : /* no outputs */
+- : /* no inputs */
+- : "d0");
+-
+- /* allocator for memory that must reside in st-ram */
+- atari_stram_init ();
+-
+- /* Set up a mapping for the VMEbus address region:
+- *
+- * VME is either at phys. 0xfexxxxxx (TT) or 0xa00000..0xdfffff
+- * (MegaSTE) In both cases, the whole 16 MB chunk is mapped at
+- * 0xfe000000 virt., because this can be done with a single
+- * transparent translation. On the 68040, lots of often unused
+- * page tables would be needed otherwise. On a MegaSTE or similar,
+- * the highest byte is stripped off by hardware due to the 24 bit
+- * design of the bus.
+- */
++ if (hwreg_present(&tt_rtc.regsel)) {
++ ATARIHW_SET(TT_CLK);
++ printk("TT_CLK ");
++ mach_hwclk = atari_tt_hwclk;
++ mach_set_clock_mmss = atari_tt_set_clock_mmss;
++ }
++ if (!MACH_IS_HADES && hwreg_present(&mste_rtc.sec_ones)) {
++ ATARIHW_SET(MSTE_CLK);
++ printk("MSTE_CLK ");
++ mach_hwclk = atari_mste_hwclk;
++ mach_set_clock_mmss = atari_mste_set_clock_mmss;
++ }
++ if (!MACH_IS_MEDUSA && !MACH_IS_HADES &&
++ hwreg_present(&dma_wd.fdc_speed) &&
++ hwreg_write(&dma_wd.fdc_speed, 0)) {
++ ATARIHW_SET(FDCSPEED);
++ printk("FDC_SPEED ");
++ }
++ if (!MACH_IS_HADES && !ATARIHW_PRESENT(ST_SCSI)) {
++ ATARIHW_SET(ACSI);
++ printk("ACSI ");
++ }
++ printk("\n");
+
+- if (CPU_IS_020_OR_030) {
+- unsigned long tt1_val;
+- tt1_val = 0xfe008543; /* Translate 0xfexxxxxx, enable, cache
+- * inhibit, read and write, FDC mask = 3,
+- * FDC val = 4 -> Supervisor only */
+- __asm__ __volatile__ ( ".chip 68030\n\t"
+- "pmove %0@,%/tt1\n\t"
+- ".chip 68k"
+- : : "a" (&tt1_val) );
+- }
+- else {
+- __asm__ __volatile__
+- ( "movel %0,%/d0\n\t"
+- ".chip 68040\n\t"
+- "movec %%d0,%%itt1\n\t"
+- "movec %%d0,%%dtt1\n\t"
+- ".chip 68k"
+- :
+- : "g" (0xfe00a040) /* Translate 0xfexxxxxx, enable,
+- * supervisor only, non-cacheable/
+- * serialized, writable */
+- : "d0" );
+-
+- }
+-
+- /* Fetch tos version at Physical 2 */
+- /* We my not be able to access this address if the kernel is
+- loaded to st ram, since the first page is unmapped. On the
+- Medusa this is always the case and there is nothing we can do
+- about this, so we just assume the smaller offset. For the TT
+- we use the fact that in head.S we have set up a mapping
+- 0xFFxxxxxx -> 0x00xxxxxx, so that the first 16MB is accessible
+- in the last 16MB of the address space. */
+- tos_version = (MACH_IS_MEDUSA || MACH_IS_HADES) ?
+- 0xfff : *(unsigned short *)0xff000002;
+- atari_rtc_year_offset = (tos_version < 0x306) ? 70 : 68;
++ if (CPU_IS_040_OR_060)
++ /* Now it seems to be safe to turn of the tt0 transparent
++ * translation (the one that must not be turned off in
++ * head.S...)
++ */
++ asm volatile ("\n"
++ " moveq #0,%%d0\n"
++ " .chip 68040\n"
++ " movec %%d0,%%itt0\n"
++ " movec %%d0,%%dtt0\n"
++ " .chip 68k"
++ : /* no outputs */
++ : /* no inputs */
++ : "d0");
++
++ /* allocator for memory that must reside in st-ram */
++ atari_stram_init();
++
++ /* Set up a mapping for the VMEbus address region:
++ *
++ * VME is either at phys. 0xfexxxxxx (TT) or 0xa00000..0xdfffff
++ * (MegaSTE) In both cases, the whole 16 MB chunk is mapped at
++ * 0xfe000000 virt., because this can be done with a single
++ * transparent translation. On the 68040, lots of often unused
++ * page tables would be needed otherwise. On a MegaSTE or similar,
++ * the highest byte is stripped off by hardware due to the 24 bit
++ * design of the bus.
++ */
++
++ if (CPU_IS_020_OR_030) {
++ unsigned long tt1_val;
++ tt1_val = 0xfe008543; /* Translate 0xfexxxxxx, enable, cache
++ * inhibit, read and write, FDC mask = 3,
++ * FDC val = 4 -> Supervisor only */
++ asm volatile ("\n"
++ " .chip 68030\n"
++ " pmove %0@,%/tt1\n"
++ " .chip 68k"
++ : : "a" (&tt1_val));
++ } else {
++ asm volatile ("\n"
++ " .chip 68040\n"
++ " movec %0,%%itt1\n"
++ " movec %0,%%dtt1\n"
++ " .chip 68k"
++ :
++ : "d" (0xfe00a040)); /* Translate 0xfexxxxxx, enable,
++ * supervisor only, non-cacheable/
++ * serialized, writable */
++
++ }
++
++ /* Fetch tos version at Physical 2 */
++ /*
++ * We my not be able to access this address if the kernel is
++ * loaded to st ram, since the first page is unmapped. On the
++ * Medusa this is always the case and there is nothing we can do
++ * about this, so we just assume the smaller offset. For the TT
++ * we use the fact that in head.S we have set up a mapping
++ * 0xFFxxxxxx -> 0x00xxxxxx, so that the first 16MB is accessible
++ * in the last 16MB of the address space.
++ */
++ tos_version = (MACH_IS_MEDUSA || MACH_IS_HADES) ?
++ 0xfff : *(unsigned short *)0xff000002;
++ atari_rtc_year_offset = (tos_version < 0x306) ? 70 : 68;
+ }
+
+ #ifdef CONFIG_HEARTBEAT
+-static void atari_heartbeat( int on )
++static void atari_heartbeat(int on)
+ {
+- unsigned char tmp;
+- unsigned long flags;
++ unsigned char tmp;
++ unsigned long flags;
+
+- if (atari_dont_touch_floppy_select)
+- return;
++ if (atari_dont_touch_floppy_select)
++ return;
+
+- local_irq_save(flags);
+- sound_ym.rd_data_reg_sel = 14; /* Select PSG Port A */
+- tmp = sound_ym.rd_data_reg_sel;
+- sound_ym.wd_data = on ? (tmp & ~0x02) : (tmp | 0x02);
+- local_irq_restore(flags);
++ local_irq_save(flags);
++ sound_ym.rd_data_reg_sel = 14; /* Select PSG Port A */
++ tmp = sound_ym.rd_data_reg_sel;
++ sound_ym.wd_data = on ? (tmp & ~0x02) : (tmp | 0x02);
++ local_irq_restore(flags);
+ }
+ #endif
+
+@@ -526,180 +490,171 @@ static void atari_heartbeat( int on )
+
+ /* ++andreas: no need for complicated code, just depend on prefetch */
+
+-static void atari_reset (void)
++static void atari_reset(void)
+ {
+- long tc_val = 0;
+- long reset_addr;
++ long tc_val = 0;
++ long reset_addr;
+
+- /* On the Medusa, phys. 0x4 may contain garbage because it's no
+- ROM. See above for explanation why we cannot use PTOV(4). */
+- reset_addr = MACH_IS_HADES ? 0x7fe00030 :
+- MACH_IS_MEDUSA || MACH_IS_AB40 ? 0xe00030 :
+- *(unsigned long *) 0xff000004;
+-
+- /* reset ACIA for switch off OverScan, if it's active */
+- if (atari_switches & ATARI_SWITCH_OVSC_IKBD)
+- acia.key_ctrl = ACIA_RESET;
+- if (atari_switches & ATARI_SWITCH_OVSC_MIDI)
+- acia.mid_ctrl = ACIA_RESET;
+-
+- /* processor independent: turn off interrupts and reset the VBR;
+- * the caches must be left enabled, else prefetching the final jump
+- * instruction doesn't work. */
+- local_irq_disable();
+- __asm__ __volatile__
+- ("moveq #0,%/d0\n\t"
+- "movec %/d0,%/vbr"
+- : : : "d0" );
+-
+- if (CPU_IS_040_OR_060) {
+- unsigned long jmp_addr040 = virt_to_phys(&&jmp_addr_label040);
+- if (CPU_IS_060) {
+- /* 68060: clear PCR to turn off superscalar operation */
+- __asm__ __volatile__
+- ("moveq #0,%/d0\n\t"
+- ".chip 68060\n\t"
+- "movec %%d0,%%pcr\n\t"
+- ".chip 68k"
+- : : : "d0" );
+- }
+-
+- __asm__ __volatile__
+- ("movel %0,%/d0\n\t"
+- "andl #0xff000000,%/d0\n\t"
+- "orw #0xe020,%/d0\n\t" /* map 16 MB, enable, cacheable */
+- ".chip 68040\n\t"
+- "movec %%d0,%%itt0\n\t"
+- "movec %%d0,%%dtt0\n\t"
+- ".chip 68k\n\t"
+- "jmp %0@\n\t"
+- : /* no outputs */
+- : "a" (jmp_addr040)
+- : "d0" );
+- jmp_addr_label040:
+- __asm__ __volatile__
+- ("moveq #0,%/d0\n\t"
+- "nop\n\t"
+- ".chip 68040\n\t"
+- "cinva %%bc\n\t"
+- "nop\n\t"
+- "pflusha\n\t"
+- "nop\n\t"
+- "movec %%d0,%%tc\n\t"
+- "nop\n\t"
+- /* the following setup of transparent translations is needed on the
+- * Afterburner040 to successfully reboot. Other machines shouldn't
+- * care about a different tt regs setup, they also didn't care in
+- * the past that the regs weren't turned off. */
+- "movel #0xffc000,%%d0\n\t" /* whole insn space cacheable */
+- "movec %%d0,%%itt0\n\t"
+- "movec %%d0,%%itt1\n\t"
+- "orw #0x40,%/d0\n\t" /* whole data space non-cacheable/ser. */
+- "movec %%d0,%%dtt0\n\t"
+- "movec %%d0,%%dtt1\n\t"
+- ".chip 68k\n\t"
+- "jmp %0@"
+- : /* no outputs */
+- : "a" (reset_addr)
+- : "d0");
+- }
+- else
+- __asm__ __volatile__
+- ("pmove %0@,%/tc\n\t"
+- "jmp %1@"
+- : /* no outputs */
+- : "a" (&tc_val), "a" (reset_addr));
++ /*
++ * On the Medusa, phys. 0x4 may contain garbage because it's no
++ * ROM. See above for explanation why we cannot use PTOV(4).
++ */
++ reset_addr = MACH_IS_HADES ? 0x7fe00030 :
++ MACH_IS_MEDUSA || MACH_IS_AB40 ? 0xe00030 :
++ *(unsigned long *) 0xff000004;
++
++ /* reset ACIA for switch off OverScan, if it's active */
++ if (atari_switches & ATARI_SWITCH_OVSC_IKBD)
++ acia.key_ctrl = ACIA_RESET;
++ if (atari_switches & ATARI_SWITCH_OVSC_MIDI)
++ acia.mid_ctrl = ACIA_RESET;
++
++ /* processor independent: turn off interrupts and reset the VBR;
++ * the caches must be left enabled, else prefetching the final jump
++ * instruction doesn't work.
++ */
++ local_irq_disable();
++ asm volatile ("movec %0,%%vbr"
++ : : "d" (0));
++
++ if (CPU_IS_040_OR_060) {
++ unsigned long jmp_addr040 = virt_to_phys(&&jmp_addr_label040);
++ if (CPU_IS_060) {
++ /* 68060: clear PCR to turn off superscalar operation */
++ asm volatile ("\n"
++ " .chip 68060\n"
++ " movec %0,%%pcr\n"
++ " .chip 68k"
++ : : "d" (0));
++ }
++
++ asm volatile ("\n"
++ " move.l %0,%%d0\n"
++ " and.l #0xff000000,%%d0\n"
++ " or.w #0xe020,%%d0\n" /* map 16 MB, enable, cacheable */
++ " .chip 68040\n"
++ " movec %%d0,%%itt0\n"
++ " movec %%d0,%%dtt0\n"
++ " .chip 68k\n"
++ " jmp %0@"
++ : : "a" (jmp_addr040)
++ : "d0");
++ jmp_addr_label040:
++ asm volatile ("\n"
++ " moveq #0,%%d0\n"
++ " nop\n"
++ " .chip 68040\n"
++ " cinva %%bc\n"
++ " nop\n"
++ " pflusha\n"
++ " nop\n"
++ " movec %%d0,%%tc\n"
++ " nop\n"
++ /* the following setup of transparent translations is needed on the
++ * Afterburner040 to successfully reboot. Other machines shouldn't
++ * care about a different tt regs setup, they also didn't care in
++ * the past that the regs weren't turned off. */
++ " move.l #0xffc000,%%d0\n" /* whole insn space cacheable */
++ " movec %%d0,%%itt0\n"
++ " movec %%d0,%%itt1\n"
++ " or.w #0x40,%/d0\n" /* whole data space non-cacheable/ser. */
++ " movec %%d0,%%dtt0\n"
++ " movec %%d0,%%dtt1\n"
++ " .chip 68k\n"
++ " jmp %0@"
++ : /* no outputs */
++ : "a" (reset_addr)
++ : "d0");
++ } else
++ asm volatile ("\n"
++ " pmove %0@,%%tc\n"
++ " jmp %1@"
++ : /* no outputs */
++ : "a" (&tc_val), "a" (reset_addr));
+ }
+
+
+ static void atari_get_model(char *model)
+ {
+- strcpy(model, "Atari ");
+- switch (atari_mch_cookie >> 16) {
++ strcpy(model, "Atari ");
++ switch (atari_mch_cookie >> 16) {
+ case ATARI_MCH_ST:
+- if (ATARIHW_PRESENT(MSTE_CLK))
+- strcat (model, "Mega ST");
+- else
+- strcat (model, "ST");
+- break;
++ if (ATARIHW_PRESENT(MSTE_CLK))
++ strcat(model, "Mega ST");
++ else
++ strcat(model, "ST");
++ break;
+ case ATARI_MCH_STE:
+- if (MACH_IS_MSTE)
+- strcat (model, "Mega STE");
+- else
+- strcat (model, "STE");
+- break;
++ if (MACH_IS_MSTE)
++ strcat(model, "Mega STE");
++ else
++ strcat(model, "STE");
++ break;
+ case ATARI_MCH_TT:
+- if (MACH_IS_MEDUSA)
+- /* Medusa has TT _MCH cookie */
+- strcat (model, "Medusa");
+- else if (MACH_IS_HADES)
+- strcat(model, "Hades");
+- else
+- strcat (model, "TT");
+- break;
++ if (MACH_IS_MEDUSA)
++ /* Medusa has TT _MCH cookie */
++ strcat(model, "Medusa");
++ else if (MACH_IS_HADES)
++ strcat(model, "Hades");
++ else
++ strcat(model, "TT");
++ break;
+ case ATARI_MCH_FALCON:
+- strcat (model, "Falcon");
+- if (MACH_IS_AB40)
+- strcat (model, " (with Afterburner040)");
+- break;
++ strcat(model, "Falcon");
++ if (MACH_IS_AB40)
++ strcat(model, " (with Afterburner040)");
++ break;
+ default:
+- sprintf (model + strlen (model), "(unknown mach cookie 0x%lx)",
+- atari_mch_cookie);
+- break;
+- }
++ sprintf(model + strlen(model), "(unknown mach cookie 0x%lx)",
++ atari_mch_cookie);
++ break;
++ }
+ }
+
+
+ static int atari_get_hardware_list(char *buffer)
+ {
+- int len = 0, i;
++ int len = 0, i;
+
+- for (i = 0; i < m68k_num_memory; i++)
+- len += sprintf (buffer+len, "\t%3ld MB at 0x%08lx (%s)\n",
+- m68k_memory[i].size >> 20, m68k_memory[i].addr,
+- (m68k_memory[i].addr & 0xff000000 ?
+- "alternate RAM" : "ST-RAM"));
+-
+-#define ATARIHW_ANNOUNCE(name,str) \
+- if (ATARIHW_PRESENT(name)) \
+- len += sprintf (buffer + len, "\t%s\n", str)
+-
+- len += sprintf (buffer + len, "Detected hardware:\n");
+- ATARIHW_ANNOUNCE(STND_SHIFTER, "ST Shifter");
+- ATARIHW_ANNOUNCE(EXTD_SHIFTER, "STe Shifter");
+- ATARIHW_ANNOUNCE(TT_SHIFTER, "TT Shifter");
+- ATARIHW_ANNOUNCE(VIDEL_SHIFTER, "Falcon Shifter");
+- ATARIHW_ANNOUNCE(YM_2149, "Programmable Sound Generator");
+- ATARIHW_ANNOUNCE(PCM_8BIT, "PCM 8 Bit Sound");
+- ATARIHW_ANNOUNCE(CODEC, "CODEC Sound");
+- ATARIHW_ANNOUNCE(TT_SCSI, "SCSI Controller NCR5380 (TT style)");
+- ATARIHW_ANNOUNCE(ST_SCSI, "SCSI Controller NCR5380 (Falcon style)");
+- ATARIHW_ANNOUNCE(ACSI, "ACSI Interface");
+- ATARIHW_ANNOUNCE(IDE, "IDE Interface");
+- ATARIHW_ANNOUNCE(FDCSPEED, "8/16 Mhz Switch for FDC");
+- ATARIHW_ANNOUNCE(ST_MFP, "Multi Function Peripheral MFP 68901");
+- ATARIHW_ANNOUNCE(TT_MFP, "Second Multi Function Peripheral MFP 68901");
+- ATARIHW_ANNOUNCE(SCC, "Serial Communications Controller SCC 8530");
+- ATARIHW_ANNOUNCE(ST_ESCC, "Extended Serial Communications Controller SCC 85230");
+- ATARIHW_ANNOUNCE(ANALOG_JOY, "Paddle Interface");
+- ATARIHW_ANNOUNCE(MICROWIRE, "MICROWIRE(tm) Interface");
+- ATARIHW_ANNOUNCE(STND_DMA, "DMA Controller (24 bit)");
+- ATARIHW_ANNOUNCE(EXTD_DMA, "DMA Controller (32 bit)");
+- ATARIHW_ANNOUNCE(SCSI_DMA, "DMA Controller for NCR5380");
+- ATARIHW_ANNOUNCE(SCC_DMA, "DMA Controller for SCC");
+- ATARIHW_ANNOUNCE(TT_CLK, "Clock Chip MC146818A");
+- ATARIHW_ANNOUNCE(MSTE_CLK, "Clock Chip RP5C15");
+- ATARIHW_ANNOUNCE(SCU, "System Control Unit");
+- ATARIHW_ANNOUNCE(BLITTER, "Blitter");
+- ATARIHW_ANNOUNCE(VME, "VME Bus");
+- ATARIHW_ANNOUNCE(DSP56K, "DSP56001 processor");
++ for (i = 0; i < m68k_num_memory; i++)
++ len += sprintf(buffer+len, "\t%3ld MB at 0x%08lx (%s)\n",
++ m68k_memory[i].size >> 20, m68k_memory[i].addr,
++ (m68k_memory[i].addr & 0xff000000 ?
++ "alternate RAM" : "ST-RAM"));
++
++#define ATARIHW_ANNOUNCE(name, str) \
++ if (ATARIHW_PRESENT(name)) \
++ len += sprintf(buffer + len, "\t%s\n", str)
++
++ len += sprintf(buffer + len, "Detected hardware:\n");
++ ATARIHW_ANNOUNCE(STND_SHIFTER, "ST Shifter");
++ ATARIHW_ANNOUNCE(EXTD_SHIFTER, "STe Shifter");
++ ATARIHW_ANNOUNCE(TT_SHIFTER, "TT Shifter");
++ ATARIHW_ANNOUNCE(VIDEL_SHIFTER, "Falcon Shifter");
++ ATARIHW_ANNOUNCE(YM_2149, "Programmable Sound Generator");
++ ATARIHW_ANNOUNCE(PCM_8BIT, "PCM 8 Bit Sound");
++ ATARIHW_ANNOUNCE(CODEC, "CODEC Sound");
++ ATARIHW_ANNOUNCE(TT_SCSI, "SCSI Controller NCR5380 (TT style)");
++ ATARIHW_ANNOUNCE(ST_SCSI, "SCSI Controller NCR5380 (Falcon style)");
++ ATARIHW_ANNOUNCE(ACSI, "ACSI Interface");
++ ATARIHW_ANNOUNCE(IDE, "IDE Interface");
++ ATARIHW_ANNOUNCE(FDCSPEED, "8/16 Mhz Switch for FDC");
++ ATARIHW_ANNOUNCE(ST_MFP, "Multi Function Peripheral MFP 68901");
++ ATARIHW_ANNOUNCE(TT_MFP, "Second Multi Function Peripheral MFP 68901");
++ ATARIHW_ANNOUNCE(SCC, "Serial Communications Controller SCC 8530");
++ ATARIHW_ANNOUNCE(ST_ESCC, "Extended Serial Communications Controller SCC 85230");
++ ATARIHW_ANNOUNCE(ANALOG_JOY, "Paddle Interface");
++ ATARIHW_ANNOUNCE(MICROWIRE, "MICROWIRE(tm) Interface");
++ ATARIHW_ANNOUNCE(STND_DMA, "DMA Controller (24 bit)");
++ ATARIHW_ANNOUNCE(EXTD_DMA, "DMA Controller (32 bit)");
++ ATARIHW_ANNOUNCE(SCSI_DMA, "DMA Controller for NCR5380");
++ ATARIHW_ANNOUNCE(SCC_DMA, "DMA Controller for SCC");
++ ATARIHW_ANNOUNCE(TT_CLK, "Clock Chip MC146818A");
++ ATARIHW_ANNOUNCE(MSTE_CLK, "Clock Chip RP5C15");
++ ATARIHW_ANNOUNCE(SCU, "System Control Unit");
++ ATARIHW_ANNOUNCE(BLITTER, "Blitter");
++ ATARIHW_ANNOUNCE(VME, "VME Bus");
++ ATARIHW_ANNOUNCE(DSP56K, "DSP56001 processor");
+
+- return(len);
++ return len;
+ }
+-
+-/*
+- * Local variables:
+- * c-indent-level: 4
+- * tab-width: 8
+- * End:
+- */
+--- linux-m68k-2.6.21.orig/arch/m68k/atari/debug.c
++++ linux-m68k-2.6.21/arch/m68k/atari/debug.c
+@@ -30,317 +30,311 @@ int atari_SCC_init_done;
+ int atari_SCC_reset_done;
+
+ static struct console atari_console_driver = {
+- .name = "debug",
+- .flags = CON_PRINTBUFFER,
+- .index = -1,
++ .name = "debug",
++ .flags = CON_PRINTBUFFER,
++ .index = -1,
+ };
+
+
+-static inline void ata_mfp_out (char c)
++static inline void ata_mfp_out(char c)
+ {
+- while (!(mfp.trn_stat & 0x80)) /* wait for tx buf empty */
+- barrier ();
+- mfp.usart_dta = c;
++ while (!(mfp.trn_stat & 0x80)) /* wait for tx buf empty */
++ barrier();
++ mfp.usart_dta = c;
+ }
+
+-void atari_mfp_console_write (struct console *co, const char *str,
+- unsigned int count)
++void atari_mfp_console_write(struct console *co, const char *str,
++ unsigned int count)
+ {
+- while (count--) {
+- if (*str == '\n')
+- ata_mfp_out( '\r' );
+- ata_mfp_out( *str++ );
+- }
++ while (count--) {
++ if (*str == '\n')
++ ata_mfp_out('\r');
++ ata_mfp_out(*str++);
++ }
+ }
+
+-static inline void ata_scc_out (char c)
++static inline void ata_scc_out(char c)
+ {
+- do {
++ do {
++ MFPDELAY();
++ } while (!(scc.cha_b_ctrl & 0x04)); /* wait for tx buf empty */
+ MFPDELAY();
+- } while (!(scc.cha_b_ctrl & 0x04)); /* wait for tx buf empty */
+- MFPDELAY();
+- scc.cha_b_data = c;
++ scc.cha_b_data = c;
+ }
+
+-void atari_scc_console_write (struct console *co, const char *str,
+- unsigned int count)
++void atari_scc_console_write(struct console *co, const char *str,
++ unsigned int count)
+ {
+- while (count--) {
+- if (*str == '\n')
+- ata_scc_out( '\r' );
+- ata_scc_out( *str++ );
+- }
++ while (count--) {
++ if (*str == '\n')
++ ata_scc_out('\r');
++ ata_scc_out(*str++);
++ }
+ }
+
+-static inline void ata_midi_out (char c)
++static inline void ata_midi_out(char c)
+ {
+- while (!(acia.mid_ctrl & ACIA_TDRE)) /* wait for tx buf empty */
+- barrier ();
+- acia.mid_data = c;
++ while (!(acia.mid_ctrl & ACIA_TDRE)) /* wait for tx buf empty */
++ barrier();
++ acia.mid_data = c;
+ }
+
+-void atari_midi_console_write (struct console *co, const char *str,
+- unsigned int count)
++void atari_midi_console_write(struct console *co, const char *str,
++ unsigned int count)
+ {
+- while (count--) {
+- if (*str == '\n')
+- ata_midi_out( '\r' );
+- ata_midi_out( *str++ );
+- }
++ while (count--) {
++ if (*str == '\n')
++ ata_midi_out('\r');
++ ata_midi_out(*str++);
++ }
+ }
+
+-static int ata_par_out (char c)
++static int ata_par_out(char c)
+ {
+- unsigned char tmp;
+- /* This a some-seconds timeout in case no printer is connected */
+- unsigned long i = loops_per_jiffy > 1 ? loops_per_jiffy : 10000000/HZ;
++ unsigned char tmp;
++ /* This a some-seconds timeout in case no printer is connected */
++ unsigned long i = loops_per_jiffy > 1 ? loops_per_jiffy : 10000000/HZ;
+
+- while( (mfp.par_dt_reg & 1) && --i ) /* wait for BUSY == L */
+- ;
+- if (!i) return( 0 );
++ while ((mfp.par_dt_reg & 1) && --i) /* wait for BUSY == L */
++ ;
++ if (!i)
++ return 0;
+
+- sound_ym.rd_data_reg_sel = 15; /* select port B */
+- sound_ym.wd_data = c; /* put char onto port */
+- sound_ym.rd_data_reg_sel = 14; /* select port A */
+- tmp = sound_ym.rd_data_reg_sel;
+- sound_ym.wd_data = tmp & ~0x20; /* set strobe L */
+- MFPDELAY(); /* wait a bit */
+- sound_ym.wd_data = tmp | 0x20; /* set strobe H */
+- return( 1 );
++ sound_ym.rd_data_reg_sel = 15; /* select port B */
++ sound_ym.wd_data = c; /* put char onto port */
++ sound_ym.rd_data_reg_sel = 14; /* select port A */
++ tmp = sound_ym.rd_data_reg_sel;
++ sound_ym.wd_data = tmp & ~0x20; /* set strobe L */
++ MFPDELAY(); /* wait a bit */
++ sound_ym.wd_data = tmp | 0x20; /* set strobe H */
++ return 1;
+ }
+
+-static void atari_par_console_write (struct console *co, const char *str,
+- unsigned int count)
++static void atari_par_console_write(struct console *co, const char *str,
++ unsigned int count)
+ {
+- static int printer_present = 1;
+-
+- if (!printer_present)
+- return;
++ static int printer_present = 1;
+
+- while (count--) {
+- if (*str == '\n')
+- if (!ata_par_out( '\r' )) {
+- printer_present = 0;
++ if (!printer_present)
+ return;
+- }
+- if (!ata_par_out( *str++ )) {
+- printer_present = 0;
+- return;
++
++ while (count--) {
++ if (*str == '\n') {
++ if (!ata_par_out('\r')) {
++ printer_present = 0;
++ return;
++ }
++ }
++ if (!ata_par_out(*str++)) {
++ printer_present = 0;
++ return;
++ }
+ }
+- }
+ }
+
+ #ifdef CONFIG_SERIAL_CONSOLE
+ int atari_mfp_console_wait_key(struct console *co)
+ {
+- while( !(mfp.rcv_stat & 0x80) ) /* wait for rx buf filled */
+- barrier();
+- return( mfp.usart_dta );
++ while (!(mfp.rcv_stat & 0x80)) /* wait for rx buf filled */
++ barrier();
++ return mfp.usart_dta;
+ }
+
+ int atari_scc_console_wait_key(struct console *co)
+ {
+- do {
++ do {
++ MFPDELAY();
++ } while (!(scc.cha_b_ctrl & 0x01)); /* wait for rx buf filled */
+ MFPDELAY();
+- } while( !(scc.cha_b_ctrl & 0x01) ); /* wait for rx buf filled */
+- MFPDELAY();
+- return( scc.cha_b_data );
++ return scc.cha_b_data;
+ }
+
+ int atari_midi_console_wait_key(struct console *co)
+ {
+- while( !(acia.mid_ctrl & ACIA_RDRF) ) /* wait for rx buf filled */
+- barrier();
+- return( acia.mid_data );
++ while (!(acia.mid_ctrl & ACIA_RDRF)) /* wait for rx buf filled */
++ barrier();
++ return acia.mid_data;
+ }
+ #endif
+
+-/* The following two functions do a quick'n'dirty initialization of the MFP or
++/*
++ * The following two functions do a quick'n'dirty initialization of the MFP or
+ * SCC serial ports. They're used by the debugging interface, kgdb, and the
+- * serial console code. */
++ * serial console code.
++ */
+ #ifndef CONFIG_SERIAL_CONSOLE
+-static void __init atari_init_mfp_port( int cflag )
++static void __init atari_init_mfp_port(int cflag)
+ #else
+-void atari_init_mfp_port( int cflag )
++void atari_init_mfp_port(int cflag)
+ #endif
+ {
+- /* timer values for 1200...115200 bps; > 38400 select 110, 134, or 150
+- * bps, resp., and work only correct if there's a RSVE or RSSPEED */
+- static int baud_table[9] = { 16, 11, 8, 4, 2, 1, 175, 143, 128 };
+- int baud = cflag & CBAUD;
+- int parity = (cflag & PARENB) ? ((cflag & PARODD) ? 0x04 : 0x06) : 0;
+- int csize = ((cflag & CSIZE) == CS7) ? 0x20 : 0x00;
+-
+- if (cflag & CBAUDEX)
+- baud += B38400;
+- if (baud < B1200 || baud > B38400+2)
+- baud = B9600; /* use default 9600bps for non-implemented rates */
+- baud -= B1200; /* baud_table[] starts at 1200bps */
+-
+- mfp.trn_stat &= ~0x01; /* disable TX */
+- mfp.usart_ctr = parity | csize | 0x88; /* 1:16 clk mode, 1 stop bit */
+- mfp.tim_ct_cd &= 0x70; /* stop timer D */
+- mfp.tim_dt_d = baud_table[baud];
+- mfp.tim_ct_cd |= 0x01; /* start timer D, 1:4 */
+- mfp.trn_stat |= 0x01; /* enable TX */
+-
+- atari_MFP_init_done = 1;
+-}
+-
+-#define SCC_WRITE(reg,val) \
+- do { \
+- scc.cha_b_ctrl = (reg); \
+- MFPDELAY(); \
+- scc.cha_b_ctrl = (val); \
+- MFPDELAY(); \
+- } while(0)
++ /*
++ * timer values for 1200...115200 bps; > 38400 select 110, 134, or 150
++ * bps, resp., and work only correct if there's a RSVE or RSSPEED
++ */
++ static int baud_table[9] = { 16, 11, 8, 4, 2, 1, 175, 143, 128 };
++ int baud = cflag & CBAUD;
++ int parity = (cflag & PARENB) ? ((cflag & PARODD) ? 0x04 : 0x06) : 0;
++ int csize = ((cflag & CSIZE) == CS7) ? 0x20 : 0x00;
++
++ if (cflag & CBAUDEX)
++ baud += B38400;
++ if (baud < B1200 || baud > B38400+2)
++ baud = B9600; /* use default 9600bps for non-implemented rates */
++ baud -= B1200; /* baud_table[] starts at 1200bps */
++
++ mfp.trn_stat &= ~0x01; /* disable TX */
++ mfp.usart_ctr = parity | csize | 0x88; /* 1:16 clk mode, 1 stop bit */
++ mfp.tim_ct_cd &= 0x70; /* stop timer D */
++ mfp.tim_dt_d = baud_table[baud];
++ mfp.tim_ct_cd |= 0x01; /* start timer D, 1:4 */
++ mfp.trn_stat |= 0x01; /* enable TX */
++
++ atari_MFP_init_done = 1;
++}
++
++#define SCC_WRITE(reg, val) \
++ do { \
++ scc.cha_b_ctrl = (reg); \
++ MFPDELAY(); \
++ scc.cha_b_ctrl = (val); \
++ MFPDELAY(); \
++ } while (0)
+
+ /* loops_per_jiffy isn't initialized yet, so we can't use udelay(). This does a
+ * delay of ~ 60us. */
+-#define LONG_DELAY() \
+- do { \
+- int i; \
+- for( i = 100; i > 0; --i ) \
+- MFPDELAY(); \
+- } while(0)
++#define LONG_DELAY() \
++ do { \
++ int i; \
++ for (i = 100; i > 0; --i) \
++ MFPDELAY(); \
++ } while (0)
+
+ #ifndef CONFIG_SERIAL_CONSOLE
+-static void __init atari_init_scc_port( int cflag )
++static void __init atari_init_scc_port(int cflag)
+ #else
+-void atari_init_scc_port( int cflag )
++void atari_init_scc_port(int cflag)
+ #endif
+ {
+- extern int atari_SCC_reset_done;
+- static int clksrc_table[9] =
+- /* reg 11: 0x50 = BRG, 0x00 = RTxC, 0x28 = TRxC */
+- { 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00 };
+- static int brgsrc_table[9] =
+- /* reg 14: 0 = RTxC, 2 = PCLK */
+- { 2, 2, 2, 2, 2, 2, 0, 2, 2 };
+- static int clkmode_table[9] =
+- /* reg 4: 0x40 = x16, 0x80 = x32, 0xc0 = x64 */
+- { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80 };
+- static int div_table[9] =
+- /* reg12 (BRG low) */
+- { 208, 138, 103, 50, 24, 11, 1, 0, 0 };
+-
+- int baud = cflag & CBAUD;
+- int clksrc, clkmode, div, reg3, reg5;
+-
+- if (cflag & CBAUDEX)
+- baud += B38400;
+- if (baud < B1200 || baud > B38400+2)
+- baud = B9600; /* use default 9600bps for non-implemented rates */
+- baud -= B1200; /* tables starts at 1200bps */
+-
+- clksrc = clksrc_table[baud];
+- clkmode = clkmode_table[baud];
+- div = div_table[baud];
+- if (ATARIHW_PRESENT(TT_MFP) && baud >= 6) {
+- /* special treatment for TT, where rates >= 38400 are done via TRxC */
+- clksrc = 0x28; /* TRxC */
+- clkmode = baud == 6 ? 0xc0 :
+- baud == 7 ? 0x80 : /* really 76800bps */
+- 0x40; /* really 153600bps */
+- div = 0;
+- }
+-
+- reg3 = (cflag & CSIZE) == CS8 ? 0xc0 : 0x40;
+- reg5 = (cflag & CSIZE) == CS8 ? 0x60 : 0x20 | 0x82 /* assert DTR/RTS */;
+-
+- (void)scc.cha_b_ctrl; /* reset reg pointer */
+- SCC_WRITE( 9, 0xc0 ); /* reset */
+- LONG_DELAY(); /* extra delay after WR9 access */
+- SCC_WRITE( 4, (cflag & PARENB) ? ((cflag & PARODD) ? 0x01 : 0x03) : 0 |
+- 0x04 /* 1 stopbit */ |
+- clkmode );
+- SCC_WRITE( 3, reg3 );
+- SCC_WRITE( 5, reg5 );
+- SCC_WRITE( 9, 0 ); /* no interrupts */
+- LONG_DELAY(); /* extra delay after WR9 access */
+- SCC_WRITE( 10, 0 ); /* NRZ mode */
+- SCC_WRITE( 11, clksrc ); /* main clock source */
+- SCC_WRITE( 12, div ); /* BRG value */
+- SCC_WRITE( 13, 0 ); /* BRG high byte */
+- SCC_WRITE( 14, brgsrc_table[baud] );
+- SCC_WRITE( 14, brgsrc_table[baud] | (div ? 1 : 0) );
+- SCC_WRITE( 3, reg3 | 1 );
+- SCC_WRITE( 5, reg5 | 8 );
++ extern int atari_SCC_reset_done;
++ static int clksrc_table[9] =
++ /* reg 11: 0x50 = BRG, 0x00 = RTxC, 0x28 = TRxC */
++ { 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00 };
++ static int brgsrc_table[9] =
++ /* reg 14: 0 = RTxC, 2 = PCLK */
++ { 2, 2, 2, 2, 2, 2, 0, 2, 2 };
++ static int clkmode_table[9] =
++ /* reg 4: 0x40 = x16, 0x80 = x32, 0xc0 = x64 */
++ { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80 };
++ static int div_table[9] =
++ /* reg12 (BRG low) */
++ { 208, 138, 103, 50, 24, 11, 1, 0, 0 };
++
++ int baud = cflag & CBAUD;
++ int clksrc, clkmode, div, reg3, reg5;
++
++ if (cflag & CBAUDEX)
++ baud += B38400;
++ if (baud < B1200 || baud > B38400+2)
++ baud = B9600; /* use default 9600bps for non-implemented rates */
++ baud -= B1200; /* tables starts at 1200bps */
++
++ clksrc = clksrc_table[baud];
++ clkmode = clkmode_table[baud];
++ div = div_table[baud];
++ if (ATARIHW_PRESENT(TT_MFP) && baud >= 6) {
++ /* special treatment for TT, where rates >= 38400 are done via TRxC */
++ clksrc = 0x28; /* TRxC */
++ clkmode = baud == 6 ? 0xc0 :
++ baud == 7 ? 0x80 : /* really 76800bps */
++ 0x40; /* really 153600bps */
++ div = 0;
++ }
++
++ reg3 = (cflag & CSIZE) == CS8 ? 0xc0 : 0x40;
++ reg5 = (cflag & CSIZE) == CS8 ? 0x60 : 0x20 | 0x82 /* assert DTR/RTS */;
++
++ (void)scc.cha_b_ctrl; /* reset reg pointer */
++ SCC_WRITE(9, 0xc0); /* reset */
++ LONG_DELAY(); /* extra delay after WR9 access */
++ SCC_WRITE(4, (cflag & PARENB) ? ((cflag & PARODD) ? 0x01 : 0x03)
++ : 0 | 0x04 /* 1 stopbit */ | clkmode);
++ SCC_WRITE(3, reg3);
++ SCC_WRITE(5, reg5);
++ SCC_WRITE(9, 0); /* no interrupts */
++ LONG_DELAY(); /* extra delay after WR9 access */
++ SCC_WRITE(10, 0); /* NRZ mode */
++ SCC_WRITE(11, clksrc); /* main clock source */
++ SCC_WRITE(12, div); /* BRG value */
++ SCC_WRITE(13, 0); /* BRG high byte */
++ SCC_WRITE(14, brgsrc_table[baud]);
++ SCC_WRITE(14, brgsrc_table[baud] | (div ? 1 : 0));
++ SCC_WRITE(3, reg3 | 1);
++ SCC_WRITE(5, reg5 | 8);
+
+- atari_SCC_reset_done = 1;
+- atari_SCC_init_done = 1;
++ atari_SCC_reset_done = 1;
++ atari_SCC_init_done = 1;
+ }
+
+ #ifndef CONFIG_SERIAL_CONSOLE
+-static void __init atari_init_midi_port( int cflag )
++static void __init atari_init_midi_port(int cflag)
+ #else
+-void atari_init_midi_port( int cflag )
++void atari_init_midi_port(int cflag)
+ #endif
+ {
+- int baud = cflag & CBAUD;
+- int csize = ((cflag & CSIZE) == CS8) ? 0x10 : 0x00;
+- /* warning 7N1 isn't possible! (instead 7O2 is used...) */
+- int parity = (cflag & PARENB) ? ((cflag & PARODD) ? 0x0c : 0x08) : 0x04;
+- int div;
+-
+- /* 4800 selects 7812.5, 115200 selects 500000, all other (incl. 9600 as
+- * default) the standard MIDI speed 31250. */
+- if (cflag & CBAUDEX)
+- baud += B38400;
+- if (baud == B4800)
+- div = ACIA_DIV64; /* really 7812.5 bps */
+- else if (baud == B38400+2 /* 115200 */)
+- div = ACIA_DIV1; /* really 500 kbps (does that work??) */
+- else
+- div = ACIA_DIV16; /* 31250 bps, standard for MIDI */
++ int baud = cflag & CBAUD;
++ int csize = ((cflag & CSIZE) == CS8) ? 0x10 : 0x00;
++ /* warning 7N1 isn't possible! (instead 7O2 is used...) */
++ int parity = (cflag & PARENB) ? ((cflag & PARODD) ? 0x0c : 0x08) : 0x04;
++ int div;
++
++ /* 4800 selects 7812.5, 115200 selects 500000, all other (incl. 9600 as
++ * default) the standard MIDI speed 31250. */
++ if (cflag & CBAUDEX)
++ baud += B38400;
++ if (baud == B4800)
++ div = ACIA_DIV64; /* really 7812.5 bps */
++ else if (baud == B38400+2 /* 115200 */)
++ div = ACIA_DIV1; /* really 500 kbps (does that work??) */
++ else
++ div = ACIA_DIV16; /* 31250 bps, standard for MIDI */
+
+- /* RTS low, ints disabled */
+- acia.mid_ctrl = div | csize | parity |
++ /* RTS low, ints disabled */
++ acia.mid_ctrl = div | csize | parity |
+ ((atari_switches & ATARI_SWITCH_MIDI) ?
+ ACIA_RHTID : ACIA_RLTID);
+ }
+
+ void __init atari_debug_init(void)
+ {
+- if (!strcmp( m68k_debug_device, "ser" )) {
+- /* defaults to ser2 for a Falcon and ser1 otherwise */
+- strcpy( m68k_debug_device, MACH_IS_FALCON ? "ser2" : "ser1" );
+-
+- }
+-
+- if (!strcmp( m68k_debug_device, "ser1" )) {
+- /* ST-MFP Modem1 serial port */
+- atari_init_mfp_port( B9600|CS8 );
+- atari_console_driver.write = atari_mfp_console_write;
+- }
+- else if (!strcmp( m68k_debug_device, "ser2" )) {
+- /* SCC Modem2 serial port */
+- atari_init_scc_port( B9600|CS8 );
+- atari_console_driver.write = atari_scc_console_write;
+- }
+- else if (!strcmp( m68k_debug_device, "midi" )) {
+- /* MIDI port */
+- atari_init_midi_port( B9600|CS8 );
+- atari_console_driver.write = atari_midi_console_write;
+- }
+- else if (!strcmp( m68k_debug_device, "par" )) {
+- /* parallel printer */
+- atari_turnoff_irq( IRQ_MFP_BUSY ); /* avoid ints */
+- sound_ym.rd_data_reg_sel = 7; /* select mixer control */
+- sound_ym.wd_data = 0xff; /* sound off, ports are output */
+- sound_ym.rd_data_reg_sel = 15; /* select port B */
+- sound_ym.wd_data = 0; /* no char */
+- sound_ym.rd_data_reg_sel = 14; /* select port A */
+- sound_ym.wd_data = sound_ym.rd_data_reg_sel | 0x20; /* strobe H */
+- atari_console_driver.write = atari_par_console_write;
+- }
+- if (atari_console_driver.write)
+- register_console(&atari_console_driver);
+-}
++ if (!strcmp(m68k_debug_device, "ser")) {
++ /* defaults to ser2 for a Falcon and ser1 otherwise */
++ strcpy(m68k_debug_device, MACH_IS_FALCON ? "ser2" : "ser1");
++ }
+
+-/*
+- * Local variables:
+- * c-indent-level: 4
+- * tab-width: 8
+- * End:
+- */
++ if (!strcmp(m68k_debug_device, "ser1")) {
++ /* ST-MFP Modem1 serial port */
++ atari_init_mfp_port(B9600|CS8);
++ atari_console_driver.write = atari_mfp_console_write;
++ } else if (!strcmp(m68k_debug_device, "ser2")) {
++ /* SCC Modem2 serial port */
++ atari_init_scc_port(B9600|CS8);
++ atari_console_driver.write = atari_scc_console_write;
++ } else if (!strcmp(m68k_debug_device, "midi")) {
++ /* MIDI port */
++ atari_init_midi_port(B9600|CS8);
++ atari_console_driver.write = atari_midi_console_write;
++ } else if (!strcmp(m68k_debug_device, "par")) {
++ /* parallel printer */
++ atari_turnoff_irq(IRQ_MFP_BUSY); /* avoid ints */
++ sound_ym.rd_data_reg_sel = 7; /* select mixer control */
++ sound_ym.wd_data = 0xff; /* sound off, ports are output */
++ sound_ym.rd_data_reg_sel = 15; /* select port B */
++ sound_ym.wd_data = 0; /* no char */
++ sound_ym.rd_data_reg_sel = 14; /* select port A */
++ sound_ym.wd_data = sound_ym.rd_data_reg_sel | 0x20; /* strobe H */
++ atari_console_driver.write = atari_par_console_write;
++ }
++ if (atari_console_driver.write)
++ register_console(&atari_console_driver);
++}
+--- linux-m68k-2.6.21.orig/arch/m68k/kernel/entry.S
++++ linux-m68k-2.6.21/arch/m68k/kernel/entry.S
+@@ -692,7 +692,7 @@ sys_call_table:
+ .long sys_tgkill /* 265 */
+ .long sys_utimes
+ .long sys_fadvise64_64
+- .long sys_mbind
++ .long sys_mbind
+ .long sys_get_mempolicy
+ .long sys_set_mempolicy /* 270 */
+ .long sys_mq_open
+--- linux-m68k-2.6.21.orig/arch/m68k/kernel/head.S
++++ linux-m68k-2.6.21/arch/m68k/kernel/head.S
+@@ -3195,7 +3195,7 @@ func_start serial_putc,%d0/%d1/%a0/%a1
+ jbra L(serial_putc_done)
+ 3:
+ #endif
+-
++
+ L(serial_putc_done):
+ func_return serial_putc
+
+--- linux-m68k-2.6.21.orig/arch/m68k/kernel/setup.c
++++ linux-m68k-2.6.21/arch/m68k/kernel/setup.c
+@@ -133,78 +133,78 @@ extern void config_hp300(void);
+ extern void config_q40(void);
+ extern void config_sun3x(void);
+
+-extern void mac_debugging_short (int, short);
+-extern void mac_debugging_long (int, long);
+-
+ #define MASK_256K 0xfffc0000
+
+ extern void paging_init(void);
+
+ static void __init m68k_parse_bootinfo(const struct bi_record *record)
+ {
+- while (record->tag != BI_LAST) {
+- int unknown = 0;
+- const unsigned long *data = record->data;
+- switch (record->tag) {
+- case BI_MACHTYPE:
+- case BI_CPUTYPE:
+- case BI_FPUTYPE:
+- case BI_MMUTYPE:
+- /* Already set up by head.S */
+- break;
+-
+- case BI_MEMCHUNK:
+- if (m68k_num_memory < NUM_MEMINFO) {
+- m68k_memory[m68k_num_memory].addr = data[0];
+- m68k_memory[m68k_num_memory].size = data[1];
+- m68k_num_memory++;
+- } else
+- printk("m68k_parse_bootinfo: too many memory chunks\n");
+- break;
+-
+- case BI_RAMDISK:
+- m68k_ramdisk.addr = data[0];
+- m68k_ramdisk.size = data[1];
+- break;
+-
+- case BI_COMMAND_LINE:
+- strlcpy(m68k_command_line, (const char *)data, sizeof(m68k_command_line));
+- break;
+-
+- default:
+- if (MACH_IS_AMIGA)
+- unknown = amiga_parse_bootinfo(record);
+- else if (MACH_IS_ATARI)
+- unknown = atari_parse_bootinfo(record);
+- else if (MACH_IS_MAC)
+- unknown = mac_parse_bootinfo(record);
+- else if (MACH_IS_Q40)
+- unknown = q40_parse_bootinfo(record);
+- else if (MACH_IS_BVME6000)
+- unknown = bvme6000_parse_bootinfo(record);
+- else if (MACH_IS_MVME16x)
+- unknown = mvme16x_parse_bootinfo(record);
+- else if (MACH_IS_MVME147)
+- unknown = mvme147_parse_bootinfo(record);
+- else if (MACH_IS_HP300)
+- unknown = hp300_parse_bootinfo(record);
+- else
+- unknown = 1;
+- }
+- if (unknown)
+- printk("m68k_parse_bootinfo: unknown tag 0x%04x ignored\n",
+- record->tag);
+- record = (struct bi_record *)((unsigned long)record+record->size);
+- }
++ while (record->tag != BI_LAST) {
++ int unknown = 0;
++ const unsigned long *data = record->data;
++
++ switch (record->tag) {
++ case BI_MACHTYPE:
++ case BI_CPUTYPE:
++ case BI_FPUTYPE:
++ case BI_MMUTYPE:
++ /* Already set up by head.S */
++ break;
++
++ case BI_MEMCHUNK:
++ if (m68k_num_memory < NUM_MEMINFO) {
++ m68k_memory[m68k_num_memory].addr = data[0];
++ m68k_memory[m68k_num_memory].size = data[1];
++ m68k_num_memory++;
++ } else
++ printk("m68k_parse_bootinfo: too many memory chunks\n");
++ break;
++
++ case BI_RAMDISK:
++ m68k_ramdisk.addr = data[0];
++ m68k_ramdisk.size = data[1];
++ break;
++
++ case BI_COMMAND_LINE:
++ strlcpy(m68k_command_line, (const char *)data,
++ sizeof(m68k_command_line));
++ break;
++
++ default:
++ if (MACH_IS_AMIGA)
++ unknown = amiga_parse_bootinfo(record);
++ else if (MACH_IS_ATARI)
++ unknown = atari_parse_bootinfo(record);
++ else if (MACH_IS_MAC)
++ unknown = mac_parse_bootinfo(record);
++ else if (MACH_IS_Q40)
++ unknown = q40_parse_bootinfo(record);
++ else if (MACH_IS_BVME6000)
++ unknown = bvme6000_parse_bootinfo(record);
++ else if (MACH_IS_MVME16x)
++ unknown = mvme16x_parse_bootinfo(record);
++ else if (MACH_IS_MVME147)
++ unknown = mvme147_parse_bootinfo(record);
++ else if (MACH_IS_HP300)
++ unknown = hp300_parse_bootinfo(record);
++ else
++ unknown = 1;
++ }
++ if (unknown)
++ printk("m68k_parse_bootinfo: unknown tag 0x%04x ignored\n",
++ record->tag);
++ record = (struct bi_record *)((unsigned long)record +
++ record->size);
++ }
+
+- m68k_realnum_memory = m68k_num_memory;
++ m68k_realnum_memory = m68k_num_memory;
+ #ifdef CONFIG_SINGLE_MEMORY_CHUNK
+- if (m68k_num_memory > 1) {
+- printk("Ignoring last %i chunks of physical memory\n",
+- (m68k_num_memory - 1));
+- m68k_num_memory = 1;
+- }
+- m68k_memoffset = m68k_memory[0].addr-PAGE_OFFSET;
++ if (m68k_num_memory > 1) {
++ printk("Ignoring last %i chunks of physical memory\n",
++ (m68k_num_memory - 1));
++ m68k_num_memory = 1;
++ }
++ m68k_memoffset = m68k_memory[0].addr-PAGE_OFFSET;
+ #endif
+ }
+
+@@ -234,7 +234,7 @@ void __init setup_arch(char **cmdline_p)
+ /* clear the fpu if we have one */
+ if (m68k_fputype & (FPU_68881|FPU_68882|FPU_68040|FPU_68060)) {
+ volatile int zero = 0;
+- asm __volatile__ ("frestore %0" : : "m" (zero));
++ asm volatile ("frestore %0" : : "m" (zero));
+ }
+ #endif
+
+@@ -262,32 +262,35 @@ void __init setup_arch(char **cmdline_p)
+ * For the m68k, this is currently only "debug=xxx" to enable printing
+ * certain kernel messages to some machine-specific device.
+ */
+- for( p = *cmdline_p; p && *p; ) {
+- i = 0;
+- if (!strncmp( p, "debug=", 6 )) {
+- strlcpy( m68k_debug_device, p+6, sizeof(m68k_debug_device) );
+- if ((q = strchr( m68k_debug_device, ' ' ))) *q = 0;
+- i = 1;
+- }
++ for (p = *cmdline_p; p && *p;) {
++ i = 0;
++ if (!strncmp(p, "debug=", 6)) {
++ strlcpy(m68k_debug_device, p+6, sizeof(m68k_debug_device));
++ q = strchr(m68k_debug_device, ' ');
++ if (q)
++ *q = 0;
++ i = 1;
++ }
+ #ifdef CONFIG_ATARI
+- /* This option must be parsed very early */
+- if (!strncmp( p, "switches=", 9 )) {
+- extern void atari_switches_setup( const char *, int );
+- atari_switches_setup( p+9, (q = strchr( p+9, ' ' )) ?
+- (q - (p+9)) : strlen(p+9) );
+- i = 1;
+- }
+-#endif
+-
+- if (i) {
+- /* option processed, delete it */
+- if ((q = strchr( p, ' ' )))
+- strcpy( p, q+1 );
+- else
+- *p = 0;
+- } else {
+- if ((p = strchr( p, ' ' ))) ++p;
+- }
++ /* This option must be parsed very early */
++ if (!strncmp(p, "switches=", 9)) {
++ extern void atari_switches_setup(const char *, int);
++ q = strchr(p + 9, ' ');
++ atari_switches_setup(p + 9, q ? (q - (p + 9)) : strlen(p + 9));
++ i = 1;
++ }
++#endif
++
++ if (i) {
++ /* option processed, delete it */
++ if ((q = strchr(p, ' ')))
++ strcpy(p, q + 1);
++ else
++ *p = 0;
++ } else {
++ if ((p = strchr(p, ' ')))
++ ++p;
++ }
+ }
+
+ #ifdef CONFIG_DUMMY_CONSOLE
+@@ -296,62 +299,62 @@ void __init setup_arch(char **cmdline_p)
+
+ switch (m68k_machtype) {
+ #ifdef CONFIG_AMIGA
+- case MACH_AMIGA:
++ case MACH_AMIGA:
+ config_amiga();
+ break;
+ #endif
+ #ifdef CONFIG_ATARI
+- case MACH_ATARI:
++ case MACH_ATARI:
+ config_atari();
+ break;
+ #endif
+ #ifdef CONFIG_MAC
+- case MACH_MAC:
++ case MACH_MAC:
+ config_mac();
+ break;
+ #endif
+ #ifdef CONFIG_SUN3
+- case MACH_SUN3:
++ case MACH_SUN3:
+ config_sun3();
+ break;
+ #endif
+ #ifdef CONFIG_APOLLO
+- case MACH_APOLLO:
++ case MACH_APOLLO:
+ config_apollo();
+ break;
+ #endif
+ #ifdef CONFIG_MVME147
+- case MACH_MVME147:
++ case MACH_MVME147:
+ config_mvme147();
+ break;
+ #endif
+ #ifdef CONFIG_MVME16x
+- case MACH_MVME16x:
++ case MACH_MVME16x:
+ config_mvme16x();
+ break;
+ #endif
+ #ifdef CONFIG_BVME6000
+- case MACH_BVME6000:
++ case MACH_BVME6000:
+ config_bvme6000();
+ break;
+ #endif
+ #ifdef CONFIG_HP300
+- case MACH_HP300:
++ case MACH_HP300:
+ config_hp300();
+ break;
+ #endif
+ #ifdef CONFIG_Q40
+- case MACH_Q40:
+- config_q40();
++ case MACH_Q40:
++ config_q40();
+ break;
+ #endif
+ #ifdef CONFIG_SUN3X
+- case MACH_SUN3X:
++ case MACH_SUN3X:
+ config_sun3x();
+ break;
+ #endif
+- default:
+- panic ("No configuration setup");
++ default:
++ panic("No configuration setup");
+ }
+
+ #ifndef CONFIG_SUN3
+@@ -380,7 +383,7 @@ void __init setup_arch(char **cmdline_p)
+ reserve_bootmem(m68k_ramdisk.addr, m68k_ramdisk.size);
+ initrd_start = (unsigned long)phys_to_virt(m68k_ramdisk.addr);
+ initrd_end = initrd_start + m68k_ramdisk.size;
+- printk ("initrd: %08lx - %08lx\n", initrd_start, initrd_end);
++ printk("initrd: %08lx - %08lx\n", initrd_start, initrd_end);
+ }
+ #endif
+
+@@ -402,18 +405,18 @@ void __init setup_arch(char **cmdline_p)
+ #if defined(CONFIG_ISA) && defined(MULTI_ISA)
+ #if defined(CONFIG_Q40)
+ if (MACH_IS_Q40) {
+- isa_type = Q40_ISA;
+- isa_sex = 0;
++ isa_type = Q40_ISA;
++ isa_sex = 0;
+ }
+ #elif defined(CONFIG_GG2)
+- if (MACH_IS_AMIGA && AMIGAHW_PRESENT(GG2_ISA)){
+- isa_type = GG2_ISA;
+- isa_sex = 0;
++ if (MACH_IS_AMIGA && AMIGAHW_PRESENT(GG2_ISA)) {
++ isa_type = GG2_ISA;
++ isa_sex = 0;
+ }
+ #elif defined(CONFIG_AMIGA_PCMCIA)
+- if (MACH_IS_AMIGA && AMIGAHW_PRESENT(PCMCIA)){
+- isa_type = AG_ISA;
+- isa_sex = 1;
++ if (MACH_IS_AMIGA && AMIGAHW_PRESENT(PCMCIA)) {
++ isa_type = AG_ISA;
++ isa_sex = 1;
+ }
+ #endif
+ #endif
+@@ -421,66 +424,66 @@ void __init setup_arch(char **cmdline_p)
+
+ static int show_cpuinfo(struct seq_file *m, void *v)
+ {
+- const char *cpu, *mmu, *fpu;
+- unsigned long clockfreq, clockfactor;
++ const char *cpu, *mmu, *fpu;
++ unsigned long clockfreq, clockfactor;
+
+ #define LOOP_CYCLES_68020 (8)
+ #define LOOP_CYCLES_68030 (8)
+ #define LOOP_CYCLES_68040 (3)
+ #define LOOP_CYCLES_68060 (1)
+
+- if (CPU_IS_020) {
+- cpu = "68020";
+- clockfactor = LOOP_CYCLES_68020;
+- } else if (CPU_IS_030) {
+- cpu = "68030";
+- clockfactor = LOOP_CYCLES_68030;
+- } else if (CPU_IS_040) {
+- cpu = "68040";
+- clockfactor = LOOP_CYCLES_68040;
+- } else if (CPU_IS_060) {
+- cpu = "68060";
+- clockfactor = LOOP_CYCLES_68060;
+- } else {
+- cpu = "680x0";
+- clockfactor = 0;
+- }
++ if (CPU_IS_020) {
++ cpu = "68020";
++ clockfactor = LOOP_CYCLES_68020;
++ } else if (CPU_IS_030) {
++ cpu = "68030";
++ clockfactor = LOOP_CYCLES_68030;
++ } else if (CPU_IS_040) {
++ cpu = "68040";
++ clockfactor = LOOP_CYCLES_68040;
++ } else if (CPU_IS_060) {
++ cpu = "68060";
++ clockfactor = LOOP_CYCLES_68060;
++ } else {
++ cpu = "680x0";
++ clockfactor = 0;
++ }
+
+ #ifdef CONFIG_M68KFPU_EMU_ONLY
+- fpu="none(soft float)";
++ fpu = "none(soft float)";
+ #else
+- if (m68k_fputype & FPU_68881)
+- fpu = "68881";
+- else if (m68k_fputype & FPU_68882)
+- fpu = "68882";
+- else if (m68k_fputype & FPU_68040)
+- fpu = "68040";
+- else if (m68k_fputype & FPU_68060)
+- fpu = "68060";
+- else if (m68k_fputype & FPU_SUNFPA)
+- fpu = "Sun FPA";
+- else
+- fpu = "none";
+-#endif
+-
+- if (m68k_mmutype & MMU_68851)
+- mmu = "68851";
+- else if (m68k_mmutype & MMU_68030)
+- mmu = "68030";
+- else if (m68k_mmutype & MMU_68040)
+- mmu = "68040";
+- else if (m68k_mmutype & MMU_68060)
+- mmu = "68060";
+- else if (m68k_mmutype & MMU_SUN3)
+- mmu = "Sun-3";
+- else if (m68k_mmutype & MMU_APOLLO)
+- mmu = "Apollo";
+- else
+- mmu = "unknown";
++ if (m68k_fputype & FPU_68881)
++ fpu = "68881";
++ else if (m68k_fputype & FPU_68882)
++ fpu = "68882";
++ else if (m68k_fputype & FPU_68040)
++ fpu = "68040";
++ else if (m68k_fputype & FPU_68060)
++ fpu = "68060";
++ else if (m68k_fputype & FPU_SUNFPA)
++ fpu = "Sun FPA";
++ else
++ fpu = "none";
++#endif
++
++ if (m68k_mmutype & MMU_68851)
++ mmu = "68851";
++ else if (m68k_mmutype & MMU_68030)
++ mmu = "68030";
++ else if (m68k_mmutype & MMU_68040)
++ mmu = "68040";
++ else if (m68k_mmutype & MMU_68060)
++ mmu = "68060";
++ else if (m68k_mmutype & MMU_SUN3)
++ mmu = "Sun-3";
++ else if (m68k_mmutype & MMU_APOLLO)
++ mmu = "Apollo";
++ else
++ mmu = "unknown";
+
+- clockfreq = loops_per_jiffy*HZ*clockfactor;
++ clockfreq = loops_per_jiffy * HZ * clockfactor;
+
+- seq_printf(m, "CPU:\t\t%s\n"
++ seq_printf(m, "CPU:\t\t%s\n"
+ "MMU:\t\t%s\n"
+ "FPU:\t\t%s\n"
+ "Clocking:\t%lu.%1luMHz\n"
+@@ -490,7 +493,7 @@ static int show_cpuinfo(struct seq_file
+ clockfreq/1000000,(clockfreq/100000)%10,
+ loops_per_jiffy/(500000/HZ),(loops_per_jiffy/(5000/HZ))%100,
+ loops_per_jiffy);
+- return 0;
++ return 0;
+ }
+
+ static void *c_start(struct seq_file *m, loff_t *pos)
+@@ -506,44 +509,44 @@ static void c_stop(struct seq_file *m, v
+ {
+ }
+ struct seq_operations cpuinfo_op = {
+- .start = c_start,
+- .next = c_next,
+- .stop = c_stop,
+- .show = show_cpuinfo,
++ .start = c_start,
++ .next = c_next,
++ .stop = c_stop,
++ .show = show_cpuinfo,
+ };
+
+ int get_hardware_list(char *buffer)
+ {
+- int len = 0;
+- char model[80];
+- unsigned long mem;
+- int i;
+-
+- if (mach_get_model)
+- mach_get_model(model);
+- else
+- strcpy(model, "Unknown m68k");
+-
+- len += sprintf(buffer+len, "Model:\t\t%s\n", model);
+- for (mem = 0, i = 0; i < m68k_num_memory; i++)
+- mem += m68k_memory[i].size;
+- len += sprintf(buffer+len, "System Memory:\t%ldK\n", mem>>10);
++ int len = 0;
++ char model[80];
++ unsigned long mem;
++ int i;
++
++ if (mach_get_model)
++ mach_get_model(model);
++ else
++ strcpy(model, "Unknown m68k");
++
++ len += sprintf(buffer + len, "Model:\t\t%s\n", model);
++ for (mem = 0, i = 0; i < m68k_num_memory; i++)
++ mem += m68k_memory[i].size;
++ len += sprintf(buffer + len, "System Memory:\t%ldK\n", mem >> 10);
+
+- if (mach_get_hardware_list)
+- len += mach_get_hardware_list(buffer+len);
++ if (mach_get_hardware_list)
++ len += mach_get_hardware_list(buffer + len);
+
+- return(len);
++ return len;
+ }
+
+ void check_bugs(void)
+ {
+ #ifndef CONFIG_M68KFPU_EMU
+ if (m68k_fputype == 0) {
+- printk( KERN_EMERG "*** YOU DO NOT HAVE A FLOATING POINT UNIT, "
+- "WHICH IS REQUIRED BY LINUX/M68K ***\n" );
+- printk( KERN_EMERG "Upgrade your hardware or join the FPU "
+- "emulation project\n" );
+- panic( "no FPU" );
++ printk(KERN_EMERG "*** YOU DO NOT HAVE A FLOATING POINT UNIT, "
++ "WHICH IS REQUIRED BY LINUX/M68K ***\n");
++ printk(KERN_EMERG "Upgrade your hardware or join the FPU "
++ "emulation project\n");
++ panic("no FPU");
+ }
+ #endif /* !CONFIG_M68KFPU_EMU */
+ }
+--- linux-m68k-2.6.21.orig/arch/m68k/mac/config.c
++++ linux-m68k-2.6.21/arch/m68k/mac/config.c
+@@ -59,15 +59,15 @@ extern struct mem_info m68k_ramdisk;
+
+ extern char m68k_command_line[CL_SIZE];
+
+-void *mac_env; /* Loaded by the boot asm */
++void *mac_env; /* Loaded by the boot asm */
+
+ /* The phys. video addr. - might be bogus on some machines */
+ unsigned long mac_orig_videoaddr;
+
+ /* Mac specific timer functions */
+-extern unsigned long mac_gettimeoffset (void);
+-extern int mac_hwclk (int, struct rtc_time *);
+-extern int mac_set_clock_mmss (unsigned long);
++extern unsigned long mac_gettimeoffset(void);
++extern int mac_hwclk(int, struct rtc_time *);
++extern int mac_set_clock_mmss(unsigned long);
+ extern int show_mac_interrupts(struct seq_file *, void *);
+ extern void iop_preinit(void);
+ extern void iop_init(void);
+@@ -99,51 +99,52 @@ static void mac_sched_init(irq_handler_t
+
+ int __init mac_parse_bootinfo(const struct bi_record *record)
+ {
+- int unknown = 0;
+- const u_long *data = record->data;
++ int unknown = 0;
++ const u_long *data = record->data;
+
+- switch (record->tag) {
++ switch (record->tag) {
+ case BI_MAC_MODEL:
+- mac_bi_data.id = *data;
+- break;
++ mac_bi_data.id = *data;
++ break;
+ case BI_MAC_VADDR:
+- mac_bi_data.videoaddr = *data;
+- break;
++ mac_bi_data.videoaddr = *data;
++ break;
+ case BI_MAC_VDEPTH:
+- mac_bi_data.videodepth = *data;
+- break;
++ mac_bi_data.videodepth = *data;
++ break;
+ case BI_MAC_VROW:
+- mac_bi_data.videorow = *data;
+- break;
++ mac_bi_data.videorow = *data;
++ break;
+ case BI_MAC_VDIM:
+- mac_bi_data.dimensions = *data;
+- break;
++ mac_bi_data.dimensions = *data;
++ break;
+ case BI_MAC_VLOGICAL:
+- mac_bi_data.videological = VIDEOMEMBASE + (*data & ~VIDEOMEMMASK);
+- mac_orig_videoaddr = *data;
+- break;
++ mac_bi_data.videological = VIDEOMEMBASE + (*data & ~VIDEOMEMMASK);
++ mac_orig_videoaddr = *data;
++ break;
+ case BI_MAC_SCCBASE:
+- mac_bi_data.sccbase = *data;
+- break;
++ mac_bi_data.sccbase = *data;
++ break;
+ case BI_MAC_BTIME:
+- mac_bi_data.boottime = *data;
+- break;
++ mac_bi_data.boottime = *data;
++ break;
+ case BI_MAC_GMTBIAS:
+- mac_bi_data.gmtbias = *data;
+- break;
++ mac_bi_data.gmtbias = *data;
++ break;
+ case BI_MAC_MEMSIZE:
+- mac_bi_data.memsize = *data;
+- break;
++ mac_bi_data.memsize = *data;
++ break;
+ case BI_MAC_CPUID:
+- mac_bi_data.cpuid = *data;
+- break;
+- case BI_MAC_ROMBASE:
+- mac_bi_data.rombase = *data;
+- break;
++ mac_bi_data.cpuid = *data;
++ break;
++ case BI_MAC_ROMBASE:
++ mac_bi_data.rombase = *data;
++ break;
+ default:
+- unknown = 1;
+- }
+- return(unknown);
++ unknown = 1;
++ break;
++ }
++ return unknown;
+ }
+
+ /*
+@@ -155,6 +156,7 @@ int __init mac_parse_bootinfo(const stru
+ static void mac_cache_card_flush(int writeback)
+ {
+ unsigned long flags;
++
+ local_irq_save(flags);
+ via_flush_cache();
+ local_irq_restore(flags);
+@@ -162,28 +164,27 @@ static void mac_cache_card_flush(int wri
+
+ void __init config_mac(void)
+ {
+- if (!MACH_IS_MAC) {
+- printk(KERN_ERR "ERROR: no Mac, but config_mac() called!! \n");
+- }
++ if (!MACH_IS_MAC)
++ printk(KERN_ERR "ERROR: no Mac, but config_mac() called!! \n");
+
+- mach_sched_init = mac_sched_init;
+- mach_init_IRQ = mac_init_IRQ;
+- mach_get_model = mac_get_model;
+- mach_gettimeoffset = mac_gettimeoffset;
++ mach_sched_init = mac_sched_init;
++ mach_init_IRQ = mac_init_IRQ;
++ mach_get_model = mac_get_model;
++ mach_gettimeoffset = mac_gettimeoffset;
+ #warning move to adb/via init
+ #if 0
+- mach_hwclk = mac_hwclk;
++ mach_hwclk = mac_hwclk;
+ #endif
+- mach_set_clock_mmss = mac_set_clock_mmss;
+- mach_reset = mac_reset;
+- mach_halt = mac_poweroff;
+- mach_power_off = mac_poweroff;
++ mach_set_clock_mmss = mac_set_clock_mmss;
++ mach_reset = mac_reset;
++ mach_halt = mac_poweroff;
++ mach_power_off = mac_poweroff;
+ mach_max_dma_address = 0xffffffff;
+ #if 0
+- mach_debug_init = mac_debug_init;
++ mach_debug_init = mac_debug_init;
+ #endif
+ #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
+- mach_beep = mac_mksound;
++ mach_beep = mac_mksound;
+ #endif
+ #ifdef CONFIG_HEARTBEAT
+ #if 0
+@@ -199,21 +200,22 @@ void __init config_mac(void)
+ mac_identify();
+ mac_report_hardware();
+
+- /* AFAIK only the IIci takes a cache card. The IIfx has onboard
+- cache ... someone needs to figure out how to tell if it's on or
+- not. */
++ /*
++ * AFAIK only the IIci takes a cache card. The IIfx has onboard
++ * cache ... someone needs to figure out how to tell if it's on or
++ * not.
++ */
+
+ if (macintosh_config->ident == MAC_MODEL_IICI
+- || macintosh_config->ident == MAC_MODEL_IIFX) {
++ || macintosh_config->ident == MAC_MODEL_IIFX)
+ mach_l2_flush = mac_cache_card_flush;
+- }
+
+ /*
+ * Check for machine specific fixups.
+ */
+
+ #ifdef OLD_NUBUS_CODE
+- nubus_sweep_video();
++ nubus_sweep_video();
+ #endif
+ }
+
+@@ -233,8 +235,7 @@ void __init config_mac(void)
+ struct mac_model *macintosh_config;
+ EXPORT_SYMBOL(macintosh_config);
+
+-static struct mac_model mac_data_table[]=
+-{
++static struct mac_model mac_data_table[] = {
+ /*
+ * We'll pretend to be a Macintosh II, that's pretty safe.
+ */
+@@ -784,12 +785,12 @@ void mac_identify(void)
+ if (!model) {
+ /* no bootinfo model id -> NetBSD booter was used! */
+ /* XXX FIXME: breaks for model > 31 */
+- model=(mac_bi_data.cpuid>>2)&63;
+- printk (KERN_WARNING "No bootinfo model ID, using cpuid instead (hey, use Penguin!)\n");
++ model = (mac_bi_data.cpuid >> 2) & 63;
++ printk(KERN_WARNING "No bootinfo model ID, using cpuid instead (hey, use Penguin!)\n");
+ }
+
+ macintosh_config = mac_data_table;
+- for (m = macintosh_config ; m->ident != -1 ; m++) {
++ for (m = macintosh_config; m->ident != -1; m++) {
+ if (m->ident == model) {
+ macintosh_config = m;
+ break;
+@@ -803,25 +804,25 @@ void mac_identify(void)
+ iop_preinit();
+ mac_debug_init();
+
+- printk (KERN_INFO "Detected Macintosh model: %d \n", model);
++ printk(KERN_INFO "Detected Macintosh model: %d \n", model);
+
+ /*
+ * Report booter data:
+ */
+- printk (KERN_DEBUG " Penguin bootinfo data:\n");
+- printk (KERN_DEBUG " Video: addr 0x%lx row 0x%lx depth %lx dimensions %ld x %ld\n",
++ printk(KERN_DEBUG " Penguin bootinfo data:\n");
++ printk(KERN_DEBUG " Video: addr 0x%lx row 0x%lx depth %lx dimensions %ld x %ld\n",
+ mac_bi_data.videoaddr, mac_bi_data.videorow,
+ mac_bi_data.videodepth, mac_bi_data.dimensions & 0xFFFF,
+ mac_bi_data.dimensions >> 16);
+- printk (KERN_DEBUG " Videological 0x%lx phys. 0x%lx, SCC at 0x%lx \n",
++ printk(KERN_DEBUG " Videological 0x%lx phys. 0x%lx, SCC at 0x%lx \n",
+ mac_bi_data.videological, mac_orig_videoaddr,
+ mac_bi_data.sccbase);
+- printk (KERN_DEBUG " Boottime: 0x%lx GMTBias: 0x%lx \n",
++ printk(KERN_DEBUG " Boottime: 0x%lx GMTBias: 0x%lx \n",
+ mac_bi_data.boottime, mac_bi_data.gmtbias);
+- printk (KERN_DEBUG " Machine ID: %ld CPUid: 0x%lx memory size: 0x%lx \n",
++ printk(KERN_DEBUG " Machine ID: %ld CPUid: 0x%lx memory size: 0x%lx \n",
+ mac_bi_data.id, mac_bi_data.cpuid, mac_bi_data.memsize);
+ #if 0
+- printk ("Ramdisk: addr 0x%lx size 0x%lx\n",
++ printk("Ramdisk: addr 0x%lx size 0x%lx\n",
+ m68k_ramdisk.addr, m68k_ramdisk.size);
+ #endif
+
+@@ -830,22 +831,22 @@ void mac_identify(void)
+ */
+ switch (macintosh_config->scsi_type) {
+ case MAC_SCSI_OLD:
+- MACHW_SET(MAC_SCSI_80);
+- break;
++ MACHW_SET(MAC_SCSI_80);
++ break;
+ case MAC_SCSI_QUADRA:
+ case MAC_SCSI_QUADRA2:
+ case MAC_SCSI_QUADRA3:
+- MACHW_SET(MAC_SCSI_96);
+- if ((macintosh_config->ident == MAC_MODEL_Q900) ||
+- (macintosh_config->ident == MAC_MODEL_Q950))
+- MACHW_SET(MAC_SCSI_96_2);
+- break;
++ MACHW_SET(MAC_SCSI_96);
++ if ((macintosh_config->ident == MAC_MODEL_Q900) ||
++ (macintosh_config->ident == MAC_MODEL_Q950))
++ MACHW_SET(MAC_SCSI_96_2);
++ break;
+ default:
+- printk(KERN_WARNING "config.c: wtf: unknown scsi, using 53c80\n");
+- MACHW_SET(MAC_SCSI_80);
+- break;
+-
++ printk(KERN_WARNING "config.c: wtf: unknown scsi, using 53c80\n");
++ MACHW_SET(MAC_SCSI_80);
++ break;
+ }
++
+ iop_init();
+ via_init();
+ oss_init();
+@@ -860,6 +861,6 @@ void mac_report_hardware(void)
+
+ static void mac_get_model(char *str)
+ {
+- strcpy(str,"Macintosh ");
++ strcpy(str, "Macintosh ");
+ strcat(str, macintosh_config->name);
+ }
+--- linux-m68k-2.6.21.orig/arch/m68k/mac/debug.c
++++ linux-m68k-2.6.21/arch/m68k/mac/debug.c
+@@ -52,7 +52,7 @@ extern void mac_serial_print(const char
+ */
+
+ #ifdef DEBUG_SCREEN
+-static int peng=0, line=0;
++static int peng, line;
+ #endif
+
+ void mac_debugging_short(int pos, short num)
+@@ -74,15 +74,14 @@ void mac_debugging_short(int pos, short
+ }
+
+ /* calculate current offset */
+- pengoffset=(unsigned char *)(mac_videobase+(150+line*2)*mac_rowbytes)
+- +80*peng;
++ pengoffset = (unsigned char *)mac_videobase +
++ (150+line*2) * mac_rowbytes) + 80 * peng;
+
+- pptr=pengoffset;
++ pptr = pengoffset;
+
+- for(i=0;i<8*sizeof(short);i++) /* # of bits */
+- {
++ for (i = 0; i < 8 * sizeof(short); i++) { /* # of bits */
+ /* value mask for bit i, reverse order */
+- *pptr++ = (num & ( 1 << (8*sizeof(short)-i-1) ) ? 0xFF : 0x00);
++ *pptr++ = (num & (1 << (8*sizeof(short)-i-1)) ? 0xFF : 0x00);
+ }
+
+ peng++;
+@@ -115,11 +114,10 @@ void mac_debugging_long(int pos, long ad
+ pengoffset=(unsigned char *)(mac_videobase+(150+line*2)*mac_rowbytes)
+ +80*peng;
+
+- pptr=pengoffset;
++ pptr = pengoffset;
+
+- for(i=0;i<8*sizeof(long);i++) /* # of bits */
+- {
+- *pptr++ = (addr & ( 1 << (8*sizeof(long)-i-1) ) ? 0xFF : 0x00);
++ for (i = 0; i < 8 * sizeof(long); i++) { /* # of bits */
++ *pptr++ = (addr & (1 << (8*sizeof(long)-i-1)) ? 0xFF : 0x00);
+ }
+
+ peng++;
+@@ -136,16 +134,15 @@ void mac_debugging_long(int pos, long ad
+ * TODO: serial debug code
+ */
+
+-struct mac_SCC
+- {
+- u_char cha_b_ctrl;
+- u_char char_dummy1;
+- u_char cha_a_ctrl;
+- u_char char_dummy2;
+- u_char cha_b_data;
+- u_char char_dummy3;
+- u_char cha_a_data;
+- };
++struct mac_SCC {
++ u_char cha_b_ctrl;
++ u_char char_dummy1;
++ u_char cha_a_ctrl;
++ u_char char_dummy2;
++ u_char cha_b_data;
++ u_char char_dummy3;
++ u_char cha_a_data;
++};
+
+ # define scc (*((volatile struct mac_SCC*)mac_bi_data.sccbase))
+
+@@ -158,9 +155,9 @@ int mac_SCC_reset_done;
+ static int scc_port = -1;
+
+ static struct console mac_console_driver = {
+- .name = "debug",
+- .flags = CON_PRINTBUFFER,
+- .index = -1,
++ .name = "debug",
++ .flags = CON_PRINTBUFFER,
++ .index = -1,
+ };
+
+ /*
+@@ -178,8 +175,8 @@ static struct console mac_console_driver
+ * this driver if Mac.
+ */
+
+-void mac_debug_console_write (struct console *co, const char *str,
+- unsigned int count)
++void mac_debug_console_write(struct console *co, const char *str,
++ unsigned int count)
+ {
+ mac_serial_print(str);
+ }
+@@ -190,48 +187,50 @@ void mac_debug_console_write (struct con
+
+ #define uSEC 1
+
+-static inline void mac_sccb_out (char c)
++static inline void mac_sccb_out(char c)
+ {
+- int i;
+- do {
+- for( i = uSEC; i > 0; --i )
++ int i;
++
++ do {
++ for (i = uSEC; i > 0; --i)
++ barrier();
++ } while (!(scc.cha_b_ctrl & 0x04)); /* wait for tx buf empty */
++ for (i = uSEC; i > 0; --i)
+ barrier();
+- } while (!(scc.cha_b_ctrl & 0x04)); /* wait for tx buf empty */
+- for( i = uSEC; i > 0; --i )
+- barrier();
+- scc.cha_b_data = c;
++ scc.cha_b_data = c;
+ }
+
+-static inline void mac_scca_out (char c)
++static inline void mac_scca_out(char c)
+ {
+- int i;
+- do {
+- for( i = uSEC; i > 0; --i )
++ int i;
++
++ do {
++ for (i = uSEC; i > 0; --i)
++ barrier();
++ } while (!(scc.cha_a_ctrl & 0x04)); /* wait for tx buf empty */
++ for (i = uSEC; i > 0; --i)
+ barrier();
+- } while (!(scc.cha_a_ctrl & 0x04)); /* wait for tx buf empty */
+- for( i = uSEC; i > 0; --i )
+- barrier();
+- scc.cha_a_data = c;
+-}
+-
+-void mac_sccb_console_write (struct console *co, const char *str,
+- unsigned int count)
+-{
+- while (count--) {
+- if (*str == '\n')
+- mac_sccb_out( '\r' );
+- mac_sccb_out( *str++ );
+- }
+-}
+-
+-void mac_scca_console_write (struct console *co, const char *str,
+- unsigned int count)
+-{
+- while (count--) {
+- if (*str == '\n')
+- mac_scca_out( '\r' );
+- mac_scca_out( *str++ );
+- }
++ scc.cha_a_data = c;
++}
++
++void mac_sccb_console_write(struct console *co, const char *str,
++ unsigned int count)
++{
++ while (count--) {
++ if (*str == '\n')
++ mac_sccb_out('\r');
++ mac_sccb_out(*str++);
++ }
++}
++
++void mac_scca_console_write(struct console *co, const char *str,
++ unsigned int count)
++{
++ while (count--) {
++ if (*str == '\n')
++ mac_scca_out('\r');
++ mac_scca_out(*str++);
++ }
+ }
+
+
+@@ -239,41 +238,41 @@ void mac_scca_console_write (struct cons
+ * SCC serial ports. They're used by the debugging interface, kgdb, and the
+ * serial console code. */
+ #define SCCB_WRITE(reg,val) \
+- do { \
+- int i; \
+- scc.cha_b_ctrl = (reg); \
+- for( i = uSEC; i > 0; --i ) \
+- barrier(); \
+- scc.cha_b_ctrl = (val); \
+- for( i = uSEC; i > 0; --i ) \
+- barrier(); \
+- } while(0)
++ do { \
++ int i; \
++ scc.cha_b_ctrl = (reg); \
++ for (i = uSEC; i > 0; --i) \
++ barrier(); \
++ scc.cha_b_ctrl = (val); \
++ for (i = uSEC; i > 0; --i) \
++ barrier(); \
++ } while(0)
+
+ #define SCCA_WRITE(reg,val) \
+- do { \
+- int i; \
+- scc.cha_a_ctrl = (reg); \
+- for( i = uSEC; i > 0; --i ) \
+- barrier(); \
+- scc.cha_a_ctrl = (val); \
+- for( i = uSEC; i > 0; --i ) \
+- barrier(); \
+- } while(0)
++ do { \
++ int i; \
++ scc.cha_a_ctrl = (reg); \
++ for (i = uSEC; i > 0; --i) \
++ barrier(); \
++ scc.cha_a_ctrl = (val); \
++ for (i = uSEC; i > 0; --i) \
++ barrier(); \
++ } while(0)
+
+ /* loops_per_jiffy isn't initialized yet, so we can't use udelay(). This does a
+ * delay of ~ 60us. */
+ /* Mac: loops_per_jiffy min. 19000 ^= .5 us; MFPDELAY was 0.6 us*/
+-#define LONG_DELAY() \
+- do { \
+- int i; \
+- for( i = 60*uSEC; i > 0; --i ) \
+- barrier(); \
+- } while(0)
++#define LONG_DELAY() \
++ do { \
++ int i; \
++ for (i = 60*uSEC; i > 0; --i) \
++ barrier(); \
++ } while(0)
+
+ #ifndef CONFIG_SERIAL_CONSOLE
+-static void __init mac_init_scc_port( int cflag, int port )
++static void __init mac_init_scc_port(int cflag, int port)
+ #else
+-void mac_init_scc_port( int cflag, int port )
++void mac_init_scc_port(int cflag, int port)
+ #endif
+ {
+ extern int mac_SCC_reset_done;
+@@ -292,71 +291,71 @@ void mac_init_scc_port( int cflag, int p
+ /* reg12 (BRG low) */
+ { 94, 62, 46, 22, 10, 4, 1, 0, 0 };
+
+- int baud = cflag & CBAUD;
+- int clksrc, clkmode, div, reg3, reg5;
++ int baud = cflag & CBAUD;
++ int clksrc, clkmode, div, reg3, reg5;
+
+- if (cflag & CBAUDEX)
+- baud += B38400;
+- if (baud < B1200 || baud > B38400+2)
+- baud = B9600; /* use default 9600bps for non-implemented rates */
+- baud -= B1200; /* tables starts at 1200bps */
+-
+- clksrc = clksrc_table[baud];
+- clkmode = clkmode_table[baud];
+- div = div_table[baud];
+-
+- reg3 = (((cflag & CSIZE) == CS8) ? 0xc0 : 0x40);
+- reg5 = (((cflag & CSIZE) == CS8) ? 0x60 : 0x20) | 0x82 /* assert DTR/RTS */;
+-
+- if (port == 1) {
+- (void)scc.cha_b_ctrl; /* reset reg pointer */
+- SCCB_WRITE( 9, 0xc0 ); /* reset */
+- LONG_DELAY(); /* extra delay after WR9 access */
+- SCCB_WRITE( 4, (cflag & PARENB) ? ((cflag & PARODD) ? 0x01 : 0x03) : 0 |
+- 0x04 /* 1 stopbit */ |
+- clkmode );
+- SCCB_WRITE( 3, reg3 );
+- SCCB_WRITE( 5, reg5 );
+- SCCB_WRITE( 9, 0 ); /* no interrupts */
+- LONG_DELAY(); /* extra delay after WR9 access */
+- SCCB_WRITE( 10, 0 ); /* NRZ mode */
+- SCCB_WRITE( 11, clksrc ); /* main clock source */
+- SCCB_WRITE( 12, div ); /* BRG value */
+- SCCB_WRITE( 13, 0 ); /* BRG high byte */
+- SCCB_WRITE( 14, 1 );
+- SCCB_WRITE( 3, reg3 | 1 );
+- SCCB_WRITE( 5, reg5 | 8 );
+- } else if (port == 0) {
+- (void)scc.cha_a_ctrl; /* reset reg pointer */
+- SCCA_WRITE( 9, 0xc0 ); /* reset */
+- LONG_DELAY(); /* extra delay after WR9 access */
+- SCCA_WRITE( 4, (cflag & PARENB) ? ((cflag & PARODD) ? 0x01 : 0x03) : 0 |
++ if (cflag & CBAUDEX)
++ baud += B38400;
++ if (baud < B1200 || baud > B38400+2)
++ baud = B9600; /* use default 9600bps for non-implemented rates */
++ baud -= B1200; /* tables starts at 1200bps */
++
++ clksrc = clksrc_table[baud];
++ clkmode = clkmode_table[baud];
++ div = div_table[baud];
++
++ reg3 = (((cflag & CSIZE) == CS8) ? 0xc0 : 0x40);
++ reg5 = (((cflag & CSIZE) == CS8) ? 0x60 : 0x20) | 0x82 /* assert DTR/RTS */;
++
++ if (port == 1) {
++ (void)scc.cha_b_ctrl; /* reset reg pointer */
++ SCCB_WRITE(9, 0xc0); /* reset */
++ LONG_DELAY(); /* extra delay after WR9 access */
++ SCCB_WRITE(4, (cflag & PARENB) ? ((cflag & PARODD) ? 0x01 : 0x03) : 0 |
++ 0x04 /* 1 stopbit */ |
++ clkmode);
++ SCCB_WRITE(3, reg3);
++ SCCB_WRITE(5, reg5);
++ SCCB_WRITE(9, 0); /* no interrupts */
++ LONG_DELAY(); /* extra delay after WR9 access */
++ SCCB_WRITE(10, 0); /* NRZ mode */
++ SCCB_WRITE(11, clksrc); /* main clock source */
++ SCCB_WRITE(12, div); /* BRG value */
++ SCCB_WRITE(13, 0); /* BRG high byte */
++ SCCB_WRITE(14, 1);
++ SCCB_WRITE(3, reg3 | 1);
++ SCCB_WRITE(5, reg5 | 8);
++ } else if (port == 0) {
++ (void)scc.cha_a_ctrl; /* reset reg pointer */
++ SCCA_WRITE(9, 0xc0); /* reset */
++ LONG_DELAY(); /* extra delay after WR9 access */
++ SCCA_WRITE(4, (cflag & PARENB) ? ((cflag & PARODD) ? 0x01 : 0x03) : 0 |
+ 0x04 /* 1 stopbit */ |
+- clkmode );
+- SCCA_WRITE( 3, reg3 );
+- SCCA_WRITE( 5, reg5 );
+- SCCA_WRITE( 9, 0 ); /* no interrupts */
+- LONG_DELAY(); /* extra delay after WR9 access */
+- SCCA_WRITE( 10, 0 ); /* NRZ mode */
+- SCCA_WRITE( 11, clksrc ); /* main clock source */
+- SCCA_WRITE( 12, div ); /* BRG value */
+- SCCA_WRITE( 13, 0 ); /* BRG high byte */
+- SCCA_WRITE( 14, 1 );
+- SCCA_WRITE( 3, reg3 | 1 );
+- SCCA_WRITE( 5, reg5 | 8 );
+- }
++ clkmode);
++ SCCA_WRITE(3, reg3);
++ SCCA_WRITE(5, reg5);
++ SCCA_WRITE(9, 0); /* no interrupts */
++ LONG_DELAY(); /* extra delay after WR9 access */
++ SCCA_WRITE(10, 0); /* NRZ mode */
++ SCCA_WRITE(11, clksrc); /* main clock source */
++ SCCA_WRITE(12, div); /* BRG value */
++ SCCA_WRITE(13, 0); /* BRG high byte */
++ SCCA_WRITE(14, 1);
++ SCCA_WRITE(3, reg3 | 1);
++ SCCA_WRITE(5, reg5 | 8);
++ }
+
+- mac_SCC_reset_done = 1;
+- mac_SCC_init_done = 1;
++ mac_SCC_reset_done = 1;
++ mac_SCC_init_done = 1;
+ }
+ #endif /* DEBUG_SERIAL */
+
+-void mac_init_scca_port( int cflag )
++void mac_init_scca_port(int cflag)
+ {
+ mac_init_scc_port(cflag, 0);
+ }
+
+-void mac_init_sccb_port( int cflag )
++void mac_init_sccb_port(int cflag)
+ {
+ mac_init_scc_port(cflag, 1);
+ }
+@@ -364,34 +363,26 @@ void mac_init_sccb_port( int cflag )
+ void __init mac_debug_init(void)
+ {
+ #ifdef DEBUG_SERIAL
+- if ( !strcmp( m68k_debug_device, "ser" )
+- || !strcmp( m68k_debug_device, "ser1" )) {
+- /* Mac modem port */
+- mac_init_scc_port( B9600|CS8, 0 );
+- mac_console_driver.write = mac_scca_console_write;
+- scc_port = 0;
+- }
+- else if (!strcmp( m68k_debug_device, "ser2" )) {
+- /* Mac printer port */
+- mac_init_scc_port( B9600|CS8, 1 );
+- mac_console_driver.write = mac_sccb_console_write;
+- scc_port = 1;
+- }
++ if (!strcmp(m68k_debug_device, "ser") ||
++ !strcmp(m68k_debug_device, "ser1")) {
++ /* Mac modem port */
++ mac_init_scc_port(B9600|CS8, 0);
++ mac_console_driver.write = mac_scca_console_write;
++ scc_port = 0;
++ } else if (!strcmp(m68k_debug_device, "ser2")) {
++ /* Mac printer port */
++ mac_init_scc_port(B9600|CS8, 1);
++ mac_console_driver.write = mac_sccb_console_write;
++ scc_port = 1;
++ }
+ #endif
+ #ifdef DEBUG_HEADS
+- if ( !strcmp( m68k_debug_device, "scn" )
+- || !strcmp( m68k_debug_device, "con" )) {
+- /* display, using head.S console routines */
+- mac_console_driver.write = mac_debug_console_write;
+- }
++ if (!strcmp(m68k_debug_device, "scn") ||
++ !strcmp(m68k_debug_device, "con")) {
++ /* display, using head.S console routines */
++ mac_console_driver.write = mac_debug_console_write;
++ }
+ #endif
+- if (mac_console_driver.write)
+- register_console(&mac_console_driver);
++ if (mac_console_driver.write)
++ register_console(&mac_console_driver);
+ }
+-
+-/*
+- * Local variables:
+- * c-indent-level: 4
+- * tab-width: 8
+- * End:
+- */
+--- linux-m68k-2.6.21.orig/arch/m68k/q40/config.c
++++ linux-m68k-2.6.21/arch/m68k/q40/config.c
+@@ -35,35 +35,35 @@
+ #include <asm/machdep.h>
+ #include <asm/q40_master.h>
+
+-extern irqreturn_t q40_process_int (int level, struct pt_regs *regs);
+-extern void q40_init_IRQ (void);
++extern irqreturn_t q40_process_int(int level, struct pt_regs *regs);
++extern void q40_init_IRQ(void);
+ static void q40_get_model(char *model);
+ static int q40_get_hardware_list(char *buffer);
+ extern void q40_sched_init(irq_handler_t handler);
+
+-extern unsigned long q40_gettimeoffset (void);
+-extern int q40_hwclk (int, struct rtc_time *);
+-extern unsigned int q40_get_ss (void);
+-extern int q40_set_clock_mmss (unsigned long);
++extern unsigned long q40_gettimeoffset(void);
++extern int q40_hwclk(int, struct rtc_time *);
++extern unsigned int q40_get_ss(void);
++extern int q40_set_clock_mmss(unsigned long);
+ static int q40_get_rtc_pll(struct rtc_pll_info *pll);
+ static int q40_set_rtc_pll(struct rtc_pll_info *pll);
+-extern void q40_reset (void);
++extern void q40_reset(void);
+ void q40_halt(void);
+ extern void q40_waitbut(void);
+-void q40_set_vectors (void);
++void q40_set_vectors(void);
+
+-extern void q40_mksound(unsigned int /*freq*/, unsigned int /*ticks*/ );
++extern void q40_mksound(unsigned int /*freq*/, unsigned int /*ticks*/);
+
+ extern char m68k_debug_device[];
+ static void q40_mem_console_write(struct console *co, const char *b,
+- unsigned int count);
++ unsigned int count);
+
+ extern int ql_ticks;
+
+ static struct console q40_console_driver = {
+- .name = "debug",
+- .flags = CON_PRINTBUFFER,
+- .index = -1,
++ .name = "debug",
++ .flags = CON_PRINTBUFFER,
++ .index = -1,
+ };
+
+
+@@ -74,150 +74,157 @@ static int _cpleft;
+ static void q40_mem_console_write(struct console *co, const char *s,
+ unsigned int count)
+ {
+- char *p=(char *)s;
++ const char *p = s;
+
+- if (count<_cpleft)
+- while (count-- >0){
+- *q40_mem_cptr=*p++;
+- q40_mem_cptr+=4;
+- _cpleft--;
+- }
++ if (count < _cpleft) {
++ while (count-- > 0) {
++ *q40_mem_cptr = *p++;
++ q40_mem_cptr += 4;
++ _cpleft--;
++ }
++ }
+ }
++
+ #if 0
+ void printq40(char *str)
+ {
+- int l=strlen(str);
+- char *p=q40_mem_cptr;
++ int l = strlen(str);
++ char *p = q40_mem_cptr;
+
+- while (l-- >0 && _cpleft-- >0)
+- {
+- *p=*str++;
+- p+=4;
+- }
+- q40_mem_cptr=p;
++ while (l-- > 0 && _cpleft-- > 0) {
++ *p = *str++;
++ p += 4;
++ }
++ q40_mem_cptr = p;
+ }
+ #endif
+
+-static int halted=0;
++static int halted;
+
+ #ifdef CONFIG_HEARTBEAT
+ static void q40_heartbeat(int on)
+ {
+- if (halted) return;
++ if (halted)
++ return;
+
+- if (on)
+- Q40_LED_ON();
+- else
+- Q40_LED_OFF();
++ if (on)
++ Q40_LED_ON();
++ else
++ Q40_LED_OFF();
+ }
+ #endif
+
+ void q40_reset(void)
+ {
+- halted=1;
+- printk ("\n\n*******************************************\n"
++ halted = 1;
++ printk("\n\n*******************************************\n"
+ "Called q40_reset : press the RESET button!! \n"
+ "*******************************************\n");
+ Q40_LED_ON();
+- while(1) ;
++ while (1)
++ ;
+ }
+ void q40_halt(void)
+ {
+- halted=1;
+- printk ("\n\n*******************\n"
+- " Called q40_halt\n"
+- "*******************\n");
++ halted = 1;
++ printk("\n\n*******************\n"
++ " Called q40_halt\n"
++ "*******************\n");
+ Q40_LED_ON();
+- while(1) ;
++ while (1)
++ ;
+ }
+
+ static void q40_get_model(char *model)
+ {
+- sprintf(model, "Q40");
++ sprintf(model, "Q40");
+ }
+
+ /* No hardware options on Q40? */
+
+ static int q40_get_hardware_list(char *buffer)
+ {
+- *buffer = '\0';
+- return 0;
++ *buffer = '\0';
++ return 0;
+ }
+
+-static unsigned int serports[]={0x3f8,0x2f8,0x3e8,0x2e8,0};
++static unsigned int serports[] =
++{
++ 0x3f8,0x2f8,0x3e8,0x2e8,0
++};
+ void q40_disable_irqs(void)
+ {
+- unsigned i,j;
++ unsigned i, j;
+
+- j=0;
+- while((i=serports[j++])) outb(0,i+UART_IER);
+- master_outb(0,EXT_ENABLE_REG);
+- master_outb(0,KEY_IRQ_ENABLE_REG);
++ j = 0;
++ while ((i = serports[j++]))
++ outb(0, i + UART_IER);
++ master_outb(0, EXT_ENABLE_REG);
++ master_outb(0, KEY_IRQ_ENABLE_REG);
+ }
+
+ void __init config_q40(void)
+ {
+- mach_sched_init = q40_sched_init;
++ mach_sched_init = q40_sched_init;
+
+- mach_init_IRQ = q40_init_IRQ;
+- mach_gettimeoffset = q40_gettimeoffset;
+- mach_hwclk = q40_hwclk;
+- mach_get_ss = q40_get_ss;
+- mach_get_rtc_pll = q40_get_rtc_pll;
+- mach_set_rtc_pll = q40_set_rtc_pll;
+- mach_set_clock_mmss = q40_set_clock_mmss;
+-
+- mach_reset = q40_reset;
+- mach_get_model = q40_get_model;
+- mach_get_hardware_list = q40_get_hardware_list;
++ mach_init_IRQ = q40_init_IRQ;
++ mach_gettimeoffset = q40_gettimeoffset;
++ mach_hwclk = q40_hwclk;
++ mach_get_ss = q40_get_ss;
++ mach_get_rtc_pll = q40_get_rtc_pll;
++ mach_set_rtc_pll = q40_set_rtc_pll;
++ mach_set_clock_mmss = q40_set_clock_mmss;
++
++ mach_reset = q40_reset;
++ mach_get_model = q40_get_model;
++ mach_get_hardware_list = q40_get_hardware_list;
+
+ #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
+- mach_beep = q40_mksound;
++ mach_beep = q40_mksound;
+ #endif
+ #ifdef CONFIG_HEARTBEAT
+- mach_heartbeat = q40_heartbeat;
++ mach_heartbeat = q40_heartbeat;
+ #endif
+- mach_halt = q40_halt;
++ mach_halt = q40_halt;
+
+- /* disable a few things that SMSQ might have left enabled */
+- q40_disable_irqs();
++ /* disable a few things that SMSQ might have left enabled */
++ q40_disable_irqs();
+
+- /* no DMA at all, but ide-scsi requires it.. make sure
+- * all physical RAM fits into the boundary - otherwise
+- * allocator may play costly and useless tricks */
+- mach_max_dma_address = 1024*1024*1024;
+-
+- /* useful for early debugging stages - writes kernel messages into SRAM */
+- if (!strncmp( m68k_debug_device,"mem",3 ))
+- {
+- /*printk("using NVRAM debug, q40_mem_cptr=%p\n",q40_mem_cptr);*/
+- _cpleft=2000-((long)q40_mem_cptr-0xff020000)/4;
+- q40_console_driver.write = q40_mem_console_write;
+- register_console(&q40_console_driver);
+- }
++ /* no DMA at all, but ide-scsi requires it.. make sure
++ * all physical RAM fits into the boundary - otherwise
++ * allocator may play costly and useless tricks */
++ mach_max_dma_address = 1024*1024*1024;
++
++ /* useful for early debugging stages - writes kernel messages into SRAM */
++ if (!strncmp( m68k_debug_device,"mem", 3)) {
++ /*printk("using NVRAM debug, q40_mem_cptr=%p\n",q40_mem_cptr);*/
++ _cpleft = 2000 - ((long)q40_mem_cptr-0xff020000) / 4;
++ q40_console_driver.write = q40_mem_console_write;
++ register_console(&q40_console_driver);
++ }
+ }
+
+
+ int q40_parse_bootinfo(const struct bi_record *rec)
+ {
+- return 1;
++ return 1;
+ }
+
+
+-static inline unsigned char bcd2bin (unsigned char b)
++static inline unsigned char bcd2bin(unsigned char b)
+ {
+- return ((b>>4)*10 + (b&15));
++ return (b >> 4) * 10 + (b & 15);
+ }
+
+-static inline unsigned char bin2bcd (unsigned char b)
++static inline unsigned char bin2bcd(unsigned char b)
+ {
+- return (((b/10)*16) + (b%10));
++ return (b / 10) * 16 + (b % 10);
+ }
+
+
+-unsigned long q40_gettimeoffset (void)
++unsigned long q40_gettimeoffset(void)
+ {
+- return 5000*(ql_ticks!=0);
++ return 5000 * (ql_ticks != 0);
+ }
+
+
+@@ -238,9 +245,9 @@ unsigned long q40_gettimeoffset (void)
+
+ int q40_hwclk(int op, struct rtc_time *t)
+ {
+- if (op)
+- { /* Write.... */
+- Q40_RTC_CTRL |= Q40_RTC_WRITE;
++ if (op) {
++ /* Write.... */
++ Q40_RTC_CTRL |= Q40_RTC_WRITE;
+
+ Q40_RTC_SECS = bin2bcd(t->tm_sec);
+ Q40_RTC_MINS = bin2bcd(t->tm_min);
+@@ -251,25 +258,23 @@ int q40_hwclk(int op, struct rtc_time *t
+ if (t->tm_wday >= 0)
+ Q40_RTC_DOW = bin2bcd(t->tm_wday+1);
+
+- Q40_RTC_CTRL &= ~(Q40_RTC_WRITE);
+- }
+- else
+- { /* Read.... */
+- Q40_RTC_CTRL |= Q40_RTC_READ;
+-
+- t->tm_year = bcd2bin (Q40_RTC_YEAR);
+- t->tm_mon = bcd2bin (Q40_RTC_MNTH)-1;
+- t->tm_mday = bcd2bin (Q40_RTC_DATE);
+- t->tm_hour = bcd2bin (Q40_RTC_HOUR);
+- t->tm_min = bcd2bin (Q40_RTC_MINS);
+- t->tm_sec = bcd2bin (Q40_RTC_SECS);
+-
+- Q40_RTC_CTRL &= ~(Q40_RTC_READ);
+-
+- if (t->tm_year < 70)
+- t->tm_year += 100;
+- t->tm_wday = bcd2bin(Q40_RTC_DOW)-1;
+-
++ Q40_RTC_CTRL &= ~(Q40_RTC_WRITE);
++ } else {
++ /* Read.... */
++ Q40_RTC_CTRL |= Q40_RTC_READ;
++
++ t->tm_year = bcd2bin (Q40_RTC_YEAR);
++ t->tm_mon = bcd2bin (Q40_RTC_MNTH)-1;
++ t->tm_mday = bcd2bin (Q40_RTC_DATE);
++ t->tm_hour = bcd2bin (Q40_RTC_HOUR);
++ t->tm_min = bcd2bin (Q40_RTC_MINS);
++ t->tm_sec = bcd2bin (Q40_RTC_SECS);
++
++ Q40_RTC_CTRL &= ~(Q40_RTC_READ);
++
++ if (t->tm_year < 70)
++ t->tm_year += 100;
++ t->tm_wday = bcd2bin(Q40_RTC_DOW)-1;
+ }
+
+ return 0;
+@@ -285,29 +290,25 @@ unsigned int q40_get_ss(void)
+ * clock is out by > 30 minutes. Logic lifted from atari code.
+ */
+
+-int q40_set_clock_mmss (unsigned long nowtime)
++int q40_set_clock_mmss(unsigned long nowtime)
+ {
+ int retval = 0;
+ short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60;
+
+ int rtc_minutes;
+
++ rtc_minutes = bcd2bin(Q40_RTC_MINS);
+
+- rtc_minutes = bcd2bin (Q40_RTC_MINS);
+-
+- if ((rtc_minutes < real_minutes
+- ? real_minutes - rtc_minutes
+- : rtc_minutes - real_minutes) < 30)
+- {
+- Q40_RTC_CTRL |= Q40_RTC_WRITE;
++ if ((rtc_minutes < real_minutes ?
++ real_minutes - rtc_minutes :
++ rtc_minutes - real_minutes) < 30) {
++ Q40_RTC_CTRL |= Q40_RTC_WRITE;
+ Q40_RTC_MINS = bin2bcd(real_minutes);
+ Q40_RTC_SECS = bin2bcd(real_seconds);
+ Q40_RTC_CTRL &= ~(Q40_RTC_WRITE);
+- }
+- else
++ } else
+ retval = -1;
+
+-
+ return retval;
+ }
+
+@@ -318,21 +319,23 @@ int q40_set_clock_mmss (unsigned long no
+
+ static int q40_get_rtc_pll(struct rtc_pll_info *pll)
+ {
+- int tmp=Q40_RTC_CTRL;
++ int tmp = Q40_RTC_CTRL;
++
+ pll->pll_value = tmp & Q40_RTC_PLL_MASK;
+ if (tmp & Q40_RTC_PLL_SIGN)
+ pll->pll_value = -pll->pll_value;
+- pll->pll_max=31;
+- pll->pll_min=-31;
+- pll->pll_posmult=512;
+- pll->pll_negmult=256;
+- pll->pll_clock=125829120;
++ pll->pll_max = 31;
++ pll->pll_min = -31;
++ pll->pll_posmult = 512;
++ pll->pll_negmult = 256;
++ pll->pll_clock = 125829120;
++
+ return 0;
+ }
+
+ static int q40_set_rtc_pll(struct rtc_pll_info *pll)
+ {
+- if (!pll->pll_ctrl){
++ if (!pll->pll_ctrl) {
+ /* the docs are a bit unclear so I am doublesetting */
+ /* RTC_WRITE here ... */
+ int tmp = (pll->pll_value & 31) | (pll->pll_value<0 ? 32 : 0) |
+--- linux-m68k-2.6.21.orig/arch/m68k/sun3x/prom.c
++++ linux-m68k-2.6.21/arch/m68k/sun3x/prom.c
+@@ -34,43 +34,43 @@ e_vector *sun3x_prom_vbr;
+ /* Handle returning to the prom */
+ void sun3x_halt(void)
+ {
+- unsigned long flags;
++ unsigned long flags;
+
+- /* Disable interrupts while we mess with things */
+- local_irq_save(flags);
++ /* Disable interrupts while we mess with things */
++ local_irq_save(flags);
+
+- /* Restore prom vbr */
+- __asm__ volatile ("movec %0,%%vbr" : : "r" ((void*)sun3x_prom_vbr));
++ /* Restore prom vbr */
++ asm volatile ("movec %0,%%vbr" : : "r" ((void*)sun3x_prom_vbr));
+
+- /* Restore prom NMI clock */
+-// sun3x_disable_intreg(5);
+- sun3_enable_irq(7);
++ /* Restore prom NMI clock */
++// sun3x_disable_intreg(5);
++ sun3_enable_irq(7);
+
+- /* Let 'er rip */
+- __asm__ volatile ("trap #14" : : );
++ /* Let 'er rip */
++ asm volatile ("trap #14");
+
+- /* Restore everything */
+- sun3_disable_irq(7);
+- sun3_enable_irq(5);
++ /* Restore everything */
++ sun3_disable_irq(7);
++ sun3_enable_irq(5);
+
+- __asm__ volatile ("movec %0,%%vbr" : : "r" ((void*)vectors));
+- local_irq_restore(flags);
++ asm volatile ("movec %0,%%vbr" : : "r" ((void*)vectors));
++ local_irq_restore(flags);
+ }
+
+ void sun3x_reboot(void)
+ {
+- /* This never returns, don't bother saving things */
+- local_irq_disable();
++ /* This never returns, don't bother saving things */
++ local_irq_disable();
+
+- /* Restore prom vbr */
+- __asm__ volatile ("movec %0,%%vbr" : : "r" ((void*)sun3x_prom_vbr));
++ /* Restore prom vbr */
++ asm volatile ("movec %0,%%vbr" : : "r" ((void*)sun3x_prom_vbr));
+
+- /* Restore prom NMI clock */
+- sun3_disable_irq(5);
+- sun3_enable_irq(7);
++ /* Restore prom NMI clock */
++ sun3_disable_irq(5);
++ sun3_enable_irq(7);
+
+- /* Let 'er rip */
+- (*romvec->pv_reboot)("vmlinux");
++ /* Let 'er rip */
++ (*romvec->pv_reboot)("vmlinux");
+ }
+
+ extern char m68k_debug_device[];
+@@ -78,54 +78,52 @@ extern char m68k_debug_device[];
+ static void sun3x_prom_write(struct console *co, const char *s,
+ unsigned int count)
+ {
+- while (count--) {
+- if (*s == '\n')
+- sun3x_putchar('\r');
+- sun3x_putchar(*s++);
+- }
++ while (count--) {
++ if (*s == '\n')
++ sun3x_putchar('\r');
++ sun3x_putchar(*s++);
++ }
+ }
+
+ /* debug console - write-only */
+
+ static struct console sun3x_debug = {
+- .name = "debug",
+- .write = sun3x_prom_write,
+- .flags = CON_PRINTBUFFER,
+- .index = -1,
++ .name = "debug",
++ .write = sun3x_prom_write,
++ .flags = CON_PRINTBUFFER,
++ .index = -1,
+ };
+
+ void sun3x_prom_init(void)
+ {
+- /* Read the vector table */
++ /* Read the vector table */
+
+- sun3x_putchar = *(void (**)(int)) (SUN3X_P_PUTCHAR);
+- sun3x_getchar = *(int (**)(void)) (SUN3X_P_GETCHAR);
+- sun3x_mayget = *(int (**)(void)) (SUN3X_P_MAYGET);
+- sun3x_mayput = *(int (**)(int)) (SUN3X_P_MAYPUT);
+- sun3x_prom_reboot = *(void (**)(void)) (SUN3X_P_REBOOT);
+- sun3x_prom_abort = *(e_vector *) (SUN3X_P_ABORT);
+- romvec = (struct linux_romvec *)SUN3X_PROM_BASE;
+-
+- idprom_init();
+-
+- if(!((idprom->id_machtype & SM_ARCH_MASK) == SM_SUN3X)) {
+- printk("Warning: machine reports strange type %02x\n",
+- idprom->id_machtype);
+- printk("Pretending it's a 3/80, but very afraid...\n");
+- idprom->id_machtype = SM_SUN3X | SM_3_80;
+- }
+-
+- /* point trap #14 at abort.
+- * XXX this is futile since we restore the vbr first - oops
+- */
+- vectors[VEC_TRAP14] = sun3x_prom_abort;
+-
+- /* If debug=prom was specified, start the debug console */
+-
+- if (!strcmp(m68k_debug_device, "prom"))
+- register_console(&sun3x_debug);
++ sun3x_putchar = *(void (**)(int)) (SUN3X_P_PUTCHAR);
++ sun3x_getchar = *(int (**)(void)) (SUN3X_P_GETCHAR);
++ sun3x_mayget = *(int (**)(void)) (SUN3X_P_MAYGET);
++ sun3x_mayput = *(int (**)(int)) (SUN3X_P_MAYPUT);
++ sun3x_prom_reboot = *(void (**)(void)) (SUN3X_P_REBOOT);
++ sun3x_prom_abort = *(e_vector *) (SUN3X_P_ABORT);
++ romvec = (struct linux_romvec *)SUN3X_PROM_BASE;
++
++ idprom_init();
++
++ if (!((idprom->id_machtype & SM_ARCH_MASK) == SM_SUN3X)) {
++ printk("Warning: machine reports strange type %02x\n",
++ idprom->id_machtype);
++ printk("Pretending it's a 3/80, but very afraid...\n");
++ idprom->id_machtype = SM_SUN3X | SM_3_80;
++ }
++
++ /* point trap #14 at abort.
++ * XXX this is futile since we restore the vbr first - oops
++ */
++ vectors[VEC_TRAP14] = sun3x_prom_abort;
+
++ /* If debug=prom was specified, start the debug console */
+
++ if (!strcmp(m68k_debug_device, "prom"))
++ register_console(&sun3x_debug);
+ }
+
+ /* some prom functions to export */
+@@ -141,7 +139,6 @@ int prom_getbool (int node, char *prop)
+
+ void prom_printf(char *fmt, ...)
+ {
+-
+ }
+
+ void prom_halt (void)
+@@ -159,7 +156,7 @@ prom_get_idprom(char *idbuf, int num_byt
+ int i;
+
+ /* make a copy of the idprom structure */
+- for(i = 0; i < num_bytes; i++)
++ for (i = 0; i < num_bytes; i++)
+ idbuf[i] = ((char *)SUN3X_IDPROM)[i];
+
+ return idbuf[0];