m68k patches should be applied for m68k only

svn path=/dists/trunk/linux-2.6/; revision=10095
This commit is contained in:
Christian T. Steigies 2008-01-13 14:32:13 +00:00
parent 6141cb3a19
commit 50ea01cf50
25 changed files with 7259 additions and 43 deletions

View File

@ -1,23 +0,0 @@
Subject: [PATCH] Local m68k changes
Local m68k changes, _NEVER_ to be submitted upstream:
- Force ARCH to be m68k
- Append `-m68k' to EXTRAVERSION
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> for m68k CVS only
---
Makefile | 2 +-
localversion.m68k | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
--- a/Makefile
+++ b/Makefile
@@ -190,7 +190,7 @@ SUBARCH := $(shell uname -m | sed -e s/i
# Default value for CROSS_COMPILE is not to prefix executables
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
-ARCH ?= $(SUBARCH)
+ARCH ?= m68k
CROSS_COMPILE ?=
# Architecture as present in compile.h

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,145 @@
To: linus, alan
Cc: lkml
Subject: [PATCH] MC68681 DUART
From: Linux/m68k legacy
MC68681 DUART register definitions for the Amiga MultiFace III serial driver.
---
drivers/char/mc68681.h | 131 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 131 insertions(+)
--- /dev/null
+++ b/drivers/char/mc68681.h
@@ -0,0 +1,131 @@
+#ifndef _MC68681_H_
+#define _MC68681_H_
+
+/*
+ * This describes an MC68681 DUART. It has almost only overlayed registers, which
+ * the structure very ugly.
+ * Note that the ri-register isn't really a register of the duart but a kludge of bsc
+ * to make the ring indicator available.
+ *
+ * The data came from the MFC-31-Developer Kit (from Ralph Seidel,
+ * zodiac@darkness.gun.de) and the data sheet of Phillip's clone device (SCN68681)
+ * (from Richard Hirst, srh@gpt.co.uk)
+ *
+ * 11.11.95 copyright Joerg Dorchain (dorchain@mpi-sb.mpg.de)
+ *
+ */
+
+struct duarthalf {
+union {
+volatile u_char mr1; /* rw */
+volatile u_char mr2; /* rw */
+} mr;
+volatile u_char ri; /* special, read */
+union {
+volatile u_char sr; /* read */
+volatile u_char csr; /* write */
+} sr_csr;
+u_char pad1;
+volatile u_char cr; /* write */
+u_char pad2;
+union {
+volatile u_char rhr; /* read */
+volatile u_char thr; /* write */
+} hr;
+u_char pad3;
+};
+
+struct duart {
+struct duarthalf pa;
+union {
+volatile u_char ipcr; /* read */
+volatile u_char acr; /* write */
+} ipcr_acr;
+u_char pad1;
+union {
+volatile u_char isr; /* read */
+volatile u_char imr; /* write */
+} ir;
+u_char pad2;
+volatile u_char ctu;
+u_char pad3;
+volatile u_char ctl;
+u_char pad4;
+struct duarthalf pb;
+volatile u_char ivr;
+u_char pad5;
+union {
+volatile u_char ipr; /* read */
+volatile u_char opcr; /* write */
+} ipr_opcr;
+u_char pad6;
+union {
+volatile u_char start; /* read */
+volatile u_char sopc; /* write */
+} start_sopc;
+u_char pad7;
+union {
+volatile u_char stop; /* read */
+volatile u_char ropc; /* write */
+} stop_ropc;
+u_char pad8;
+};
+
+#define MR1_BITS 3
+#define MR1_5BITS 0
+#define MR1_6BITS 1
+#define MR1_7BITS 2
+#define MR1_8BITS 3
+
+#define MR1_PARITY_ODD 4
+
+#define MR1_PARITY 24
+#define MR1_PARITY_WITH 0
+#define MR1_PARITY_FORCE 8
+#define MR1_PARITY_NO 16
+#define MR1_PARITY_MULTIDROP 24
+
+#define MR1_ERROR_BLOCK 32
+#define MR1_FFULL_IRQ 64
+#define MR1_RxRTS_ON 128
+
+#define MR2_STOPS 15
+#define MR2_1STOP 7
+#define MR2_2STOP 15
+
+#define MR2_CTS_ON 16
+#define MR2_TxRTS_ON 32
+
+#define MR2_MODE 192
+#define MR2_NORMAL 0
+#define MR2_ECHO 64
+#define MR2_LOCALLOOP 128
+#define MR2_REMOTELOOP 192
+
+#define CR_RXCOMMAND 3
+#define CR_NONE 0
+#define CR_RX_ON 1
+#define CR_RX_OFF 2
+#define CR_TXCOMMAND 12
+#define CR_TX_ON 4
+#define CR_TX_OFF 8
+#define CR_MISC 112
+#define CR_RESET_MR 16
+#define CR_RESET_RX 32
+#define CR_RESET_TX 48
+#define CR_RESET_ERR 64
+#define CR_RESET_BREAK 80
+#define CR_START_BREAK 96
+#define CR_STOP_BREAK 112
+
+#define SR_RXRDY 1
+#define SR_FFULL 2
+#define SR_TXRDY 4
+#define SR_TXEMPT 8
+#define SR_OVERRUN 16
+#define SR_PARITY 32
+#define SR_FRAMING 64
+#define SR_BREAK 128
+
+
+#endif

View File

@ -0,0 +1,20 @@
To: linus, alan
Cc: lkml
Subject: [PATCH] M68k PCI
First steps in making m68k PCI support compilable again
---
arch/m68k/kernel/bios32.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/m68k/kernel/bios32.c
+++ b/arch/m68k/kernel/bios32.c
@@ -284,7 +284,7 @@ static void __init layout_bus(struct pci
DBG_DEVS(("layout_bus: starting bus %d\n", bus->number));
- if (!bus->devices && !bus->children)
+ if (list_empty(&bus->devices) && list_empty(&bus->children))
return;
/*

View File

@ -0,0 +1,22 @@
To: linus, akpm, B.Zolnierkiewicz@elka.pw.edu.pl
Cc: lkml
Subject: [PATCH] m68k IDE compiler bug
From: Roman Zippel <zippel@linux-m68k.org>
IDE: Avoid compiler bug in gcc 3.2 (from Roman Zippel)
---
include/linux/ide.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -502,7 +502,7 @@ typedef union {
* sense_key : Sense key of the last failed packet command
*/
typedef union {
- unsigned all :8;
+ u8 all;
struct {
#if defined(__LITTLE_ENDIAN_BITFIELD)
unsigned ili :1;

View File

@ -0,0 +1,29 @@
To: linus, akpm
Cc: lkml
Subject: [PATCH] M68k SERIAL_PORT_DFNS only if CONFIG_ISA
From: Kars de Jong <jongk@linux-m68k.org>
M68k serial: Only define SERIAL_PORT_DFNS when CONFIG_ISA is defined. Otherwise
the first 4 slots in the 8250 driver are unavailable on non-ISA machines.
Signed-off-by: Kars de Jong <jongk@linux-m68k.org>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
include/asm-m68k/serial.h | 2 ++
1 file changed, 2 insertions(+)
--- a/include/asm-m68k/serial.h
+++ b/include/asm-m68k/serial.h
@@ -25,9 +25,11 @@
#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
#endif
+#ifdef CONFIG_ISA
#define SERIAL_PORT_DFNS \
/* UART CLK PORT IRQ FLAGS */ \
{ 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS }, /* ttyS0 */ \
{ 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS }, /* ttyS1 */ \
{ 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS }, /* ttyS2 */ \
{ 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS }, /* ttyS3 */
+#endif

View File

@ -0,0 +1,74 @@
---
arch/m68k/amiga/config.c | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
--- a/arch/m68k/amiga/config.c
+++ b/arch/m68k/amiga/config.c
@@ -109,6 +109,7 @@ static void amiga_mem_console_write(stru
unsigned int count);
void amiga_serial_console_write(struct console *co, const char *s,
unsigned int count);
+static void __init amiga_savekmsg_init(void);
#ifdef CONFIG_HEARTBEAT
static void amiga_heartbeat(int on);
#endif
@@ -119,6 +120,8 @@ static struct console amiga_console_driv
.index = -1,
};
+static int __initdata amiga_enable_debug_mem;
+
/*
* Motherboard Resources present in all Amiga models
@@ -465,6 +468,9 @@ void __init config_amiga(void)
/* initialize chipram allocator */
amiga_chip_init();
+ if (amiga_enable_debug_mem && AMIGAHW_PRESENT(CHIP_RAM))
+ amiga_savekmsg_init();
+
/* our beloved beeper */
if (AMIGAHW_PRESENT(AMI_AUDIO))
amiga_init_sound();
@@ -783,18 +789,10 @@ static void amiga_mem_console_write(stru
}
}
-static int __init amiga_savekmsg_setup(char *arg)
+static void __init amiga_savekmsg_init(void)
{
static struct resource debug_res = { .name = "Debug" };
- if (!MACH_IS_AMIGA || strcmp(arg, "mem"))
- goto done;
-
- if (!AMIGAHW_PRESENT(CHIP_RAM)) {
- printk("Warning: no chipram present for debugging\n");
- goto done;
- }
-
savekmsg = amiga_chip_alloc_res(SAVEKMSG_MAXMEM, &debug_res);
savekmsg->magic1 = SAVEKMSG_MAGIC1;
savekmsg->magic2 = SAVEKMSG_MAGIC2;
@@ -803,6 +801,20 @@ static int __init amiga_savekmsg_setup(c
amiga_console_driver.write = amiga_mem_console_write;
register_console(&amiga_console_driver);
+}
+
+static int __init amiga_savekmsg_setup(char *arg)
+{
+ if (!MACH_IS_AMIGA || strcmp(arg, "mem"))
+ goto done;
+
+ if (!AMIGAHW_PRESENT(CHIP_RAM)) {
+ printk("Warning: no chipram present for debugging\n");
+ amiga_enable_debug_mem = 1;
+ goto done;
+ }
+
+ amiga_savekmsg_init();
done:
return 0;

View File

@ -0,0 +1,191 @@
static int __init xxx_probe(struct platform_device *pdev)
{
regs = platform_get_resource(pdev, IORESOURCE_MEM, CTRL_IOMEM_ID);
fifo = platform_get_resource(pdev, IORESOURCE_MEM, FIFO_IOMEM_ID);
if (!regs || !fifo)
return -ENXIO;
irq = platform_get_irq(pdev, 0);
if (irq < 0)
return irq;
platform_set_drvdata(pdev, xxx);
}
static int __exit xxx_remove(struct platform_device *pdev)
{
xxx = platform_get_drvdata(pdev);
platform_set_drvdata(pdev, NULL);
return 0;
}
static struct platform_driver xxx_driver = {
.remove = __exit_p(xxx_remove),
.driver = {
.name = "xxx",
},
};
static int __init xxx_init(void)
{
return platform_driver_probe(&xxx_driver, xxx_probe);
}
module_init(xxx_init);
static void __exit xxx_exit(void)
{
platform_driver_unregister(&xxx_driver);
}
module_exit(xxx_exit);
arch/m68k/amiga/amiints.c: if (AMIGAHW_PRESENT(PCMCIA))
arch/m68k/amiga/chipram.c: if (!AMIGAHW_PRESENT(CHIP_RAM))
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(name)) \
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(ZORRO))
arch/m68k/amiga/config.c: printk("ZORRO%s ", AMIGAHW_PRESENT(ZORRO3) ? "3" : "");
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(A3000_CLK)) {
arch/m68k/amiga/config.c: } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ {
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(ZORRO3)) {
arch/m68k/amiga/config.c: if (amiga_enable_debug_mem && AMIGAHW_PRESENT(CHIP_RAM))
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(AMI_AUDIO))
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(MAGIC_REKICK))
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(A3000_CLK)) {
arch/m68k/amiga/config.c: } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ {
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(A3000_CLK)) {
arch/m68k/amiga/config.c: } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ {
arch/m68k/amiga/config.c: if (!AMIGAHW_PRESENT(CHIP_RAM)) {
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(CHIP_RAM))
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(AMI_VIDEO)) {
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(name)) \
arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(ZORRO))
arch/m68k/amiga/config.c: AMIGAHW_PRESENT(ZORRO3) ? "I" : "",
arch/m68k/kernel/setup.c: if (MACH_IS_AMIGA && AMIGAHW_PRESENT(GG2_ISA)) {
arch/m68k/kernel/setup.c: if (MACH_IS_AMIGA && AMIGAHW_PRESENT(PCMCIA)) {
drivers/block/amiflop.c: if (!AMIGAHW_PRESENT(AMI_FLOPPY))
drivers/char/amiserial.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_SERIAL))
drivers/ide/legacy/gayle.c: if ((a4000 = AMIGAHW_PRESENT(A4000_IDE)) || AMIGAHW_PRESENT(A1200_IDE))
drivers/input/keyboard/amikbd.c: if (!AMIGAHW_PRESENT(AMI_KEYBOARD))
drivers/input/mouse/amimouse.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_MOUSE))
drivers/net/apne.c: if ( !(AMIGAHW_PRESENT(PCMCIA)) )
drivers/parport/parport_amiga.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_PARALLEL))
drivers/scsi/a3000.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(A3000_SCSI))
drivers/scsi/a4000t.c: if (!(MACH_IS_AMIGA && AMIGAHW_PRESENT(A4000_SCSI)))
drivers/video/amifb.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_VIDEO))
drivers/video/amifb.c: if (AMIGAHW_PRESENT(AMBER_FF))
drivers/video/amifb.c: } else if (AMIGAHW_PRESENT(AGNUS_HR_PAL) ||
drivers/video/amifb.c: AMIGAHW_PRESENT(AGNUS_HR_NTSC)) {
drivers/video/amifb.c: } else if (AMIGAHW_PRESENT(AGNUS_HR_PAL) ||
drivers/video/amifb.c: AMIGAHW_PRESENT(AGNUS_HR_NTSC)) {
drivers/zorro/proc.c: if (MACH_IS_AMIGA && AMIGAHW_PRESENT(ZORRO)) {
drivers/zorro/zorro.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(ZORRO))
drivers/zorro/zorro.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(ZORRO))
drivers/zorro/zorro.c: zorro_bus.num_resources = AMIGAHW_PRESENT(ZORRO3) ? 4 : 2;
include/asm-m68k/amigahw.h:#define AMIGAHW_PRESENT(name) (amiga_hw_present.name)
sound/oss/dmasound/dmasound_paula.c: if (MACH_IS_AMIGA && AMIGAHW_PRESENT(AMI_AUDIO)) {
---
arch/m68k/amiga/Makefile | 2 -
arch/m68k/amiga/platform.c | 73 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 74 insertions(+), 1 deletion(-)
--- a/arch/m68k/amiga/Makefile
+++ b/arch/m68k/amiga/Makefile
@@ -2,6 +2,6 @@
# Makefile for Linux arch/m68k/amiga source directory
#
-obj-y := config.o amiints.o cia.o chipram.o amisound.o
+obj-y := config.o amiints.o cia.o chipram.o amisound.o platform.o
obj-$(CONFIG_AMIGA_PCMCIA) += pcmcia.o
--- /dev/null
+++ b/arch/m68k/amiga/platform.c
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2007 Geert Uytterhoeven
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive
+ * for more details.
+ */
+
+#include <linux/platform_device.h>
+#include <linux/mm.h> // FIXME show_mem()
+
+#include <asm/amigahw.h>
+
+
+static struct platform_device amiga_serial = {
+ .name = "amiga-serial",
+ .id = -1,
+};
+
+static int __init amiga_init_devices(void)
+{
+ if (AMIGAHW_PRESENT(AMI_FLOPPY))
+ platform_device_register_simple("amiga-floppy", -1, NULL, 0);
+
+ if (AMIGAHW_PRESENT(AMI_SERIAL))
+ platform_device_register(&amiga_serial);
+
+#if 0
+ /* video hardware */
+[ ] AMIGAHW_PRESENT(AMI_VIDEO); /* Amiga Video */
+[ ] AMIGAHW_PRESENT(AMI_BLITTER); /* Amiga Blitter */
+[ ] AMIGAHW_PRESENT(AMBER_FF); /* Amber Flicker Fixer */
+ /* sound hardware */
+[ ] AMIGAHW_PRESENT(AMI_AUDIO); /* Amiga Audio */
+ /* disk storage interfaces */
+[ ] AMIGAHW_PRESENT(AMI_FLOPPY); /* Amiga Floppy */
+[ ] AMIGAHW_PRESENT(A3000_SCSI); /* SCSI (wd33c93, A3000 alike) */
+[ ] AMIGAHW_PRESENT(A4000_SCSI); /* SCSI (ncr53c710, A4000T alike) */
+[ ] AMIGAHW_PRESENT(A1200_IDE); /* IDE (A1200 alike) */
+[ ] AMIGAHW_PRESENT(A4000_IDE); /* IDE (A4000 alike) */
+[ ] AMIGAHW_PRESENT(CD_ROM); /* CD ROM drive */
+ /* other I/O hardware */
+[ ] AMIGAHW_PRESENT(AMI_KEYBOARD); /* Amiga Keyboard */
+[ ] AMIGAHW_PRESENT(AMI_MOUSE); /* Amiga Mouse */
+[ ] AMIGAHW_PRESENT(AMI_SERIAL); /* Amiga Serial */
+[ ] AMIGAHW_PRESENT(AMI_PARALLEL); /* Amiga Parallel */
+ /* real time clocks */
+[ ] AMIGAHW_PRESENT(A2000_CLK); /* Hardware Clock (A2000 alike) */
+[ ] AMIGAHW_PRESENT(A3000_CLK); /* Hardware Clock (A3000 alike) */
+ /* supporting hardware */
+[ ] AMIGAHW_PRESENT(CHIP_RAM); /* Chip RAM */
+[ ] AMIGAHW_PRESENT(PAULA); /* Paula (8364) */
+[ ] AMIGAHW_PRESENT(DENISE); /* Denise (8362) */
+[ ] AMIGAHW_PRESENT(DENISE_HR); /* Denise (8373) */
+[ ] AMIGAHW_PRESENT(LISA); /* Lisa (8375) */
+[ ] AMIGAHW_PRESENT(AGNUS_PAL); /* Normal/Fat PAL Agnus (8367/8371) */
+[ ] AMIGAHW_PRESENT(AGNUS_NTSC); /* Normal/Fat NTSC Agnus (8361/8370) */
+[ ] AMIGAHW_PRESENT(AGNUS_HR_PAL); /* Fat Hires PAL Agnus (8372) */
+[ ] AMIGAHW_PRESENT(AGNUS_HR_NTSC); /* Fat Hires NTSC Agnus (8372) */
+[ ] AMIGAHW_PRESENT(ALICE_PAL); /* PAL Alice (8374) */
+[ ] AMIGAHW_PRESENT(ALICE_NTSC); /* NTSC Alice (8374) */
+[ ] AMIGAHW_PRESENT(MAGIC_REKICK); /* A3000 Magic Hard Rekick */
+[ ] AMIGAHW_PRESENT(PCMCIA); /* PCMCIA Slot */
+[ ] AMIGAHW_PRESENT(GG2_ISA); /* GG2 Zorro2ISA Bridge */
+[ ] AMIGAHW_PRESENT(ZORRO); /* Zorro AutoConfig */
+[ ] AMIGAHW_PRESENT(ZORRO3); /* Zorro III */
+#endif
+
+ return 0;
+}
+
+device_initcall(amiga_init_devices);
+

View File

@ -0,0 +1,32 @@
---
arch/m68k/amiga/platform.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
--- a/arch/m68k/amiga/platform.c
+++ b/arch/m68k/amiga/platform.c
@@ -12,9 +12,23 @@
#include <asm/amigahw.h>
+static struct resource amiga_serial_resources[] = {
+ {
+ /*
+ * We request SERDAT and SERPER only, because the serial
+ * registers are too spread over the custom register space
+ */
+ .start = CUSTOM_PHYSADDR+0x30,
+ .end = CUSTOM_PHYSADDR+0x33,
+ .flags = IORESOURCE_MEM,
+ }
+};
+
static struct platform_device amiga_serial = {
- .name = "amiga-serial",
- .id = -1,
+ .name = "amiga-serial",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(amiga_serial_resources),
+ .resource = amiga_serial_resources,
};
static int __init amiga_init_devices(void)

View File

@ -0,0 +1,534 @@
Subject: [PATCH] m68k: Atari ARAnyM support
From: Michael Schmitz <schmitz@opal.biophys.uni-duesseldorf.de>
This isn't really my kettle of fish, but I post it anyway unless Petr
complains :-)
This is what makes it possible for me to test 2.6 builds on the
emulator...
Should be signed off by Petr, really.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
arch/m68k/Kconfig | 15 ++
arch/m68k/Makefile | 1
arch/m68k/emu/Makefile | 7 +
arch/m68k/emu/natfeat.c | 113 +++++++++++++++++
arch/m68k/emu/nfeth.c | 284 +++++++++++++++++++++++++++++++++++++++++++++
arch/m68k/kernel/setup.c | 5
drivers/net/Kconfig | 8 +
include/asm-m68k/natfeat.h | 22 +++
8 files changed, 455 insertions(+)
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -267,6 +267,21 @@ config Q40
Q60. Select your CPU below. For 68LC060 don't forget to enable FPU
emulation.
+config NATFEAT
+ bool "ARAnyM emulator support"
+ depends on ATARI
+ help
+ This option enables support for ARAnyM native features, such as
+ access to a disk image as /dev/hda. Useful with the ARANYM option.
+
+config NFETH
+ tristate "NatFeat Ethernet support"
+ depends on NET_ETHERNET && NATFEAT
+ help
+ Say Y to include support for the ARAnyM NatFeat network device
+ which will emulate a regular ethernet device while presenting an
+ ethertap device to the host system.
+
comment "Processor type"
config M68020
--- a/arch/m68k/Makefile
+++ b/arch/m68k/Makefile
@@ -74,6 +74,7 @@ core-$(CONFIG_MVME16x) += arch/m68k/mvm
core-$(CONFIG_BVME6000) += arch/m68k/bvme6000/
core-$(CONFIG_SUN3X) += arch/m68k/sun3x/ arch/m68k/sun3/
core-$(CONFIG_SUN3) += arch/m68k/sun3/ arch/m68k/sun3/prom/
+core-$(CONFIG_NATFEAT) += arch/m68k/emu/
core-$(CONFIG_M68040) += arch/m68k/fpsp040/
core-$(CONFIG_M68060) += arch/m68k/ifpsp060/
core-$(CONFIG_M68KFPU_EMU) += arch/m68k/math-emu/
--- /dev/null
+++ b/arch/m68k/emu/Makefile
@@ -0,0 +1,7 @@
+#
+# Makefile for Linux arch/m68k/emu source directory
+#
+
+obj-y += natfeat.o
+
+obj-$(CONFIG_NFETH) += nfeth.o
--- /dev/null
+++ b/arch/m68k/emu/natfeat.c
@@ -0,0 +1,113 @@
+/*
+ * natfeat.c - ARAnyM hardware support via Native Features (natfeats)
+ *
+ * Copyright (c) 2005 Petr Stehlik of ARAnyM dev team
+ *
+ * Reworked for Linux by Roman Zippel <zippel@linux-m68k.org>
+ *
+ * This software may be used and distributed according to the terms of
+ * the GNU General Public License (GPL), incorporated herein by reference.
+ */
+
+#include <linux/types.h>
+#include <linux/console.h>
+#include <linux/string.h>
+#include <linux/kernel.h>
+#include <linux/io.h>
+#include <asm/machdep.h>
+#include <asm/natfeat.h>
+
+asm("\n"
+" .global nf_get_id,nf_call\n"
+"nf_get_id:\n"
+" .short 0x7300\n"
+" rts\n"
+"nf_call:\n"
+" .short 0x7301\n"
+" rts\n"
+"1: moveq.l #0,%d0\n"
+" rts\n"
+" .section __ex_table,\"a\"\n"
+" .long nf_get_id,1b\n"
+" .long nf_call,1b\n"
+" .previous");
+
+static int stderr_id;
+
+static void nf_write(struct console *co, const char *str, unsigned int count)
+{
+ char buf[68];
+
+ buf[64] = 0;
+ while (count > 64) {
+ memcpy(buf, str, 64);
+ nf_call(stderr_id, buf);
+ str += 64;
+ count -= 64;
+ }
+ memcpy(buf, str, count);
+ buf[count] = 0;
+ nf_call(stderr_id, buf);
+}
+
+void nfprint(const char *fmt, ...)
+{
+ static char buf[256];
+ va_list ap;
+ int n;
+
+ va_start(ap, fmt);
+ n = vsnprintf(buf, 256, fmt, ap);
+ nf_call(nf_get_id("NF_STDERR"), buf);
+ va_end(ap);
+}
+
+static struct console nf_console_driver = {
+ .name = "debug",
+ .write = nf_write,
+ .flags = CON_PRINTBUFFER,
+ .index = -1,
+};
+
+static int __init nf_debug_setup(char *arg)
+{
+ if (strcmp(arg, "emu"))
+ return 0;
+
+ stderr_id = nf_get_id("NF_STDERR");
+ if (stderr_id)
+ register_console(&nf_console_driver);
+ return 0;
+}
+
+early_param("debug", nf_debug_setup);
+
+static void nf_poweroff(void)
+{
+ long id = nf_get_id("NF_SHUTDOWN");
+
+ if (id)
+ nf_call(id);
+}
+
+void nf_init(void)
+{
+ unsigned long id, version;
+ char buf[256];
+
+ id = nf_get_id("NF_VERSION");
+ if (!id)
+ return;
+ version = nf_call(id);
+
+ id = nf_get_id("NF_NAME");
+ if (!id)
+ return;
+ nf_call(id, buf, 256);
+ buf[255] = 0;
+
+ pr_info("NatFeats found (%s, %lu.%lu)\n", buf, version >> 16,
+ version & 0xffff);
+
+ mach_power_off = nf_poweroff;
+}
--- /dev/null
+++ b/arch/m68k/emu/nfeth.c
@@ -0,0 +1,284 @@
+/*
+ * atari_nfeth.c - ARAnyM ethernet card driver for GNU/Linux
+ *
+ * Copyright (c) 2005 Milan Jurik, Petr Stehlik of ARAnyM dev team
+ *
+ * Based on ARAnyM driver for FreeMiNT written by Standa Opichal
+ *
+ * This software may be used and distributed according to the terms of
+ * the GNU General Public License (GPL), incorporated herein by reference.
+ */
+
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+#include <linux/module.h>
+#include <net/ieee80211.h>
+#include <asm/natfeat.h>
+#include <asm/virtconvert.h>
+
+enum {
+ GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */
+ XIF_INTLEVEL, /* no parameters, return Interrupt Level in d0 */
+ XIF_IRQ, /* acknowledge interrupt from host */
+ XIF_START, /* (ethX), called on 'ifup', start receiver thread */
+ XIF_STOP, /* (ethX), called on 'ifdown', stop the thread */
+ XIF_READLENGTH, /* (ethX), return size of network data block to read */
+ XIF_READBLOCK, /* (ethX, buffer, size), read block of network data */
+ XIF_WRITEBLOCK, /* (ethX, buffer, size), write block of network data */
+ XIF_GET_MAC, /* (ethX, buffer, size), return MAC HW addr in buffer */
+ XIF_GET_IPHOST, /* (ethX, buffer, size), return IP address of host */
+ XIF_GET_IPATARI, /* (ethX, buffer, size), return IP address of atari */
+ XIF_GET_NETMASK /* (ethX, buffer, size), return IP netmask */
+};
+
+#define DRV_NAME "nfeth"
+#define DRV_VERSION "0.3"
+#define DRV_RELDATE "10/12/2005"
+
+#define MAX_UNIT 8
+
+/* These identify the driver base version and may not be removed. */
+static char version[] __devinitdata =
+KERN_INFO DRV_NAME ".c:v" DRV_VERSION " " DRV_RELDATE " S.Opichal, M.Jurik, P.Stehlik\n"
+KERN_INFO " http://aranym.atari.org/\n";
+
+MODULE_AUTHOR("Milan Jurik");
+MODULE_DESCRIPTION("Atari NFeth driver");
+MODULE_LICENSE("GPL");
+/*
+MODULE_PARM(nfeth_debug, "i");
+MODULE_PARM_DESC(nfeth_debug, "nfeth_debug level (1-2)");
+*/
+
+
+static long nfEtherID;
+static int nfEtherIRQ;
+
+struct nfeth_private {
+ int ethX;
+ struct net_device_stats stats;
+};
+
+static struct net_device *nfeth_dev[MAX_UNIT];
+
+int nfeth_open(struct net_device *dev);
+int nfeth_stop(struct net_device *dev);
+irqreturn_t nfeth_interrupt(int irq, void *dev_id);
+int nfeth_xmit(struct sk_buff *skb, struct net_device *dev);
+
+int nfeth_open(struct net_device *dev)
+{
+ struct nfeth_private *priv = netdev_priv(dev);
+ int res;
+
+ res = nf_call(nfEtherID + XIF_START, priv->ethX);
+
+ /* Clean statistics */
+ memset(&priv->stats, 0, sizeof(struct net_device_stats));
+
+ pr_debug(DRV_NAME ": open %d\n", res);
+
+ /* Ready for data */
+ netif_start_queue(dev);
+
+ return 0;
+}
+
+int nfeth_stop(struct net_device *dev)
+{
+ struct nfeth_private *priv = netdev_priv(dev);
+
+ /* No more data */
+ netif_stop_queue(dev);
+
+ nf_call(nfEtherID + XIF_STOP, priv->ethX);
+
+ return 0;
+}
+
+/*
+ * Read a packet out of the adapter and pass it to the upper layers
+ */
+static inline void recv_packet(struct net_device *dev)
+{
+ struct nfeth_private *priv = netdev_priv(dev);
+ int handled = 0;
+ unsigned short pktlen;
+ struct sk_buff *skb;
+
+ /* read packet length (excluding 32 bit crc) */
+ pktlen = nf_call(nfEtherID + XIF_READLENGTH, priv->ethX);
+
+ pr_debug(DRV_NAME ": recv_packet: %i\n", pktlen);
+
+ if (!pktlen) {
+ pr_debug(DRV_NAME ": recv_packet: pktlen == 0\n");
+ priv->stats.rx_errors++;
+ return;
+ }
+
+ skb = dev_alloc_skb(pktlen + 2);
+ if (!skb) {
+ pr_debug(DRV_NAME
+ ": recv_packet: out of mem (buf_alloc failed)\n");
+ priv->stats.rx_dropped++;
+ return;
+ }
+
+ skb->dev = dev;
+ skb_reserve(skb, 2); /* 16 Byte align */
+ skb_put(skb, pktlen); /* make room */
+ nf_call(nfEtherID + XIF_READBLOCK, priv->ethX, virt_to_phys(skb->data),
+ pktlen);
+
+ skb->protocol = eth_type_trans(skb, dev);
+ netif_rx(skb);
+ dev->last_rx = jiffies;
+ priv->stats.rx_packets++;
+ priv->stats.rx_bytes += pktlen;
+
+ /* and enqueue packet */
+ handled = 1;
+ return;
+}
+
+irqreturn_t nfeth_interrupt(int irq, void *dev_id)
+{
+ int i, m, mask;
+
+ mask = nf_call(nfEtherID + XIF_IRQ, 0);
+ for (i = 0, m = 1; i < MAX_UNIT; m <<= 1, i++) {
+ if (mask & m && nfeth_dev[i]) {
+ recv_packet(nfeth_dev[i]);
+ nf_call(nfEtherID + XIF_IRQ, m);
+ }
+ }
+ return IRQ_HANDLED;
+}
+
+int nfeth_xmit(struct sk_buff *skb, struct net_device *dev)
+{
+ int len;
+ char *data, shortpkt[ETH_ZLEN];
+ struct nfeth_private *priv = netdev_priv(dev);
+
+ data = skb->data;
+ len = skb->len;
+ if (len < ETH_ZLEN) {
+ memset(shortpkt, 0, ETH_ZLEN);
+ memcpy(shortpkt, data, len);
+ data = shortpkt;
+ len = ETH_ZLEN;
+ }
+
+ dev->trans_start = jiffies;
+
+ pr_debug(DRV_NAME ": send %d bytes\n", len);
+ nf_call(nfEtherID + XIF_WRITEBLOCK, priv->ethX, virt_to_phys(data),
+ len);
+
+ priv->stats.tx_packets++;
+ priv->stats.tx_bytes += len;
+
+ dev_kfree_skb(skb);
+ return 0;
+}
+
+static void nfeth_tx_timeout(struct net_device *dev)
+{
+ struct nfeth_private *priv = netdev_priv(dev);
+ priv->stats.tx_errors++;
+ netif_wake_queue(dev);
+}
+
+static struct net_device_stats *nfeth_get_stats(struct net_device *dev)
+{
+ struct nfeth_private *priv = netdev_priv(dev);
+ return &priv->stats;
+}
+
+struct net_device * __init nfeth_probe(int unit)
+{
+ struct net_device *dev;
+ struct nfeth_private *priv;
+ char mac[ETH_ALEN], host_ip[32], local_ip[32];
+ DECLARE_MAC_BUF(macfmt);
+ int err;
+
+ if (!nf_call(nfEtherID + XIF_GET_MAC, unit, mac, ETH_ALEN))
+ return NULL;
+
+ dev = alloc_etherdev(sizeof(struct nfeth_private));
+ if (!dev)
+ return NULL;
+
+ dev->irq = nfEtherIRQ;
+ dev->open = nfeth_open;
+ dev->stop = nfeth_stop;
+ dev->hard_start_xmit = nfeth_xmit;
+ dev->tx_timeout = nfeth_tx_timeout;
+ dev->get_stats = nfeth_get_stats;
+ dev->flags |= NETIF_F_NO_CSUM;
+ memcpy(dev->dev_addr, mac, ETH_ALEN);
+
+ priv = netdev_priv(dev);
+ priv->ethX = unit;
+
+ err = register_netdev(dev);
+ if (err) {
+ free_netdev(dev);
+ return NULL;
+ }
+
+ nf_call(nfEtherID + XIF_GET_IPHOST, unit,
+ host_ip, sizeof(host_ip));
+ nf_call(nfEtherID + XIF_GET_IPATARI, unit,
+ local_ip, sizeof(local_ip));
+
+ pr_info("%s: nfeth addr:%s (%s) HWaddr:%s\n", dev->name, host_ip,
+ local_ip, print_mac(macfmt, mac));
+
+ return dev;
+}
+
+int __init nfeth_init(void)
+{
+ long ver;
+ int i;
+
+ nfEtherID = nf_get_id("ETHERNET");
+ if (!nfEtherID)
+ return -ENODEV;
+
+ ver = nf_call(nfEtherID + GET_VERSION);
+ pr_info("nfeth API %lu\n", ver);
+
+ nfEtherIRQ = nf_call(nfEtherID + XIF_INTLEVEL);
+ if (request_irq(nfEtherIRQ, nfeth_interrupt, IRQF_SHARED,
+ "eth emu", nfeth_interrupt)) {
+ printk(KERN_ERR "nfeth: request for irq %d failed",
+ nfEtherIRQ);
+ return -ENODEV;
+ }
+
+ for (i = 0; i < MAX_UNIT; i++)
+ nfeth_dev[i] = nfeth_probe(i);
+
+ return 0;
+}
+
+void __exit nfeth_cleanup(void)
+{
+ int i;
+
+ for (i = 0; i < MAX_UNIT; i++) {
+ if (nfeth_dev[i]) {
+ unregister_netdev(nfeth_dev[0]);
+ free_netdev(nfeth_dev[0]);
+ }
+ }
+ free_irq(nfEtherIRQ, nfeth_interrupt);
+}
+
+module_init(nfeth_init);
+module_exit(nfeth_cleanup);
--- a/arch/m68k/kernel/setup.c
+++ b/arch/m68k/kernel/setup.c
@@ -39,6 +39,7 @@
#ifdef CONFIG_SUN3X
#include <asm/dvma.h>
#endif
+#include <asm/natfeat.h>
unsigned long m68k_machtype;
unsigned long m68k_cputype;
@@ -314,6 +315,10 @@ void __init setup_arch(char **cmdline_p)
panic("No configuration setup");
}
+#ifdef CONFIG_NATFEAT
+ nf_init();
+#endif
+
paging_init();
#ifndef CONFIG_SUN3
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -428,6 +428,14 @@ config ATARILANCE
on the AMD Lance chipset: RieblCard (with or without battery), or
PAMCard VME (also the version by Rhotron, with different addresses).
+config ATARI_ETHERNEC
+ tristate "Atari EtherNEC Ethernet support"
+ depends on NET_ETHERNET && ATARI && ATARI_ROM_ISA
+ help
+ Say Y to include support for the EtherNEC network adapter for the
+ ROM port. The driver works by polling instead of interrupts, so it
+ is quite slow.
+
config SUN3LANCE
tristate "Sun3/Sun3x on-board LANCE support"
depends on SUN3 || SUN3X
--- /dev/null
+++ b/include/asm-m68k/natfeat.h
@@ -0,0 +1,22 @@
+/*
+ * ARAnyM hardware support via Native Features (natfeats)
+ *
+ * Copyright (c) 2005 Petr Stehlik of ARAnyM dev team
+ *
+ * This software may be used and distributed according to the terms of
+ * the GNU General Public License (GPL), incorporated herein by reference.
+ */
+
+#ifndef _NATFEAT_H
+#define _NATFEAT_H
+
+long nf_get_id(const char *feature_name);
+long nf_call(long id, ...);
+
+void nf_init(void);
+void nf_shutdown(void);
+
+void nfprint(const char *fmt, ...)
+ __attribute__ ((format (printf, 1, 2)));
+
+# endif /* _NATFEAT_H */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,73 @@
arch/m68k/atari/ataints.c: ATARIHW_PRESENT(TT_MFP)) || \
arch/m68k/atari/ataints.c: !((n) & 1) && ATARIHW_PRESENT(SCC)) || \
arch/m68k/atari/ataints.c: if (ATARIHW_PRESENT(TT_MFP)) {
arch/m68k/atari/ataints.c: if (ATARIHW_PRESENT(SCC) && !atari_SCC_reset_done) {
arch/m68k/atari/ataints.c: if (ATARIHW_PRESENT(SCU)) {
arch/m68k/atari/ataints.c: if (ATARIHW_PRESENT(PCM_8BIT) && ATARIHW_PRESENT(MICROWIRE)) {
arch/m68k/atari/config.c: if (!MACH_IS_HADES && !ATARIHW_PRESENT(ST_SCSI)) {
arch/m68k/atari/config.c: if (ATARIHW_PRESENT(MSTE_CLK))
arch/m68k/atari/config.c: if (ATARIHW_PRESENT(name)) \
arch/m68k/atari/debug.c: if (ATARIHW_PRESENT(TT_MFP) && baud >= 6) {
drivers/block/ataflop.c: if (ATARIHW_PRESENT(FDCSPEED))
drivers/block/ataflop.c: if (ATARIHW_PRESENT(FDCSPEED))
drivers/block/ataflop.c: if (ATARIHW_PRESENT(FDCSPEED))
drivers/block/ataflop.c: if (ATARIHW_PRESENT(FDCSPEED)) {
drivers/block/ataflop.c: if (ATARIHW_PRESENT(FDCSPEED))
drivers/block/ataflop.c: if (ATARIHW_PRESENT(EXTD_DMA)) {
drivers/block/ataflop.c: paddr = ATARIHW_PRESENT(EXTD_DMA) ?
drivers/block/ataflop.c: if (ATARIHW_PRESENT(EXTD_DMA))
drivers/block/ataflop.c: if (ATARIHW_PRESENT( EXTD_DMA ))
drivers/block/ataflop.c: if (ATARIHW_PRESENT(FDCSPEED)) {
drivers/block/ataflop.c: addr = ATARIHW_PRESENT( EXTD_DMA ) ? ReqData : DMABuffer;
drivers/block/ataflop.c: if (!ATARIHW_PRESENT( EXTD_DMA ))
drivers/block/ataflop.c: if (ATARIHW_PRESENT( EXTD_DMA ))
drivers/block/ataflop.c: if (ATARIHW_PRESENT( FDCSPEED ) || MACH_IS_MEDUSA)
drivers/block/ataflop.c: if (ATARIHW_PRESENT(FDCSPEED))
drivers/char/dsp56k.c: if(!MACH_IS_ATARI || !ATARIHW_PRESENT(DSP56K)) {
drivers/char/nvram.c:#define CHECK_DRIVER_INIT() (MACH_IS_ATARI && ATARIHW_PRESENT(TT_CLK))
drivers/ide/legacy/falconide.c: if (MACH_IS_ATARI && ATARIHW_PRESENT(IDE)) {
drivers/input/keyboard/atakbd.c: if (!MACH_IS_ATARI || !ATARIHW_PRESENT(ST_MFP))
drivers/input/mouse/atarimouse.c: if (!MACH_IS_ATARI || !ATARIHW_PRESENT(ST_MFP))
drivers/scsi/atari_scsi.c:#define IS_A_TT() ATARIHW_PRESENT(TT_SCSI)
drivers/scsi/atari_scsi.c: (!ATARIHW_PRESENT(ST_SCSI) && !ATARIHW_PRESENT(TT_SCSI)) ||
drivers/scsi/atari_scsi.c: if (ATARIHW_PRESENT(TT_CLK) && nvram_check_checksum()) {
drivers/scsi/atari_scsi.c: if (MACH_IS_ATARI && ATARIHW_PRESENT(ST_SCSI) &&
drivers/scsi/atari_scsi.c: !ATARIHW_PRESENT(EXTD_DMA) && m68k_num_memory > 1) {
drivers/scsi/atari_scsi.c: atari_dma_stram_mask = (ATARIHW_PRESENT(EXTD_DMA) ? 0x00000000
drivers/video/atafb.c: if (ATARIHW_PRESENT(PCM_8BIT)) {
drivers/video/atafb.c: if (ATARIHW_PRESENT(EXTD_SHIFTER)) {
drivers/video/atafb.c: var->red.length = ATARIHW_PRESENT(EXTD_SHIFTER) ? 4 : 3;
drivers/video/atafb.c: if (ATARIHW_PRESENT(EXTD_SHIFTER))
drivers/video/atafb.c: if (ATARIHW_PRESENT(EXTD_SHIFTER))
drivers/video/atafb.c: if (ATARIHW_PRESENT(PCM_8BIT)) {
drivers/video/atafb.c: if (!ATARIHW_PRESENT(EXTD_SHIFTER))
drivers/video/atafb.c: if (ATARIHW_PRESENT(EXTD_SHIFTER))
drivers/video/atafb.c: (!ATARIHW_PRESENT(EXTD_SHIFTER) && var->xoffset))
drivers/video/atafb.c: if (ATARIHW_PRESENT(TT_SHIFTER)) {
drivers/video/atafb.c: if (ATARIHW_PRESENT(VIDEL_SHIFTER)) {
drivers/video/atafb.c: if (ATARIHW_PRESENT(STND_SHIFTER) ||
drivers/video/atafb.c: ATARIHW_PRESENT(EXTD_SHIFTER)) {
include/asm-m68k/atarihw.h:#define ATARIHW_PRESENT(name) (atari_hw_present.name)
sound/oss/dmasound/dmasound_atari.c: if (MACH_IS_ATARI && ATARIHW_PRESENT(PCM_8BIT)) {
sound/oss/dmasound/dmasound_atari.c: if (ATARIHW_PRESENT(CODEC)) {
sound/oss/dmasound/dmasound_atari.c: } else if (ATARIHW_PRESENT(MICROWIRE)) {
drivers/char/atari_scc.c: int escc = ATARIHW_PRESENT(ST_ESCC);
drivers/char/atari_scc.c: if (!(ATARIHW_PRESENT(SCC) || ATARIHW_PRESENT(ST_ESCC)))
drivers/char/atari_scc.c: if (ATARIHW_PRESENT(TT_MFP) && baud >= 6) {
---
arch/m68k/atari/platform.c | 10 ++++++++++
1 file changed, 10 insertions(+)
--- /dev/null
+++ b/arch/m68k/atari/platform.c
@@ -0,0 +1,10 @@
+/*
+ * Copyright (C) 2007 Geert Uytterhoeven
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive
+ * for more details.
+ */
+
+#include <linux/platform_device.h>
+

View File

@ -0,0 +1,401 @@
Subject: [PATCH] m68k: Atari ROM port ISA adapter support
From: Michael Schmitz <schmitz@opal.biophys.uni-duesseldorf.de>
Atari ROM port ISA adapter support
Signed-off-by: Michael Schmitz <schmitz@debian.org>
Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
arch/m68k/Kconfig | 10 +++
include/asm-m68k/io.h | 137 ++++++++++++++++++++++++++++++++++++++++++++--
include/asm-m68k/raw_io.h | 116 ++++++++++++++++++++++++++++++++++++++
3 files changed, 258 insertions(+), 5 deletions(-)
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -150,6 +150,16 @@ config PCI
information about which PCI hardware does work under Linux and which
doesn't.
+config ATARI_ROM_ISA
+ bool "Atari ROM port ISA adapter support"
+ depends on ATARI
+ help
+ This option enables support for the ROM port ISA adapter used to
+ operate ISA cards on Atari. Only 8 bit cards are supported, and
+ no interrupt lines are connected.
+ The only driver currently using this adapter is the EtherNEC
+ driver for RTL8019AS based NE2000 compatible network cards.
+
config MAC
bool "Macintosh support"
depends on !MMU_SUN3
--- a/include/asm-m68k/io.h
+++ b/include/asm-m68k/io.h
@@ -83,9 +83,26 @@ extern unsigned long gg2_isa_base;
#endif
#endif /* AMIGA_PCMCIA */
+#ifdef CONFIG_ATARI_ROM_ISA
+#define enec_isa_read_base 0xfffa0000
+#define enec_isa_write_base 0xfffb0000
-#ifdef CONFIG_ISA
+#define ENEC_ISA_IO_B(ioaddr) (enec_isa_read_base+((((unsigned long)(ioaddr))&0x1F)<<9))
+#define ENEC_ISA_IO_W(ioaddr) (enec_isa_read_base+((((unsigned long)(ioaddr))&0x1F)<<9))
+#define ENEC_ISA_MEM_B(madr) (enec_isa_read_base+((((unsigned long)(madr))&0x1F)<<9))
+#define ENEC_ISA_MEM_W(madr) (enec_isa_read_base+((((unsigned long)(madr))&0x1F)<<9))
+
+#ifndef MULTI_ISA
+#define MULTI_ISA 0
+#else
+#undef MULTI_ISA
+#define MULTI_ISA 1
+#endif
+#endif /* ATARI */
+
+
+#if defined(CONFIG_ISA) || defined(CONFIG_ATARI_ROM_ISA)
#if MULTI_ISA == 0
#undef MULTI_ISA
@@ -94,6 +111,7 @@ extern unsigned long gg2_isa_base;
#define Q40_ISA (1)
#define GG2_ISA (2)
#define AG_ISA (3)
+#define ENEC_ISA (4)
#if defined(CONFIG_Q40) && !defined(MULTI_ISA)
#define ISA_TYPE Q40_ISA
@@ -107,6 +125,10 @@ extern unsigned long gg2_isa_base;
#define ISA_TYPE GG2_ISA
#define ISA_SEX 0
#endif
+#if defined(CONFIG_ATARI_ROM_ISA) && !defined(MULTI_ISA)
+#define ISA_TYPE ENEC_ISA
+#define ISA_SEX 0
+#endif
#ifdef MULTI_ISA
extern int isa_type;
@@ -134,6 +156,9 @@ static inline u8 __iomem *isa_itb(unsign
#ifdef CONFIG_AMIGA_PCMCIA
case AG_ISA: return (u8 __iomem *)AG_ISA_IO_B(addr);
#endif
+#ifdef CONFIG_ATARI_ROM_ISA
+ case ENEC_ISA: return (u8 __iomem *)ENEC_ISA_IO_B(addr);
+#endif
default: return NULL; /* avoid warnings, just in case */
}
}
@@ -150,6 +175,9 @@ static inline u16 __iomem *isa_itw(unsig
#ifdef CONFIG_AMIGA_PCMCIA
case AG_ISA: return (u16 __iomem *)AG_ISA_IO_W(addr);
#endif
+#ifdef CONFIG_ATARI_ROM_ISA
+ case ENEC_ISA: return (u16 __iomem *)ENEC_ISA_IO_W(addr);
+#endif
default: return NULL; /* avoid warnings, just in case */
}
}
@@ -160,7 +188,7 @@ static inline u32 __iomem *isa_itl(unsig
#ifdef CONFIG_AMIGA_PCMCIA
case AG_ISA: return (u32 __iomem *)AG_ISA_IO_W(addr);
#endif
- default: return 0; /* avoid warnings, just in case */
+ default: return NULL; /* avoid warnings, just in case */
}
}
static inline u8 __iomem *isa_mtb(unsigned long addr)
@@ -176,6 +204,9 @@ static inline u8 __iomem *isa_mtb(unsign
#ifdef CONFIG_AMIGA_PCMCIA
case AG_ISA: return (u8 __iomem *)addr;
#endif
+#ifdef CONFIG_ATARI_ROM_ISA
+ case ENEC_ISA: return (u8 __iomem *)ENEC_ISA_MEM_B(addr);
+#endif
default: return NULL; /* avoid warnings, just in case */
}
}
@@ -192,6 +223,9 @@ static inline u16 __iomem *isa_mtw(unsig
#ifdef CONFIG_AMIGA_PCMCIA
case AG_ISA: return (u16 __iomem *)addr;
#endif
+#ifdef CONFIG_ATARI_ROM_ISA
+ case ENEC_ISA: return (u16 __iomem *)ENEC_ISA_MEM_W(addr);
+#endif
default: return NULL; /* avoid warnings, just in case */
}
}
@@ -213,6 +247,34 @@ static inline u16 __iomem *isa_mtw(unsig
(ISA_SEX ? out_be16(isa_mtw((unsigned long)(p)),(val)) \
: out_le16(isa_mtw((unsigned long)(p)),(val)))
+#if defined(CONFIG_ATARI_ROM_ISA)
+#define isa_rom_inb(port) rom_in_8(isa_itb(port))
+#define isa_rom_inw(port) \
+ (ISA_SEX ? rom_in_be16(isa_itw(port)) \
+ : rom_in_le16(isa_itw(port)))
+#define isa_rom_inl(port) \
+ (ISA_SEX ? rom_in_be32(isa_itw(port)) \
+ : rom_in_le32(isa_itw(port)))
+
+#define isa_rom_outb(val, port) rom_out_8(isa_itb(port), (val))
+#define isa_rom_outw(val, port) \
+ (ISA_SEX ? rom_out_be16(isa_itw(port), (val)) \
+ : rom_out_le16(isa_itw(port), (val)))
+#define isa_rom_outl(val, port) \
+ (ISA_SEX ? rom_out_be32(isa_itw(port), (val)) \
+ : rom_out_le32(isa_itw(port), (val)))
+
+#define isa_rom_readb(p) rom_in_8(isa_mtb((unsigned long)(p)))
+#define isa_rom_readw(p) \
+ (ISA_SEX ? rom_in_be16(isa_mtw((unsigned long)(p))) \
+ : rom_in_le16(isa_mtw((unsigned long)(p))))
+
+#define isa_rom_writeb(val, p) rom_out_8(isa_mtb((unsigned long)(p)), (val))
+#define isa_rom_writew(val, p) \
+ (ISA_SEX ? rom_out_be16(isa_mtw((unsigned long)(p)), (val)) \
+ : rom_out_le16(isa_mtw((unsigned long)(p)), (val)))
+#endif
+
static inline void isa_delay(void)
{
switch(ISA_TYPE)
@@ -226,6 +288,9 @@ static inline void isa_delay(void)
#ifdef CONFIG_AMIGA_PCMCIA
case AG_ISA: break;
#endif
+#ifdef CONFIG_ATARI_ROM_ISA
+ case ENEC_ISA: break;
+#endif
default: break; /* avoid warnings */
}
}
@@ -256,10 +321,40 @@ static inline void isa_delay(void)
(ISA_SEX ? raw_outsl(isa_itl(port), (u32 *)(buf), (nr)) : \
raw_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr)<<1))
+
+#if defined(CONFIG_ATARI_ROM_ISA)
+#define isa_rom_inb_p(p) ({ u8 _v = isa_rom_inb(p); isa_delay(); _v; })
+#define isa_rom_inw_p(p) ({ u16 _v = isa_rom_inw(p); isa_delay(); _v; })
+#define isa_rom_inl_p(p) ({ u32 _v = isa_rom_inl(p); isa_delay(); _v; })
+#define isa_rom_outb_p(v, p) ({ isa_rom_outb((v), (p)); isa_delay(); })
+#define isa_rom_outw_p(v, p) ({ isa_rom_outw((v), (p)); isa_delay(); })
+#define isa_rom_outl_p(v, p) ({ isa_rom_outl((v), (p)); isa_delay(); })
+
+#define isa_rom_insb(port, buf, nr) raw_rom_insb(isa_itb(port), (u8 *)(buf), (nr))
+
+#define isa_rom_insw(port, buf, nr) \
+ (ISA_SEX ? raw_rom_insw(isa_itw(port), (u16 *)(buf), (nr)) : \
+ raw_rom_insw_swapw(isa_itw(port), (u16 *)(buf), (nr)))
+
+#define isa_rom_insl(port, buf, nr) \
+ (ISA_SEX ? raw_rom_insl(isa_itw(port), (u32 *)(buf), (nr)) : \
+ raw_rom_insw_swapw(isa_itw(port), (u16 *)(buf), (nr)<<1))
+
+#define isa_rom_outsb(port, buf, nr) raw_rom_outsb(isa_itb(port), (u8 *)(buf), (nr))
+
+#define isa_rom_outsw(port, buf, nr) \
+ (ISA_SEX ? raw_rom_outsw(isa_itw(port), (u16 *)(buf), (nr)) : \
+ raw_rom_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr)))
+
+#define isa_rom_outsl(port, buf, nr) \
+ (ISA_SEX ? raw_rom_outsl(isa_itw(port), (u32 *)(buf), (nr)) : \
+ raw_rom_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr)<<1))
+#endif
+
#endif /* CONFIG_ISA */
-#if defined(CONFIG_ISA) && !defined(CONFIG_PCI)
+#if defined(CONFIG_ISA) && !defined(CONFIG_PCI) && !defined(CONFIG_ATARI_ROM_ISA)
#define inb isa_inb
#define inb_p isa_inb_p
#define outb isa_outb
@@ -330,7 +425,41 @@ static inline void isa_delay(void)
#endif
#endif /* CONFIG_PCI */
-#if !defined(CONFIG_ISA) && !defined(CONFIG_PCI)
+#if defined(CONFIG_ATARI_ROM_ISA)
+/*
+ * kernel with both ROM port ISA and IDE compiled in, those have
+ * conflicting defs for in/out. Simply consider port < 1024
+ * ROM port ISA and everything else regular ISA for IDE. read,write not defined
+ * in this case
+ */
+#define inb(port) ((port) < 1024 ? isa_rom_inb(port) : in_8(port))
+#define inb_p(port) ((port) < 1024 ? isa_rom_inb_p(port) : in_8(port))
+#define inw(port) ((port) < 1024 ? isa_rom_inw(port) : in_le16(port))
+#define inw_p(port) ((port) < 1024 ? isa_rom_inw_p(port) : in_le16(port))
+#define inl(port) ((port) < 1024 ? isa_rom_inl(port) : in_le32(port))
+#define inl_p(port) ((port) < 1024 ? isa_rom_inl_p(port) : in_le32(port))
+
+#define outb(val, port) ((port) < 1024 ? isa_rom_outb((val), (port)) : out_8((port), (val)))
+#define outb_p(val, port) ((port) < 1024 ? isa_rom_outb_p((val), (port)) : out_8((port), (val)))
+#define outw(val, port) ((port) < 1024 ? isa_rom_outw((val), (port)) : out_le16((port), (val)))
+#define outw_p(val, port) ((port) < 1024 ? isa_rom_outw_p((val), (port)) : out_le16((port), (val)))
+#define outl(val, port) ((port) < 1024 ? isa_rom_outl((val), (port)) : out_le32((port), (val)))
+#define outl_p(val, port) ((port) < 1024 ? isa_rom_outl_p((val), (port)) : out_le32((port), (val)))
+
+#define insb isa_rom_insb
+#define insw isa_rom_insw
+#define insl isa_rom_insl
+#define outsb isa_rom_outsb
+#define outsw isa_rom_outsw
+#define outsl isa_rom_outsl
+
+#define readb isa_readb
+#define readw isa_readw
+#define writeb isa_writeb
+#define writew isa_writew
+#endif
+
+#if !defined(CONFIG_ISA) && !defined(CONFIG_PCI) && !defined(CONFIG_ATARI_ROM_ISA)
/*
* We need to define dummy functions for GENERIC_IOMAP support.
*/
--- a/include/asm-m68k/raw_io.h
+++ b/include/asm-m68k/raw_io.h
@@ -10,7 +10,7 @@
#ifdef __KERNEL__
-#include <asm/types.h>
+#include <asm/byteorder.h>
/* Values for nocacheflag and cmode */
@@ -60,6 +60,46 @@ extern void __iounmap(void *addr, unsign
#define __raw_writew(val,addr) out_be16((addr),(val))
#define __raw_writel(val,addr) out_be32((addr),(val))
+/*
+ * Atari ROM port (cartridge port) ISA adapter, used for the EtherNEC NE2000
+ * network card driver.
+ * The ISA adapter connects address lines A9-A13 to ISA address lines A0-A4,
+ * and hardwires the rest of the ISA addresses for a base address of 0x300.
+ *
+ * Data lines D8-D15 are connected to ISA data lines D0-D7 for reading.
+ * For writes, address lines A1-A8 are latched to ISA data lines D0-D7
+ * (meaning the bit pattern on A1-A8 can be read back as byte).
+ *
+ * Reads and writes are byte only.
+ */
+
+#if defined(CONFIG_ATARI_ROM_ISA)
+#define rom_in_8(addr) \
+ ({ u16 __v = (*(__force volatile u16 *) (addr)); __v >>= 8; __v; })
+#define rom_in_be16(addr) \
+ ({ u16 __v = (*(__force volatile u16 *) (addr)); __v >>= 8; __v; })
+#define rom_in_be32(addr) \
+ ({ u32 __v = (*(__force volatile u32 *) (addr)); __v >>= 8; __v; })
+#define rom_in_le16(addr) \
+ ({ u16 __v = le16_to_cpu(*(__force volatile u16 *) (addr)); __v >>= 8; __v; })
+#define rom_in_le32(addr) \
+ ({ u32 __v = le32_to_cpu(*(__force volatile u32 *) (addr)); __v >>= 8; __v; })
+
+#define rom_out_8(addr, b) ({u8 __w, __v = (b); __w = ((*(__force volatile u8 *) ((addr) + 0x10000 + (__v<<1)))); })
+#define rom_out_be16(addr, w) ({u16 __w, __v = (w); __w = ((*(__force volatile u16 *) ((addr) + 0x10000 + (__v<<1)))); })
+#define rom_out_be32(addr, l) ({u32 __w, __v = (l); __w = ((*(__force volatile u32 *) ((addr) + 0x10000 + (__v<<1)))); })
+#define rom_out_le16(addr, w) ({u16 __w, __v = cpu_to_le16(w); __w = ((*(__force volatile u16 *) ((addr) + 0x10000 + (__v<<1)))); })
+#define rom_out_le32(addr, l) ({u32 __w, __v = cpu_to_le32(l); __w = ((*(__force volatile u32 *) ((addr) + 0x10000 + (__v<<1)))); })
+
+#define raw_rom_inb rom_in_8
+#define raw_rom_inw rom_in_be16
+#define raw_rom_inl rom_in_be32
+
+#define raw_rom_outb(val, port) rom_out_8((port), (val))
+#define raw_rom_outw(val, port) rom_out_be16((port), (val))
+#define raw_rom_outl(val, port) rom_out_be32((port), (val))
+#endif /* CONFIG_ATARI_ROM_ISA */
+
static inline void raw_insb(volatile u8 __iomem *port, u8 *buf, unsigned int len)
{
unsigned int i;
@@ -342,6 +382,80 @@ static inline void raw_outsw_swapw(volat
: "d0", "a0", "a1", "d6");
}
+
+#if defined(CONFIG_ATARI_ROM_ISA)
+static inline void raw_rom_insb(volatile u8 __iomem *port, u8 *buf, unsigned int len)
+{
+ unsigned int i;
+
+ for (i = 0; i < len; i++)
+ *buf++ = rom_in_8(port);
+}
+
+static inline void raw_rom_outsb(volatile u8 __iomem *port, const u8 *buf,
+ unsigned int len)
+{
+ unsigned int i;
+
+ for (i = 0; i < len; i++)
+ rom_out_8(port, *buf++);
+}
+
+static inline void raw_rom_insw(volatile u16 __iomem *port, u16 *buf,
+ unsigned int nr)
+{
+ unsigned int i;
+
+ for (i = 0; i < nr; i++)
+ *buf++ = rom_in_be16(port);
+}
+
+static inline void raw_rom_outsw(volatile u16 __iomem *port, const u16 *buf,
+ unsigned int nr)
+{
+ unsigned int i;
+
+ for (i = 0; i < nr; i++)
+ rom_out_be16(port, *buf++);
+}
+
+static inline void raw_rom_insw_swapw(volatile u16 __iomem *port, u16 *buf,
+ unsigned int nr)
+{
+ unsigned int i;
+
+ for (i = 0; i < nr; i++)
+ *buf++ = rom_in_le16(port);
+}
+
+static inline void raw_rom_outsw_swapw(volatile u16 __iomem *port, const u16 *buf,
+ unsigned int nr)
+{
+ unsigned int i;
+
+ for (i = 0; i < nr; i++)
+ rom_out_le16(port, *buf++);
+}
+
+static inline void raw_rom_insl(volatile u16 __iomem *port, u32 *buf,
+ unsigned int nr)
+{
+ unsigned int i;
+
+ for (i = 0; i < nr; i++)
+ *buf++ = rom_in_be32(port);
+}
+
+static inline void raw_rom_outsl(volatile u16 __iomem *port, const u32 *buf,
+ unsigned int nr)
+{
+ unsigned int i;
+
+ for (i = 0; i < nr; i++)
+ rom_out_be32(port, *buf++);
+}
+#endif /* CONFIG_ATARI_ROM_ISA */
+
#endif /* __KERNEL__ */
#endif /* _RAW_IO_H */

View File

@ -0,0 +1,32 @@
Subject: b43 should depend on HAS_DMA
To: Michael Buesch <mb@bu3sch.de>, Stefano Brivio <st3@riseup.net>
Cc: linux-wireless@vger.kernel.org
b43 should depend on HAS_DMA
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
drivers/net/wireless/b43/Kconfig | 2 +-
drivers/net/wireless/b43legacy/Kconfig | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/net/wireless/b43/Kconfig
+++ b/drivers/net/wireless/b43/Kconfig
@@ -1,6 +1,6 @@
config B43
tristate "Broadcom 43xx wireless support (mac80211 stack)"
- depends on SSB_POSSIBLE && MAC80211 && WLAN_80211
+ depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
select SSB
select FW_LOADER
select HW_RANDOM
--- a/drivers/net/wireless/b43legacy/Kconfig
+++ b/drivers/net/wireless/b43legacy/Kconfig
@@ -1,6 +1,6 @@
config B43LEGACY
tristate "Broadcom 43xx-legacy wireless support (mac80211 stack)"
- depends on SSB_POSSIBLE && MAC80211 && WLAN_80211
+ depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
select SSB
select FW_LOADER
select HW_RANDOM

View File

@ -0,0 +1,15 @@
---
MAINTAINERS | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1323,7 +1323,7 @@ S: Supported
DOUBLETALK DRIVER
P: James R. Van Zandt
M: jrv@vanzandt.mv.com
-L: blinux-list@redhat.com
+L: blinux-list@redhat.com (subscribers-only)
S: Maintained
DRIVER CORE, KOBJECTS, AND SYSFS

View File

@ -0,0 +1,28 @@
Subject: checkpatch: Print filenames of patches
checkpatch: Print filenames of patches instead of the very uninformative
`Your patch'.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
This patch is not `checkpatch' clean :-)
Although I shortened 2 lines, they're still longer than 80 characters...
scripts/checkpatch.pl | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -1408,10 +1408,10 @@ sub process {
}
}
if ($clean == 1 && $quiet == 0) {
- print "Your patch has no obvious style problems and is ready for submission.\n"
+ print "$filename has no obvious style problems and is ready for submission.\n"
}
if ($clean == 0 && $quiet == 0) {
- print "Your patch has style problems, please review. If any of these errors\n";
+ print "$filename has style problems, please review. If any of these errors\n";
print "are false positives report them to the maintainer, see\n";
print "CHECKPATCH in MAINTAINERS.\n";
}

View File

@ -0,0 +1,22 @@
Subject: [PATCH] m68k: Ratelimit ide_release_lock bug messages
Ratelimit the annoying ide_release_lock bug messages as attempting to release
the already released lock does not appear to cause any harm in practice.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
include/asm-m68k/ide.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/include/asm-m68k/ide.h
+++ b/include/asm-m68k/ide.h
@@ -114,7 +114,8 @@ static __inline__ void ide_release_lock
{
if (MACH_IS_ATARI) {
if (falconide_intr_lock == 0) {
- printk("ide_release_lock: bug\n");
+ if (printk_ratelimit())
+ printk("ide_release_lock: bug\n");
return;
}
falconide_intr_lock = 0;

View File

@ -0,0 +1,22 @@
arch/m68k/q40/q40ints.c: In function 'q40_irq_handler':
arch/m68k/q40/q40ints.c:214: error: implicit declaration of function 'floppy_hardint'
FIXME q40_irq_handler() calls floppy_hardint():
arch/m68k/q40/q40ints.c:215: error: too few arguments to function 'floppy_hardint'
---
arch/m68k/q40/q40ints.c | 1 +
1 file changed, 1 insertion(+)
--- a/arch/m68k/q40/q40ints.c
+++ b/arch/m68k/q40/q40ints.c
@@ -16,6 +16,7 @@
#include <linux/errno.h>
#include <linux/interrupt.h>
+#include <asm/floppy.h>
#include <asm/ptrace.h>
#include <asm/system.h>
#include <asm/irq.h>

View File

@ -0,0 +1,244 @@
Subject: m68k: Replace `Linux/68k' by `Linux/m68k'
m68k: Replace `Linux/68k' by `Linux/m68k'
We switched to `Linux/m68k' a very long time ago
From: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
CREDITS | 4 ++--
Documentation/devices.txt | 10 +++++-----
Documentation/m68k/kernel-options.txt | 2 +-
arch/m68k/Kconfig | 2 +-
arch/m68k/ifpsp060/iskeleton.S | 6 +++---
arch/m68k/ifpsp060/os.S | 4 ++--
arch/m68k/kernel/head.S | 2 +-
arch/m68knommu/Kconfig | 2 +-
drivers/net/a2065.c | 4 ++--
drivers/net/a2065.h | 4 ++--
drivers/net/apne.c | 2 +-
include/asm-m68knommu/bootstd.h | 2 +-
include/linux/major.h | 2 +-
13 files changed, 23 insertions(+), 23 deletions(-)
--- a/CREDITS
+++ b/CREDITS
@@ -174,7 +174,7 @@ N: Ralf Baechle
E: ralf@gnu.org
P: 1024/AF7B30C1 CF 97 C2 CC 6D AE A7 FE C8 BA 9C FC 88 DE 32 C3
D: Linux/MIPS port
-D: Linux/68k hacker
+D: Linux/m68k hacker
S: Hauptstrasse 19
S: 79837 St. Blasien
S: Germany
@@ -2123,7 +2123,7 @@ D: dv1394
N: Hamish Macdonald
E: hamishm@lucent.com
-D: Linux/68k port
+D: Linux/m68k port
S: 32 Clydesdale Avenue
S: Kanata, Ontario
S: Canada K2M-2G7
--- a/Documentation/devices.txt
+++ b/Documentation/devices.txt
@@ -19,8 +19,8 @@ The LaTeX version of this document is no
This document is included by reference into the Filesystem Hierarchy
Standard (FHS). The FHS is available from http://www.pathname.com/fhs/.
-Allocations marked (68k/Amiga) apply to Linux/68k on the Amiga
-platform only. Allocations marked (68k/Atari) apply to Linux/68k on
+Allocations marked (m68k/Amiga) apply to Linux/m68k on the Amiga
+platform only. Allocations marked (m68k/Atari) apply to Linux/m68k on
the Atari platform only.
The symbol {2.6} means the allocation is obsolete and scheduled for
@@ -328,7 +328,7 @@ Your cooperation is appreciated.
2 = /dev/inportbm Microsoft Inport bus mouse
3 = /dev/atibm ATI XL bus mouse
4 = /dev/jbm J-mouse
- 4 = /dev/amigamouse Amiga mouse (68k/Amiga)
+ 4 = /dev/amigamouse Amiga mouse (m68k/Amiga)
5 = /dev/atarimouse Atari mouse
6 = /dev/sunmouse Sun mouse
7 = /dev/amigamouse1 Second Amiga mouse
@@ -691,7 +691,7 @@ Your cooperation is appreciated.
2 = /dev/staliomem2 Third Stallion card I/O memory
3 = /dev/staliomem3 Fourth Stallion card I/O memory
- 28 char Atari SLM ACSI laser printer (68k/Atari)
+ 28 char Atari SLM ACSI laser printer (m68k/Atari)
0 = /dev/slm0 First SLM laser printer
1 = /dev/slm1 Second SLM laser printer
...
@@ -701,7 +701,7 @@ Your cooperation is appreciated.
2 = /dev/sbpcd14 Panasonic CD-ROM controller 3 unit 2
3 = /dev/sbpcd15 Panasonic CD-ROM controller 3 unit 3
- 28 block ACSI disk (68k/Atari)
+ 28 block ACSI disk (m68k/Atari)
0 = /dev/ada First ACSI disk whole disk
16 = /dev/adb Second ACSI disk whole disk
32 = /dev/adc Third ACSI disk whole disk
--- a/Documentation/m68k/kernel-options.txt
+++ b/Documentation/m68k/kernel-options.txt
@@ -852,7 +852,7 @@ use of this option is now highly unrecom
Incorrect use can lead to unpredictable behavior, so please only use
this option if you *know* what you are doing and have a reason to do
so. In any case if you experience problems and need to use this
-option, please inform us about it by mailing to the Linux/68k kernel
+option, please inform us about it by mailing to the Linux/m68k kernel
mailing list.
The address mask set by this option specifies which addresses are
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -52,7 +52,7 @@ config NO_IOPORT
config NO_DMA
def_bool SUN3
-mainmenu "Linux/68k Kernel Configuration"
+mainmenu "Linux/m68k Kernel Configuration"
source "init/Kconfig"
--- a/arch/m68k/ifpsp060/iskeleton.S
+++ b/arch/m68k/ifpsp060/iskeleton.S
@@ -65,7 +65,7 @@
| To simply continue execution at the next instruction, just
| do an "rte".
|
-| Linux/68k: If returning to user space, check for needed reselections.
+| Linux/m68k: If returning to user space, check for needed reselections.
.global _060_isp_done
_060_isp_done:
@@ -87,7 +87,7 @@ _060_isp_done:
| a CHK exception stack frame from the Unimplemented Integer Instrcution
| stack frame and branches to this routine.
|
-| Linux/68k: commented out test for tracing
+| Linux/m68k: commented out test for tracing
.global _060_real_chk
_060_real_chk:
@@ -127,7 +127,7 @@ real_chk_end:
| then it create a Trace exception stack frame from the "chk" exception
| stack frame and branches to the _real_trace() entry point.
|
-| Linux/68k: commented out test for tracing
+| Linux/m68k: commented out test for tracing
.global _060_real_divbyzero
_060_real_divbyzero:
--- a/arch/m68k/ifpsp060/os.S
+++ b/arch/m68k/ifpsp060/os.S
@@ -65,7 +65,7 @@
| The result is that Unix processes are allowed to sleep as a consequence
| of a page fault during a _copyout.
|
-| Linux/68k: The _060_[id]mem_{read,write}_{byte,word,long} functions
+| Linux/m68k: The _060_[id]mem_{read,write}_{byte,word,long} functions
| (i.e. all the known length <= 4) are implemented by single moves
| statements instead of (more expensive) copy{in,out} calls, if
| working in user space
@@ -305,7 +305,7 @@ dmwls: move.l %d0,(%a0) | store super
| Assumes that D0/D1/A0/A1 are scratch registers. The _copyin/_copyout
| below assume that the SFC/DFC have been set previously.
|
-| Linux/68k: These are basically non-inlined versions of
+| Linux/m68k: These are basically non-inlined versions of
| memcpy_{to,from}fs, but without long-transfer optimization
| Note: Assumed that SFC/DFC are pointing correctly to user data
| space... Should be right, or are there any exceptions?
--- a/arch/m68k/kernel/head.S
+++ b/arch/m68k/kernel/head.S
@@ -1,7 +1,7 @@
/* -*- mode: asm -*-
**
** head.S -- This file contains the initial boot code for the
-** Linux/68k kernel.
+** Linux/m68k kernel.
**
** Copyright 1993 by Hamish Macdonald
**
--- a/arch/m68knommu/Kconfig
+++ b/arch/m68knommu/Kconfig
@@ -3,7 +3,7 @@
# see Documentation/kbuild/kconfig-language.txt.
#
-mainmenu "uClinux/68k (w/o MMU) Kernel Configuration"
+mainmenu "uClinux/m68k (w/o MMU) Kernel Configuration"
config M68K
bool
--- a/drivers/net/a2065.c
+++ b/drivers/net/a2065.c
@@ -1,5 +1,5 @@
/*
- * Amiga Linux/68k A2065 Ethernet Driver
+ * Amiga Linux/m68k A2065 Ethernet Driver
*
* (C) Copyright 1995-2003 by Geert Uytterhoeven <geert@linux-m68k.org>
*
@@ -12,7 +12,7 @@
*
* This program is based on
*
- * ariadne.?: Amiga Linux/68k Ariadne Ethernet Driver
+ * ariadne.?: Amiga Linux/m68k Ariadne Ethernet Driver
* (C) Copyright 1995 by Geert Uytterhoeven,
* Peter De Schrijver
*
--- a/drivers/net/a2065.h
+++ b/drivers/net/a2065.h
@@ -1,5 +1,5 @@
/*
- * Amiga Linux/68k A2065 Ethernet Driver
+ * Amiga Linux/m68k A2065 Ethernet Driver
*
* (C) Copyright 1995 by Geert Uytterhoeven <geert@linux-m68k.org>
*
@@ -7,7 +7,7 @@
*
* This program is based on
*
- * ariadne.?: Amiga Linux/68k Ariadne Ethernet Driver
+ * ariadne.?: Amiga Linux/m68k Ariadne Ethernet Driver
* (C) Copyright 1995 by Geert Uytterhoeven,
* Peter De Schrijver
*
--- a/drivers/net/apne.c
+++ b/drivers/net/apne.c
@@ -1,5 +1,5 @@
/*
- * Amiga Linux/68k 8390 based PCMCIA Ethernet Driver for the Amiga 1200
+ * Amiga Linux/m68k 8390 based PCMCIA Ethernet Driver for the Amiga 1200
*
* (C) Copyright 1997 Alain Malek
* (Alain.Malek@cryogen.com)
--- a/include/asm-m68knommu/bootstd.h
+++ b/include/asm-m68knommu/bootstd.h
@@ -30,7 +30,7 @@
#define __BN_flash_erase_range 19
#define __BN_flash_write_range 20
-/* Calling conventions compatible to (uC)linux/68k
+/* Calling conventions compatible to (uC)linux/m68k
* We use simmilar macros to call into the bootloader as for uClinux
*/
--- a/include/linux/major.h
+++ b/include/linux/major.h
@@ -53,7 +53,7 @@
#define STL_SIOMEMMAJOR 28
#define ACSI_MAJOR 28
#define AZTECH_CDROM_MAJOR 29
-#define GRAPHDEV_MAJOR 29 /* SparcLinux & Linux/68k /dev/fb */
+#define GRAPHDEV_MAJOR 29 /* SparcLinux & Linux/m68k /dev/fb */
#define CM206_CDROM_MAJOR 32
#define IDE2_MAJOR 33
#define IDE3_MAJOR 34

View File

@ -0,0 +1,22 @@
FIXME a few more to take care of
FIXME merge include files that are included only once into the .c file
git grep HOSTS_C
---
drivers/scsi/mvme147.c | 3 ---
1 file changed, 3 deletions(-)
--- a/drivers/scsi/mvme147.c
+++ b/drivers/scsi/mvme147.c
@@ -125,9 +125,6 @@ static int mvme147_bus_reset(struct scsi
return SUCCESS;
}
-#define HOSTS_C
-
-#include "mvme147.h"
static struct scsi_host_template driver_template = {
.proc_name = "MVME147",

View File

@ -0,0 +1,20 @@
drivers/scsi/mac_esp.c: if (MACHW_PRESENT(MAC_SCSI_96)) {
drivers/scsi/mac_esp.c: if (MACHW_PRESENT(MAC_SCSI_96_2)) {
include/asm-m68k/machw.h:#define MACHW_PRESENT(name) (mac_hw_present.name)
---
arch/m68k/mac/platform.c | 10 ++++++++++
1 file changed, 10 insertions(+)
--- /dev/null
+++ b/arch/m68k/mac/platform.c
@@ -0,0 +1,10 @@
+/*
+ * Copyright (C) 2007 Geert Uytterhoeven
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive
+ * for more details.
+ */
+
+#include <linux/platform_device.h>
+

View File

@ -0,0 +1,50 @@
# --- submitted
+ bugfix/m68k/2.6.24/m68k-cc-cross-prefix.diff m68k
+ bugfix/m68k/2.6.24/m68k-initrd-fix.diff m68k
# --- for 2.6.24 ---
# --- for 2.6.25 ---
+ bugfix/m68k/2.6.24/m68k-ARRAY_SIZE-cleanup.diff m68k
+ bugfix/m68k/2.6.24/dio-ARRAY_SIZE-cleanup.diff m68k
+ bugfix/m68k/2.6.24/atari-hades-pci-balance-iomap-and-iounmap.diff m68k
+ bugfix/m68k/2.6.24/nubus-kill-drivers-nubus-nubus_syms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-mac-mac_ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-hp300-ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-amiga-amiga_ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-atari-atari_ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-mvme16x-mvme16x_ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/mac68k-macii-adb-comment-correction.diff m68k
+ bugfix/m68k/2.6.24/mac68k-remove-dead-code.diff m68k
+ bugfix/m68k/2.6.24/mac68k-add-nubus-card-definitions-and-a-typo-fix.diff m68k
+ bugfix/m68k/2.6.24/mac68k-remove-dead-MAC_ADBKEYCODES.diff m68k
# --- pending ---
+ bugfix/m68k/2.6.24/633-atari_scc.diff m68k
+ bugfix/m68k/2.6.24/130-adbraw.diff m68k
#+ bugfix/m68k/2.6.24/133-arch.diff m68k
+ bugfix/m68k/2.6.24/134-atari-fat.diff m68k
+ bugfix/m68k/2.6.24/141-ide.diff m68k
+ bugfix/m68k/2.6.24/143-ioext.diff m68k
+ bugfix/m68k/2.6.24/149-mc68681.diff m68k
+ bugfix/m68k/2.6.24/152-pci.diff m68k
+ bugfix/m68k/2.6.24/448-ide.diff m68k
+ bugfix/m68k/2.6.24/478-serial.diff m68k
+ bugfix/m68k/2.6.24/atari-rom-isa.diff m68k
+ bugfix/m68k/2.6.24/atari-ethernec.diff m68k
+ bugfix/m68k/2.6.24/atari-aranym.diff m68k
+ bugfix/m68k/2.6.24/atari-ethernat.diff m68k
+ bugfix/m68k/2.6.24/falconide_intr_lock-ratelimit.diff m68k
+ bugfix/m68k/2.6.24/zorro-module-device-table.diff m68k
+ bugfix/m68k/2.6.24/m68k-q40ints.c-needs-asm-floppy.h.diff m68k
+ bugfix/m68k/2.6.24/blinux-list-is-subscribers-only.diff m68k
+ bugfix/m68k/2.6.24/b43-depends-on-HAS_DMA.diff m68k
+ bugfix/m68k/2.6.24/amiga-debug=mem.diff m68k
+ bugfix/m68k/2.6.24/m68k-scsi-HOST_C-cleanup.diff m68k
+ bugfix/m68k/2.6.24/amiga-platform-device.diff m68k
+ bugfix/m68k/2.6.24/atari-platform-device.diff m68k
+ bugfix/m68k/2.6.24/mac-platform-device.diff m68k
#+ bugfix/m68k/2.6.24/checkpatch-print-filenames.diff m68k
+ bugfix/m68k/2.6.24/m68k-replace-linux-68k-by-linux-m68k.diff m68k
+ bugfix/m68k/2.6.24/amiga-platform-device2.diff m68k

View File

@ -0,0 +1,238 @@
Subject: [PATCH] Add Amiga Zorro bus modalias support
Add Amiga Zorro bus modalias and uevent support
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
drivers/net/a2065.c | 1 +
drivers/net/ariadne.c | 1 +
drivers/net/hydra.c | 1 +
drivers/net/zorro8390.c | 1 +
drivers/scsi/zorro7xx.c | 1 +
drivers/video/cirrusfb.c | 1 +
drivers/video/fm2fb.c | 1 +
drivers/zorro/zorro-driver.c | 24 ++++++++++++++++++++++++
drivers/zorro/zorro-sysfs.c | 11 +++++++++++
include/linux/mod_devicetable.h | 11 +++++++++++
include/linux/zorro.h | 13 +------------
scripts/mod/file2alias.c | 14 ++++++++++++++
12 files changed, 68 insertions(+), 12 deletions(-)
--- a/drivers/net/a2065.c
+++ b/drivers/net/a2065.c
@@ -700,6 +700,7 @@ static struct zorro_device_id a2065_zorr
{ ZORRO_PROD_AMERISTAR_A2065 },
{ 0 }
};
+MODULE_DEVICE_TABLE(zorro, a2065_zorro_tbl);
static struct zorro_driver a2065_driver = {
.name = "a2065",
--- a/drivers/net/ariadne.c
+++ b/drivers/net/ariadne.c
@@ -148,6 +148,7 @@ static struct zorro_device_id ariadne_zo
{ ZORRO_PROD_VILLAGE_TRONIC_ARIADNE },
{ 0 }
};
+MODULE_DEVICE_TABLE(zorro, ariadne_zorro_tbl);
static struct zorro_driver ariadne_driver = {
.name = "ariadne",
--- a/drivers/net/hydra.c
+++ b/drivers/net/hydra.c
@@ -72,6 +72,7 @@ static struct zorro_device_id hydra_zorr
{ ZORRO_PROD_HYDRA_SYSTEMS_AMIGANET },
{ 0 }
};
+MODULE_DEVICE_TABLE(zorro, hydra_zorro_tbl);
static struct zorro_driver hydra_driver = {
.name = "hydra",
--- a/drivers/net/zorro8390.c
+++ b/drivers/net/zorro8390.c
@@ -102,6 +102,7 @@ static struct zorro_device_id zorro8390_
{ ZORRO_PROD_INDIVIDUAL_COMPUTERS_X_SURF, },
{ 0 }
};
+MODULE_DEVICE_TABLE(zorro, zorro8390_zorro_tbl);
static struct zorro_driver zorro8390_driver = {
.name = "zorro8390",
--- a/drivers/scsi/zorro7xx.c
+++ b/drivers/scsi/zorro7xx.c
@@ -65,6 +65,7 @@ static struct zorro_device_id zorro7xx_z
},
{ 0 }
};
+MODULE_DEVICE_TABLE(zorro, zorro7xx_zorro_tbl);
static int __devinit zorro7xx_init_one(struct zorro_dev *z,
const struct zorro_device_id *ent)
--- a/drivers/video/cirrusfb.c
+++ b/drivers/video/cirrusfb.c
@@ -298,6 +298,7 @@ static const struct zorro_device_id cirr
},
{ 0 }
};
+MODULE_DEVICE_TABLE(zorro, cirrusfb_zorro_table);
static const struct {
zorro_id id2;
--- a/drivers/video/fm2fb.c
+++ b/drivers/video/fm2fb.c
@@ -219,6 +219,7 @@ static struct zorro_device_id fm2fb_devi
{ ZORRO_PROD_HELFRICH_RAINBOW_II },
{ 0 }
};
+MODULE_DEVICE_TABLE(zorro, fm2fb_devices);
static struct zorro_driver fm2fb_driver = {
.name = "fm2fb",
--- a/drivers/zorro/zorro-driver.c
+++ b/drivers/zorro/zorro-driver.c
@@ -137,10 +137,34 @@ static int zorro_bus_match(struct device
return 0;
}
+static int zorro_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+#ifdef CONFIG_HOTPLUG
+ struct zorro_dev *z;
+
+ if (!dev)
+ return -ENODEV;
+
+ z = to_zorro_dev(dev);
+ if (!z)
+ return -ENODEV;
+
+ if (add_uevent_var(env, "ZORRO_ID=%08X", z->id) ||
+ add_uevent_var(env, "ZORRO_SLOT_NAME=%s", z->dev.bus_id) ||
+ add_uevent_var(env, "ZORRO_SLOT_ADDR=%04X", z->slotaddr) ||
+ add_uevent_var(env, "MODALIAS=" ZORRO_DEVICE_MODALIAS_FMT, z->id))
+ return -ENOMEM;
+
+ return 0;
+#else /* !CONFIG_HOTPLUG */
+ return -ENODEV;
+#endif /* !CONFIG_HOTPLUG */
+}
struct bus_type zorro_bus_type = {
.name = "zorro",
.match = zorro_bus_match,
+ .uevent = zorro_uevent,
.probe = zorro_device_probe,
.remove = zorro_device_remove,
};
--- a/drivers/zorro/zorro-sysfs.c
+++ b/drivers/zorro/zorro-sysfs.c
@@ -84,6 +84,16 @@ static struct bin_attribute zorro_config
.read = zorro_read_config,
};
+static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct zorro_dev *z = to_zorro_dev(dev);
+
+ return sprintf(buf, ZORRO_DEVICE_MODALIAS_FMT "\n", z->id);
+}
+
+static DEVICE_ATTR(modalias, S_IRUGO, modalias_show, NULL);
+
void zorro_create_sysfs_dev_files(struct zorro_dev *z)
{
struct device *dev = &z->dev;
@@ -95,6 +105,7 @@ void zorro_create_sysfs_dev_files(struct
device_create_file(dev, &dev_attr_slotaddr);
device_create_file(dev, &dev_attr_slotsize);
device_create_file(dev, &dev_attr_resource);
+ device_create_file(dev, &dev_attr_modalias);
sysfs_create_bin_file(&dev->kobj, &zorro_config_attr);
}
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -367,4 +367,15 @@ struct virtio_device_id {
};
#define VIRTIO_DEV_ANY_ID 0xffffffff
+
+struct zorro_device_id {
+ __u32 id; /* Device ID or ZORRO_WILDCARD */
+ kernel_ulong_t driver_data; /* Data private to the driver */
+};
+
+#define ZORRO_WILDCARD (0xffffffff) /* not official */
+
+#define ZORRO_DEVICE_MODALIAS_FMT "zorro:i%08X"
+
+
#endif /* LINUX_MOD_DEVICETABLE_H */
--- a/include/linux/zorro.h
+++ b/include/linux/zorro.h
@@ -38,8 +38,6 @@
typedef __u32 zorro_id;
-#define ZORRO_WILDCARD (0xffffffff) /* not official */
-
/* Include the ID list */
#include <linux/zorro_ids.h>
@@ -116,6 +114,7 @@ struct ConfigDev {
#include <linux/init.h>
#include <linux/ioport.h>
+#include <linux/mod_devicetable.h>
#include <asm/zorro.h>
@@ -155,16 +154,6 @@ extern struct bus_type zorro_bus_type;
/*
- * Zorro device IDs
- */
-
-struct zorro_device_id {
- zorro_id id; /* Device ID or ZORRO_WILDCARD */
- unsigned long driver_data; /* Data private to the driver */
-};
-
-
- /*
* Zorro device drivers
*/
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -539,6 +539,16 @@ static int do_virtio_entry(const char *f
return 1;
}
+/* Looks like: zorro:iN. */
+static int do_zorro_entry(const char *filename, struct zorro_device_id *id,
+ char *alias)
+{
+ id->id = TO_NATIVE(id->id);
+ strcpy(alias, "zorro:");
+ ADD(alias, "i", id->id != ZORRO_WILDCARD, id->id);
+ return 1;
+}
+
/* Ignore any prefix, eg. v850 prepends _ */
static inline int sym_is(const char *symbol, const char *name)
{
@@ -669,6 +679,10 @@ void handle_moddevtable(struct module *m
do_table(symval, sym->st_size,
sizeof(struct virtio_device_id), "virtio",
do_virtio_entry, mod);
+ else if (sym_is(symname, "__mod_zorro_device_table"))
+ do_table(symval, sym->st_size,
+ sizeof(struct zorro_device_id), "zorro",
+ do_zorro_entry, mod);
free(zeros);
}

View File

@ -1,22 +1,52 @@
+ features/all/vserver/vs2.2.0-rc5.patch *_vserver *_xen-vserver
+ features/all/vserver/bindmount-dev.patch *_vserver *_xen-vserver
+ bugfix/m68k/2.6.24/m68k-cc-cross-prefix.diff
+ bugfix/m68k/2.6.24/m68k-initrd-fix.diff
+ bugfix/m68k/2.6.24/m68k-ARRAY_SIZE-cleanup.diff
+ bugfix/m68k/2.6.24/dio-ARRAY_SIZE-cleanup.diff
+ bugfix/m68k/2.6.24/atari-hades-pci-balance-iomap-and-iounmap.diff
+ bugfix/m68k/2.6.24/nubus-kill-drivers-nubus-nubus_syms-c.diff
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-mac-mac_ksyms-c.diff
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-hp300-ksyms-c.diff
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-amiga-amiga_ksyms-c.diff
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-atari-atari_ksyms-c.diff
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-mvme16x-mvme16x_ksyms-c.diff
+ bugfix/m68k/2.6.24/mac68k-macii-adb-comment-correction.diff
+ bugfix/m68k/2.6.24/mac68k-remove-dead-code.diff
+ bugfix/m68k/2.6.24/mac68k-add-nubus-card-definitions-and-a-typo-fix.diff
+ bugfix/m68k/2.6.24/mac68k-remove-dead-MAC_ADBKEYCODES.diff
+ bugfix/m68k/2.6.24/633-atari_scc.diff
+ bugfix/m68k/2.6.24/130-adbraw.diff
+ bugfix/m68k/2.6.24/133-arch.diff
+ bugfix/m68k/2.6.24/134-atari-fat.diff
+ bugfix/m68k/2.6.24/141-ide.diff
# --- submitted
+ bugfix/m68k/2.6.24/m68k-cc-cross-prefix.diff m68k
+ bugfix/m68k/2.6.24/m68k-initrd-fix.diff m68k
# --- for 2.6.24 ---
# --- for 2.6.25 ---
+ bugfix/m68k/2.6.24/m68k-ARRAY_SIZE-cleanup.diff m68k
+ bugfix/m68k/2.6.24/dio-ARRAY_SIZE-cleanup.diff m68k
+ bugfix/m68k/2.6.24/atari-hades-pci-balance-iomap-and-iounmap.diff m68k
+ bugfix/m68k/2.6.24/nubus-kill-drivers-nubus-nubus_syms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-mac-mac_ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-hp300-ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-amiga-amiga_ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-atari-atari_ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/m68k-kill-arch-m68k-mvme16x-mvme16x_ksyms-c.diff m68k
+ bugfix/m68k/2.6.24/mac68k-macii-adb-comment-correction.diff m68k
+ bugfix/m68k/2.6.24/mac68k-remove-dead-code.diff m68k
+ bugfix/m68k/2.6.24/mac68k-add-nubus-card-definitions-and-a-typo-fix.diff m68k
+ bugfix/m68k/2.6.24/mac68k-remove-dead-MAC_ADBKEYCODES.diff m68k
# --- pending ---
+ bugfix/m68k/2.6.24/633-atari_scc.diff m68k
+ bugfix/m68k/2.6.24/130-adbraw.diff m68k
#+ bugfix/m68k/2.6.24/133-arch.diff m68k
+ bugfix/m68k/2.6.24/134-atari-fat.diff m68k
+ bugfix/m68k/2.6.24/141-ide.diff m68k
+ bugfix/m68k/2.6.24/143-ioext.diff m68k
+ bugfix/m68k/2.6.24/149-mc68681.diff m68k
+ bugfix/m68k/2.6.24/152-pci.diff m68k
+ bugfix/m68k/2.6.24/448-ide.diff m68k
+ bugfix/m68k/2.6.24/478-serial.diff m68k
+ bugfix/m68k/2.6.24/atari-rom-isa.diff m68k
+ bugfix/m68k/2.6.24/atari-ethernec.diff m68k
+ bugfix/m68k/2.6.24/atari-aranym.diff m68k
+ bugfix/m68k/2.6.24/atari-ethernat.diff m68k
+ bugfix/m68k/2.6.24/falconide_intr_lock-ratelimit.diff m68k
+ bugfix/m68k/2.6.24/zorro-module-device-table.diff m68k
+ bugfix/m68k/2.6.24/m68k-q40ints.c-needs-asm-floppy.h.diff m68k
+ bugfix/m68k/2.6.24/blinux-list-is-subscribers-only.diff m68k
+ bugfix/m68k/2.6.24/b43-depends-on-HAS_DMA.diff m68k
+ bugfix/m68k/2.6.24/amiga-debug=mem.diff m68k
+ bugfix/m68k/2.6.24/m68k-scsi-HOST_C-cleanup.diff m68k
+ bugfix/m68k/2.6.24/amiga-platform-device.diff m68k
+ bugfix/m68k/2.6.24/atari-platform-device.diff m68k
+ bugfix/m68k/2.6.24/mac-platform-device.diff m68k
#+ bugfix/m68k/2.6.24/checkpatch-print-filenames.diff m68k
+ bugfix/m68k/2.6.24/m68k-replace-linux-68k-by-linux-m68k.diff m68k
+ bugfix/m68k/2.6.24/amiga-platform-device2.diff m68k