[kernel] r9136 - in dists/trunk/linux-2.6/debian: . patches/bugfix/m68k patches/series

Christian T. Steigies cts at alioth.debian.org
Sun Jul 15 13:01:35 UTC 2007


Author: cts
Date: Sun Jul 15 13:01:35 2007
New Revision: 9136

Log:
Add 2.6.22 patches from linux-m68k CVS


Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/630-extern-cleanup.diff.1
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/add-termios2.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/ask-m68k-io.h-missing.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/falconide_intr_lock-ratelimit.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-53c700-cleanups.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-amiga-z2ram-kill-TRUE-FALSE.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-arbitary-speed-tty-support.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-do-not-include-RODATA-in-text-segment.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-page.h-needs-compiler.h.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-scsi-Kconfig-hickups.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-use-_AC.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/split-amiga7xx.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/zorro-module-device-table.diff
   dists/trunk/linux-2.6/debian/patches/bugfix/m68k/zorro_config_attr-read-only.diff
Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/patches/series/1~experimental.1-extra

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	(original)
+++ dists/trunk/linux-2.6/debian/changelog	Sun Jul 15 13:01:35 2007
@@ -16,7 +16,8 @@
   [ Christian T. Steigies ]
   * Add module.lds to kernel headers
   * Re-enable atari-scsi and atari-rom-isa patches
-  * enable INPUT_UINPUT on mac
+  * Enable INPUT_UINPUT on mac
+  * Add 2.6.22 patches from linux-m68k CVS
 
   [ Martin Michlmayr ]
   * [mips] Add patch from Yoichi Yuasa to fix IDE on Cobalt.
@@ -24,7 +25,7 @@
   [ dann frazier ]
   * Enable vserver flavour for ia64 (closes: #423232)
 
- -- Christian T. Steigies <cts at debian.org>  Fri, 13 Jul 2007 23:39:57 +0200
+ -- Christian T. Steigies <cts at debian.org>  Sun, 15 Jul 2007 14:58:22 +0200
 
 linux-2.6 (2.6.22~rc5-1~experimental.1) experimental; urgency=low
 

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/630-extern-cleanup.diff.1
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/630-extern-cleanup.diff.1	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,26 @@
+To: linus, akpm
+Cc: lkml
+Subject: [PATCH] m68k: Kill superfluous externs
+
+Kill a few superfluous extern declarations.
+
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+---
+ arch/m68k/mm/motorola.c |    6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+--- a/arch/m68k/mm/motorola.c
++++ b/arch/m68k/mm/motorola.c
+@@ -210,11 +210,7 @@ void __init paging_init(void)
+ 	int i;
+ 
+ #ifdef DEBUG
+-	{
+-		extern unsigned long availmem;
+-		printk ("start of paging_init (%p, %lx)\n",
+-			kernel_pg_dir, availmem);
+-	}
++	printk ("start of paging_init (%p, %lx)\n", kernel_pg_dir, availmem);
+ #endif
+ 
+ 	/* Fix the cache mode in the page descriptors for the 680[46]0.  */

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/add-termios2.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/add-termios2.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,374 @@
+From alan at lxorguk.ukuu.org.uk Wed May 23 21:55:17 2007
+Date: Wed, 23 May 2007 20:56:45 +0100
+From: Alan Cox <alan at lxorguk.ukuu.org.uk>
+To: Geert Uytterhoeven <geert at linux-m68k.org>
+Cc: Roman Zippel <zippel at linux-m68k.org>, Linux Kernel Development <linux-kernel at vger.kernel.org>, akpm at osdl.org, rmk at arm.linux.kernel.org, spyro at f2s.com, starvik at axis.com, ysato at users.sourceforge.jp, "Luck,  Tony" <tony.luck at intel.com>, takata at linux-m32r.org, chris at zankel.net, uclinux-v850 at lsi.nec.co.jp, kyle at parisc-linux.org, linux-mips at linux-mips.org
+Subject: Re: [PATCH] m68k: Enable arbitary speed tty support
+
+> > +#define TCSETS2		_IOW('T',0x2B, struct termios2)
+> > +#define TCSETSW2	_IOW('T',0x2C, struct termios2)
+> > +#define TCSETSF2	_IOW('T',0x2D, struct termios2)
+> 
+> Where is `struct termios2' defined? Right now it doesn't compile because
+> of that.
+> 
+
+Sorry, shortage of qualified gnomes: One of them forgot to post this diff first
+
+Add the termios2 structure ready for enabling on most platforms. One or two like
+Sparc are plain weird so have been left alone. Most can use the same structure as
+ktermios for termios2 (ie the newer ioctl uses the structure matching the current
+kernel structure)
+
+(cc'd various maintainers who get stuff)
+
+Signed-off-by: Alan Cox <alan at redhat.com>
+
+ddiff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.22-rc1-mm1/include/asm-arm/termbits.h linux-2.6.22-rc1-mm1/include/asm-arm/termbits.h
+---
+ include/asm-arm/termbits.h      |   11 +++++++++++
+ include/asm-arm26/termbits.h    |   12 +++++++++++-
+ include/asm-avr32/termbits.h    |   11 +++++++++++
+ include/asm-blackfin/termbits.h |   11 +++++++++++
+ include/asm-cris/termbits.h     |   11 +++++++++++
+ include/asm-frv/termbits.h      |   11 +++++++++++
+ include/asm-h8300/termbits.h    |   11 +++++++++++
+ include/asm-ia64/termbits.h     |   11 +++++++++++
+ include/asm-m32r/termbits.h     |   11 +++++++++++
+ include/asm-m68k/termbits.h     |   11 +++++++++++
+ include/asm-mips/termbits.h     |   11 +++++++++++
+ include/asm-parisc/termbits.h   |   11 +++++++++++
+ include/asm-s390/termbits.h     |   11 +++++++++++
+ include/asm-sh/termbits.h       |   11 +++++++++++
+ include/asm-v850/termbits.h     |   11 +++++++++++
+ include/asm-xtensa/termbits.h   |   11 +++++++++++
+ 16 files changed, 176 insertions(+), 1 deletion(-)
+
+--- a/include/asm-arm/termbits.h
++++ b/include/asm-arm/termbits.h
+@@ -26,6 +26,17 @@ struct termios2 {
+ 	speed_t c_ospeed;		/* output speed */
+ };
+ 
++struct termios_2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-arm26/termbits.h
++++ b/include/asm-arm26/termbits.h
+@@ -15,7 +15,7 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
+-struct ktermios {
++struct termios2 {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+ 	tcflag_t c_cflag;		/* control mode flags */
+@@ -26,6 +26,16 @@ struct ktermios {
+ 	speed_t c_ospeed;		/* output speed */
+ };
+ 
++struct ktermios {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
+ 
+ /* c_cc characters */
+ #define VINTR 0
+--- a/include/asm-avr32/termbits.h
++++ b/include/asm-avr32/termbits.h
+@@ -17,6 +17,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-blackfin/termbits.h
++++ b/include/asm-blackfin/termbits.h
+@@ -17,6 +17,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];	/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;               /* input mode flags */
++	tcflag_t c_oflag;               /* output mode flags */
++	tcflag_t c_cflag;               /* control mode flags */
++	tcflag_t c_lflag;               /* local mode flags */
++	cc_t c_line;                    /* line discipline */
++	cc_t c_cc[NCCS];                /* control characters */
++	speed_t c_ispeed;               /* input speed */
++	speed_t c_ospeed;               /* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;               /* input mode flags */
+ 	tcflag_t c_oflag;               /* output mode flags */
+--- a/include/asm-cris/termbits.h
++++ b/include/asm-cris/termbits.h
+@@ -19,6 +19,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-frv/termbits.h
++++ b/include/asm-frv/termbits.h
+@@ -17,6 +17,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-h8300/termbits.h
++++ b/include/asm-h8300/termbits.h
+@@ -17,6 +17,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-ia64/termbits.h
++++ b/include/asm-ia64/termbits.h
+@@ -26,6 +26,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-m32r/termbits.h
++++ b/include/asm-m32r/termbits.h
+@@ -17,6 +17,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-m68k/termbits.h
++++ b/include/asm-m68k/termbits.h
+@@ -17,6 +17,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-mips/termbits.h
++++ b/include/asm-mips/termbits.h
+@@ -30,6 +30,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-parisc/termbits.h
++++ b/include/asm-parisc/termbits.h
+@@ -17,6 +17,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-s390/termbits.h
++++ b/include/asm-s390/termbits.h
+@@ -25,6 +25,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-sh/termbits.h
++++ b/include/asm-sh/termbits.h
+@@ -17,6 +17,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-v850/termbits.h
++++ b/include/asm-v850/termbits.h
+@@ -17,6 +17,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */
+--- a/include/asm-xtensa/termbits.h
++++ b/include/asm-xtensa/termbits.h
+@@ -30,6 +30,17 @@ struct termios {
+ 	cc_t c_cc[NCCS];		/* control characters */
+ };
+ 
++struct termios2 {
++	tcflag_t c_iflag;		/* input mode flags */
++	tcflag_t c_oflag;		/* output mode flags */
++	tcflag_t c_cflag;		/* control mode flags */
++	tcflag_t c_lflag;		/* local mode flags */
++	cc_t c_line;			/* line discipline */
++	cc_t c_cc[NCCS];		/* control characters */
++	speed_t c_ispeed;		/* input speed */
++	speed_t c_ospeed;		/* output speed */
++};
++
+ struct ktermios {
+ 	tcflag_t c_iflag;		/* input mode flags */
+ 	tcflag_t c_oflag;		/* output mode flags */

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/ask-m68k-io.h-missing.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/ask-m68k-io.h-missing.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,57 @@
+--- build-m68k-none-atari/include/asm-m68k/io.h	2007-07-13 00:44:22.000000000 +0200
++++ build-m68k-none-atari/include/asm-m68k/io.h	2007-05-27 21:27:29.000000000 +0200
+@@ -245,9 +245,16 @@
+ #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)  \
+@@ -315,12 +322,20 @@
+        (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 */
+@@ -421,8 +436,16 @@
+ 
+ #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)

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/falconide_intr_lock-ratelimit.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/falconide_intr_lock-ratelimit.diff	Sun Jul 15 13:01:35 2007
@@ -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 at 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;

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-53c700-cleanups.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-53c700-cleanups.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,186 @@
+Subject: [PATCH] scsi: m68k 53c7xx codingstyle cleanups
+
+scsi: m68k 53c7xx codingstyle cleanups, as suggested by Christoph Hellwig
+
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+---
+ drivers/scsi/amiga7xx.c      |   29 +++++++++++++++++------------
+ drivers/scsi/bvme6000_scsi.c |   20 ++++++++++++--------
+ drivers/scsi/mvme16x_scsi.c  |   20 ++++++++++++--------
+ 3 files changed, 41 insertions(+), 28 deletions(-)
+
+--- a/drivers/scsi/amiga7xx.c
++++ b/drivers/scsi/amiga7xx.c
+@@ -101,7 +101,6 @@ static int __devinit amiga7xx_init_one(s
+ 	}
+ 
+ 	hostdata = kmalloc(sizeof(struct NCR_700_Host_Parameters), GFP_KERNEL);
+-
+ 	if (hostdata == NULL) {
+ 		printk(KERN_ERR "amiga7xx: Failed to allocate host data\n");
+ 		goto out_release;
+@@ -124,9 +123,11 @@ static int __devinit amiga7xx_init_one(s
+ 	amiga7xx_scsi_driver_template.name = zdd->name;
+ 
+ 	/* and register the chip */
+-	if ((host = NCR_700_detect(&amiga7xx_scsi_driver_template, hostdata, &z->dev))
+-	   == NULL) {
+-		printk(KERN_ERR "amiga7xx-scsi: No host detected; board configuration problem?\n");
++	host = NCR_700_detect(&amiga7xx_scsi_driver_template,
++			hostdata, &z->dev);
++	if (!host) {
++		printk(KERN_ERR "amiga7xx-scsi: No host detected; "
++				"board configuration problem?\n");
+ 		goto out_free;
+ 	}
+ 
+@@ -134,7 +135,8 @@ static int __devinit amiga7xx_init_one(s
+ 	host->base = ioaddr;
+ 	host->irq = IRQ_AMIGA_PORTS;
+ 
+-	if (request_irq(host->irq, NCR_700_intr, IRQF_SHARED, "amiga7xx-scsi", host)) {
++	if (request_irq(host->irq, NCR_700_intr, IRQF_SHARED,
++			"amiga7xx-scsi", host)) {
+ 		printk(KERN_ERR "amiga7xx-scsi: request_irq failed\n");
+ 		goto out_put_host;
+ 	}
+@@ -188,7 +190,8 @@ static int __devinit a4000t_probe(struct
+ 	if (!(MACH_IS_AMIGA && AMIGAHW_PRESENT(A4000_SCSI)))
+ 		goto out;
+ 
+-	if (!request_mem_region(A4000T_SCSI_ADDR, 0x1000, "A4000T builtin SCSI"))
++	if (!request_mem_region(A4000T_SCSI_ADDR, 0x1000,
++			"A4000T builtin SCSI"))
+ 		goto out;
+ 
+ 	hostdata = kmalloc(sizeof(struct NCR_700_Host_Parameters), GFP_KERNEL);
+@@ -206,9 +209,10 @@ static int __devinit a4000t_probe(struct
+ 	hostdata->dcntl_extra = EA_710;
+ 
+ 	/* and register the chip */
+-	if ((host = NCR_700_detect(&amiga7xx_scsi_driver_template, hostdata, dev))
+-	   == NULL) {
+-		printk(KERN_ERR "a4000t-scsi: No host detected; board configuration problem?\n");
++	host = NCR_700_detect(&amiga7xx_scsi_driver_template, hostdata, dev);
++	if (!host) {
++		printk(KERN_ERR "a4000t-scsi: No host detected; "
++				"board configuration problem?\n");
+ 		goto out_free;
+ 	}
+ 
+@@ -262,11 +266,12 @@ static int __init amiga7xx_scsi_init(voi
+ {
+ 	int err;
+ 
+-	if ((err = driver_register(&a4000t_scsi_driver)))
++	err = driver_register(&a4000t_scsi_driver);
++	if (err)
+ 		return err;
+ 
+-	a4000t_scsi_device = platform_device_register_simple("a4000t-scsi", -1, NULL, 0);
+-
++	a4000t_scsi_device = platform_device_register_simple("a4000t-scsi",
++			-1, NULL, 0);
+ 	if (IS_ERR(a4000t_scsi_device)) {
+ 		driver_unregister(&a4000t_scsi_driver);
+ 		return PTR_ERR(a4000t_scsi_device);
+--- a/drivers/scsi/bvme6000_scsi.c
++++ b/drivers/scsi/bvme6000_scsi.c
+@@ -44,7 +44,8 @@ bvme6000_probe(struct device *dev)
+ 
+ 	hostdata = kmalloc(sizeof(struct NCR_700_Host_Parameters), GFP_KERNEL);
+ 	if (hostdata == NULL) {
+-		printk(KERN_ERR "bvme6000-scsi: Failed to allocate host data\n");
++		printk(KERN_ERR "bvme6000-scsi: "
++				"Failed to allocate host data\n");
+ 		goto out;
+ 	}
+ 	memset(hostdata, 0, sizeof(struct NCR_700_Host_Parameters));
+@@ -58,15 +59,17 @@ bvme6000_probe(struct device *dev)
+ 	hostdata->ctest7_extra = CTEST7_TT1;
+ 
+ 	/* and register the chip */
+-	if ((host = NCR_700_detect(&bvme6000_scsi_driver_template, hostdata, dev))
+-	   == NULL) {
+-		printk(KERN_ERR "bvme6000-scsi: No host detected; board configuration problem?\n");
++	host = NCR_700_detect(&bvme6000_scsi_driver_template, hostdata, dev);
++	if (!host) {
++		printk(KERN_ERR "bvme6000-scsi: No host detected; "
++				"board configuration problem?\n");
+ 		goto out_free;
+ 	}
+ 	host->base = BVME_NCR53C710_BASE;
+ 	host->this_id = 7;
+ 	host->irq = BVME_IRQ_SCSI;
+-	if (request_irq(BVME_IRQ_SCSI, NCR_700_intr, 0, "bvme6000-scsi", host)) {
++	if (request_irq(BVME_IRQ_SCSI, NCR_700_intr, 0, "bvme6000-scsi",
++			host)) {
+ 		printk(KERN_ERR "bvme6000-scsi: request_irq failed\n");
+ 		goto out_put_host;
+ 	}
+@@ -109,11 +112,12 @@ static int __init bvme6000_scsi_init(voi
+ {
+ 	int err;
+ 
+-	if ((err = driver_register(&bvme6000_scsi_driver)))
++	err = driver_register(&bvme6000_scsi_driver);
++	if (err)
+ 		return err;
+ 
+-	bvme6000_scsi_device = platform_device_register_simple("bvme6000-scsi", -1, NULL, 0);
+-
++	bvme6000_scsi_device = platform_device_register_simple("bvme6000-scsi",
++							       -1, NULL, 0);
+ 	if (IS_ERR(bvme6000_scsi_device)) {
+ 		driver_unregister(&bvme6000_scsi_driver);
+ 		return PTR_ERR(bvme6000_scsi_device);
+--- a/drivers/scsi/mvme16x_scsi.c
++++ b/drivers/scsi/mvme16x_scsi.c
+@@ -43,13 +43,15 @@ mvme16x_probe(struct device *dev)
+ 		goto out;
+ 
+ 	if (mvme16x_config & MVME16x_CONFIG_NO_SCSICHIP) {
+-		printk(KERN_INFO "mvme16x-scsi: detection disabled, SCSI chip not present\n");
++		printk(KERN_INFO "mvme16x-scsi: detection disabled, "
++				 "SCSI chip not present\n");
+ 		goto out;
+ 	}
+ 
+ 	hostdata = kmalloc(sizeof(struct NCR_700_Host_Parameters), GFP_KERNEL);
+ 	if (hostdata == NULL) {
+-		printk(KERN_ERR "mvme16x-scsi: Failed to allocate host data\n");
++		printk(KERN_ERR "mvme16x-scsi: "
++				"Failed to allocate host data\n");
+ 		goto out;
+ 	}
+ 	memset(hostdata, 0, sizeof(struct NCR_700_Host_Parameters));
+@@ -63,9 +65,10 @@ mvme16x_probe(struct device *dev)
+ 	hostdata->ctest7_extra = CTEST7_TT1;
+ 
+ 	/* and register the chip */
+-	if ((host = NCR_700_detect(&mvme16x_scsi_driver_template, hostdata, dev))
+-	   == NULL) {
+-		printk(KERN_ERR "mvme16x-scsi: No host detected; board configuration problem?\n");
++	host = NCR_700_detect(&mvme16x_scsi_driver_template, hostdata, dev);
++	if (!host) {
++		printk(KERN_ERR "mvme16x-scsi: No host detected; "
++				"board configuration problem?\n");
+ 		goto out_free;
+ 	}
+ 	host->this_id = 7;
+@@ -132,11 +135,12 @@ static int __init mvme16x_scsi_init(void
+ {
+ 	int err;
+ 
+-	if ((err = driver_register(&mvme16x_scsi_driver)))
++	err = driver_register(&mvme16x_scsi_driver);
++	if (err)
+ 		return err;
+ 
+-	mvme16x_scsi_device = platform_device_register_simple("mvme16x-scsi", -1, NULL, 0);
+-
++	mvme16x_scsi_device = platform_device_register_simple("mvme16x-scsi",
++							      -1, NULL, 0);
+ 	if (IS_ERR(mvme16x_scsi_device)) {
+ 		driver_unregister(&mvme16x_scsi_driver);
+ 		return PTR_ERR(mvme16x_scsi_device);

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-amiga-z2ram-kill-TRUE-FALSE.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-amiga-z2ram-kill-TRUE-FALSE.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,27 @@
+Subject: [PATCH] drivers/block/z2ram: Remove TRUE/FALSE defines
+Cc: Jens Axboe <jens.axboe at oracle.com>
+
+From: Richard Knutsson <ricknu-0 at student.ltu.se>
+
+Remove defines of TRUE and FALSE
+  * not used in the file
+  * the file is not included somewhere else
+
+Signed-off-by: Richard Knutsson <ricknu-0 at student.ltu.se>
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+---
+ drivers/block/z2ram.c |    3 ---
+ 1 file changed, 3 deletions(-)
+
+--- a/drivers/block/z2ram.c
++++ b/drivers/block/z2ram.c
+@@ -44,9 +44,6 @@
+ extern int m68k_realnum_memory;
+ extern struct mem_info m68k_memory[NUM_MEMINFO];
+ 
+-#define TRUE                  (1)
+-#define FALSE                 (0)
+-
+ #define Z2MINOR_COMBINED      (0)
+ #define Z2MINOR_Z2ONLY        (1)
+ #define Z2MINOR_CHIPONLY      (2)

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-arbitary-speed-tty-support.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-arbitary-speed-tty-support.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,68 @@
+From alan at lxorguk.ukuu.org.uk Wed May 23 18:43:50 2007
+Date: Wed, 23 May 2007 17:44:46 +0100
+From: Alan Cox <alan at lxorguk.ukuu.org.uk>
+To: geert at linux-m68k.org, zippel at linux-m68k.org
+Subject: [PATCH] m68k: Enable arbitary speed tty support
+
+Add the needed constants and defines to activate the existing code. 
+
+Signed-off-by: Alan Cox <alan at redhat.com>
+
+---
+ include/asm-m68k/ioctls.h   |    4 ++++
+ include/asm-m68k/termbits.h |    5 ++++-
+ include/asm-m68k/termios.h  |    6 ++++--
+ 3 files changed, 12 insertions(+), 3 deletions(-)
+
+--- a/include/asm-m68k/ioctls.h
++++ b/include/asm-m68k/ioctls.h
+@@ -46,6 +46,10 @@
+ #define TIOCSBRK	0x5427  /* BSD compatibility */
+ #define TIOCCBRK	0x5428  /* BSD compatibility */
+ #define TIOCGSID	0x5429  /* Return the session ID of FD */
++#define TCGETS2		_IOR('T',0x2A, struct termios2)
++#define TCSETS2		_IOW('T',0x2B, struct termios2)
++#define TCSETSW2	_IOW('T',0x2C, struct termios2)
++#define TCSETSF2	_IOW('T',0x2D, struct termios2)
+ #define TIOCGPTN	_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
+ #define TIOCSPTLCK	_IOW('T',0x31, int)  /* Lock/unlock Pty */
+ 
+--- a/include/asm-m68k/termbits.h
++++ b/include/asm-m68k/termbits.h
+@@ -141,6 +141,7 @@ struct ktermios {
+ #define HUPCL	0002000
+ #define CLOCAL	0004000
+ #define CBAUDEX 0010000
++#define    BOTHER 0010000
+ #define    B57600 0010001
+ #define   B115200 0010002
+ #define   B230400 0010003
+@@ -156,10 +157,12 @@ struct ktermios {
+ #define  B3000000 0010015
+ #define  B3500000 0010016
+ #define  B4000000 0010017
+-#define CIBAUD	  002003600000	/* input baud rate (not used) */
++#define CIBAUD	  002003600000		/* input baud rate */
+ #define CMSPAR	  010000000000		/* mark or space (stick) parity */
+ #define CRTSCTS	  020000000000		/* flow control */
+ 
++#define IBSHIFT	16			/* Shift from CBAUD to CIBAUD */
++
+ /* c_lflag bits */
+ #define ISIG	0000001
+ #define ICANON	0000002
+--- a/include/asm-m68k/termios.h
++++ b/include/asm-m68k/termios.h
+@@ -82,8 +82,10 @@ struct termio {
+ 	copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
+ })
+ 
+-#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios))
+-#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios))
++#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
++#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
++#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
++#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
+ 
+ #endif	/* __KERNEL__ */
+ 

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-do-not-include-RODATA-in-text-segment.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-do-not-include-RODATA-in-text-segment.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,36 @@
+Subject: [PATCH] m68k: Don't include RODATA into text segment
+
+From: Roman Zippel <zippel at linux-m68k.org>
+
+Don't include RODATA into text segment as it includes the kallsyms data
+and can cause spurious link failures (layout differences can change the
+number of symbols in kallsym, i.e. when a symbol is equal to _etext it's
+not included).
+
+Signed-off-by: Roman Zippel <zippel at linux-m68k.org>
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+
+---
+ arch/m68k/kernel/vmlinux-std.lds |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/m68k/kernel/vmlinux-std.lds
++++ b/arch/m68k/kernel/vmlinux-std.lds
+@@ -18,6 +18,8 @@ SECTIONS
+ 	*(.gnu.warning)
+ 	} :text = 0x4e75
+ 
++  _etext = .;			/* End of text section */
++
+   . = ALIGN(16);		/* Exception table */
+   __start___ex_table = .;
+   __ex_table : { *(__ex_table) }
+@@ -25,8 +27,6 @@ SECTIONS
+ 
+   RODATA
+ 
+-  _etext = .;			/* End of text section */
+-
+   .data : {			/* Data */
+ 	DATA_DATA
+ 	CONSTRUCTORS

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-page.h-needs-compiler.h.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-page.h-needs-compiler.h.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,20 @@
+Subject: [PATCH] m68k: <asm/page.h> needs <linux/compiler.h>
+
+m68k: <asm/page.h> needs <linux/compiler.h> because of __attribute_const__
+
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+---
+ include/asm-m68k/page.h |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/include/asm-m68k/page.h
++++ b/include/asm-m68k/page.h
+@@ -27,6 +27,8 @@
+ 
+ #ifndef __ASSEMBLY__
+ 
++#include <linux/compiler.h>
++
+ #include <asm/module.h>
+ 
+ #define get_user_page(vaddr)		__get_free_page(GFP_KERNEL)

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-scsi-Kconfig-hickups.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-scsi-Kconfig-hickups.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,29 @@
+Subject: m68k: Fix a few hickups in drivers/scsi/Kconfig
+
+m68k: Fix a few hickups in drivers/scsi/Kconfig
+
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+---
+ drivers/scsi/Kconfig |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/Kconfig
++++ b/drivers/scsi/Kconfig
+@@ -1551,7 +1551,7 @@ config A3000_SCSI
+ 	  built-in SCSI controller, say Y. Otherwise, say N.
+ 
+ 	  To compile this driver as a module, choose M here: the
+-	  module will be called wd33c93.
++	  module will be called a3000.
+ 
+ config A2091_SCSI
+ 	tristate "A2091/A590 WD33C93A support"
+@@ -1561,7 +1561,7 @@ config A2091_SCSI
+ 	  say N.
+ 
+ 	  To compile this driver as a module, choose M here: the
+-	  module will be called wd33c93.
++	  module will be called a2091.
+ 
+ config GVP11_SCSI
+ 	tristate "GVP Series II WD33C93A support"

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-use-_AC.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/m68k-use-_AC.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,43 @@
+Subject: m68k: Use _AC() instead of #ifdef __ASSEMBLY__
+
+m68k: Use _AC() instead of #ifdef __ASSEMBLY__ hackery
+
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+---
+ include/asm-m68k/page.h      |    8 +++-----
+ include/asm-m68k/processor.h |    1 +
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+--- a/include/asm-m68k/page.h
++++ b/include/asm-m68k/page.h
+@@ -4,17 +4,15 @@
+ 
+ #ifdef __KERNEL__
+ 
++#include <linux/const.h>
++
+ /* PAGE_SHIFT determines the page size */
+ #ifndef CONFIG_SUN3
+ #define PAGE_SHIFT	(12)
+ #else
+ #define PAGE_SHIFT	(13)
+ #endif
+-#ifdef __ASSEMBLY__
+-#define PAGE_SIZE	(1 << PAGE_SHIFT)
+-#else
+-#define PAGE_SIZE	(1UL << PAGE_SHIFT)
+-#endif
++#define PAGE_SIZE	(_AC(1, UL) << PAGE_SHIFT)
+ #define PAGE_MASK	(~(PAGE_SIZE-1))
+ 
+ #include <asm/setup.h>
+--- a/include/asm-m68k/processor.h
++++ b/include/asm-m68k/processor.h
+@@ -39,6 +39,7 @@ static inline void wrusp(unsigned long u
+ #define TASK_SIZE	(0xF0000000UL)
+ #else
+ #ifdef __ASSEMBLY__
++#error This cannot happen
+ #define TASK_SIZE	(0x0E000000)
+ #else
+ #define TASK_SIZE	(0x0E000000UL)

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/split-amiga7xx.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/split-amiga7xx.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,709 @@
+Subject: [PATCH] m68k: split amiga7xx.c into a4000t.c and zorro7xx.c
+
+Split drivers/scsi/amiga7xx.c into drivers/scsi/a4000t.c (A4000T built-in)
+and drivers/scsi/zorro7xx.c (Zorro boards)
+
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+---
+ drivers/scsi/Kconfig    |   25 ++--
+ drivers/scsi/Makefile   |    3 
+ drivers/scsi/a4000t.c   |  144 +++++++++++++++++++++++
+ drivers/scsi/amiga7xx.c |  297 ------------------------------------------------
+ drivers/scsi/zorro7xx.c |  181 +++++++++++++++++++++++++++++
+ 5 files changed, 343 insertions(+), 307 deletions(-)
+
+--- a/drivers/scsi/Kconfig
++++ b/drivers/scsi/Kconfig
+@@ -1008,7 +1008,7 @@ config SCSI_STEX
+ 
+ config 53C700_BE_BUS
+ 	bool
+-	depends on SCSI_AMIGA7XX || MVME16x_SCSI || BVME6000_SCSI
++	depends on SCSI_A4000T || SCSI_ZORRO7XX || MVME16x_SCSI || BVME6000_SCSI
+ 	default y
+ 
+ config SCSI_SYM53C8XX_2
+@@ -1615,14 +1615,25 @@ config FASTLANE_SCSI
+ 	  If you have the Phase5 Fastlane Z3 SCSI controller, or plan to use
+ 	  one in the near future, say Y to this question. Otherwise, say N.
+ 
+-config SCSI_AMIGA7XX
+-	tristate "Amiga NCR53c710 SCSI support (EXPERIMENTAL)"
++config SCSI_A4000T
++	tristate "A4000T NCR53c710 SCSI support (EXPERIMENTAL)"
+ 	depends on AMIGA && SCSI && EXPERIMENTAL
+ 	select SCSI_SPI_ATTRS
+ 	help
+-	  Support for various NCR53c710-based SCSI controllers on the Amiga.
++	  If you have an Amiga 4000T and have SCSI devices connected to the
++	  built-in SCSI controller, say Y. Otherwise, say N.
++
++	  To compile this driver as a module, choose M here: the
++	  module will be called a4000t.
++
++config SCSI_ZORRO7XX
++	tristate "Zorro NCR53c710 SCSI support (EXPERIMENTAL)"
++	depends on ZORRO && SCSI && EXPERIMENTAL
++	select SCSI_SPI_ATTRS
++	help
++	  Support for various NCR53c710-based SCSI controllers on Zorro
++	  expansion boards for the Amiga.
+ 	  This includes:
+-	    - the builtin SCSI controller on the Amiga 4000T,
+ 	    - the Amiga 4091 Zorro III SCSI-2 controller,
+ 	    - the MacroSystem Development's WarpEngine Amiga SCSI-2 controller
+ 	      (info at
+@@ -1630,10 +1641,6 @@ config SCSI_AMIGA7XX
+ 	    - the SCSI controller on the Phase5 Blizzard PowerUP 603e+
+ 	      accelerator card for the Amiga 1200,
+ 	    - the SCSI controller on the GVP Turbo 040/060 accelerator.
+-	  Note that all of the above SCSI controllers, except for the builtin
+-	  SCSI controller on the Amiga 4000T, reside on the Zorro expansion
+-	  bus, so you also have to enable Zorro bus support if you want to use
+-	  them.
+ 
+ config OKTAGON_SCSI
+ 	tristate "BSC Oktagon SCSI support (EXPERIMENTAL)"
+--- a/drivers/scsi/Makefile
++++ b/drivers/scsi/Makefile
+@@ -37,7 +37,8 @@ obj-$(CONFIG_SCSI_SAS_LIBSAS)	+= libsas/
+ 
+ obj-$(CONFIG_ISCSI_TCP) 	+= libiscsi.o	iscsi_tcp.o
+ obj-$(CONFIG_INFINIBAND_ISER) 	+= libiscsi.o
+-obj-$(CONFIG_SCSI_AMIGA7XX)	+= 53c700.o	amiga7xx.o
++obj-$(CONFIG_SCSI_A4000T)	+= 53c700.o	a4000t.o
++obj-$(CONFIG_SCSI_ZORRO7XX)	+= 53c700.o	zorro7xx.o
+ obj-$(CONFIG_A3000_SCSI)	+= a3000.o	wd33c93.o
+ obj-$(CONFIG_A2091_SCSI)	+= a2091.o	wd33c93.o
+ obj-$(CONFIG_GVP11_SCSI)	+= gvp11.o	wd33c93.o
+--- /dev/null
++++ b/drivers/scsi/a4000t.c
+@@ -0,0 +1,144 @@
++/*
++ * Detection routine for the NCR53c710 based Amiga SCSI Controllers for Linux.
++ *		Amiga Technologies A4000T SCSI controller.
++ *
++ * Written 1997 by Alan Hourihane <alanh at fairlite.demon.co.uk>
++ * plus modifications of the 53c7xx.c driver to support the Amiga.
++ *
++ * Rewritten to use 53c700.c by Kars de Jong <jongk at linux-m68k.org>
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <asm/amigahw.h>
++#include <asm/amigaints.h>
++#include <scsi/scsi_host.h>
++#include <scsi/scsi_transport_spi.h>
++
++#include "53c700.h"
++
++MODULE_AUTHOR("Alan Hourihane <alanh at fairlite.demon.co.uk> / Kars de Jong <jongk at linux-m68k.org>");
++MODULE_DESCRIPTION("Amiga A4000T NCR53C710 driver");
++MODULE_LICENSE("GPL");
++
++
++static struct scsi_host_template a4000t_scsi_driver_template = {
++	.name		= "A4000T builtin SCSI",
++	.proc_name	= "A4000t",
++	.this_id	= 7,
++	.module		= THIS_MODULE,
++};
++
++static struct platform_device *a4000t_scsi_device;
++
++#define A4000T_SCSI_ADDR 0xdd0040
++
++static int __devinit a4000t_probe(struct device *dev)
++{
++	struct Scsi_Host * host = NULL;
++	struct NCR_700_Host_Parameters *hostdata;
++
++	if (!(MACH_IS_AMIGA && AMIGAHW_PRESENT(A4000_SCSI)))
++		goto out;
++
++	if (!request_mem_region(A4000T_SCSI_ADDR, 0x1000,
++				"A4000T builtin SCSI"))
++		goto out;
++
++	hostdata = kmalloc(sizeof(struct NCR_700_Host_Parameters), GFP_KERNEL);
++	if (hostdata == NULL) {
++		printk(KERN_ERR "a4000t-scsi: Failed to allocate host data\n");
++		goto out_release;
++	}
++	memset(hostdata, 0, sizeof(struct NCR_700_Host_Parameters));
++
++	/* Fill in the required pieces of hostdata */
++	hostdata->base = (void __iomem *)ZTWO_VADDR(A4000T_SCSI_ADDR);
++	hostdata->clock = 50;
++	hostdata->chip710 = 1;
++	hostdata->dmode_extra = DMODE_FC2;
++	hostdata->dcntl_extra = EA_710;
++
++	/* and register the chip */
++	host = NCR_700_detect(&a4000t_scsi_driver_template, hostdata, dev);
++	if (!host) {
++		printk(KERN_ERR "a4000t-scsi: No host detected; "
++				"board configuration problem?\n");
++		goto out_free;
++	}
++
++	host->this_id = 7;
++	host->base = A4000T_SCSI_ADDR;
++	host->irq = IRQ_AMIGA_PORTS;
++
++	if (request_irq(host->irq, NCR_700_intr, IRQF_SHARED, "a4000t-scsi",
++			host)) {
++		printk(KERN_ERR "a4000t-scsi: request_irq failed\n");
++		goto out_put_host;
++	}
++
++	scsi_scan_host(host);
++
++	return 0;
++
++ out_put_host:
++	scsi_host_put(host);
++ out_free:
++	kfree(hostdata);
++ out_release:
++	release_mem_region(A4000T_SCSI_ADDR, 0x1000);
++ out:
++	return -ENODEV;
++}
++
++static __devexit int a4000t_device_remove(struct device *dev)
++{
++	struct Scsi_Host *host = dev_to_shost(dev);
++	struct NCR_700_Host_Parameters *hostdata =
++		(struct NCR_700_Host_Parameters *)host->hostdata[0];
++
++	scsi_remove_host(host);
++
++	NCR_700_release(host);
++	kfree(hostdata);
++	free_irq(host->irq, host);
++	release_mem_region(A4000T_SCSI_ADDR, 0x1000);
++
++	return 0;
++}
++
++static struct device_driver a4000t_scsi_driver = {
++	.name	= "a4000t-scsi",
++	.bus	= &platform_bus_type,
++	.probe	= a4000t_probe,
++	.remove	= __devexit_p(a4000t_device_remove),
++};
++
++static int __init a4000t_scsi_init(void)
++{
++	int err;
++
++	err = driver_register(&a4000t_scsi_driver);
++	if (err)
++		return err;
++
++	a4000t_scsi_device = platform_device_register_simple("a4000t-scsi",
++			-1, NULL, 0);
++	if (IS_ERR(a4000t_scsi_device)) {
++		driver_unregister(&a4000t_scsi_driver);
++		return PTR_ERR(a4000t_scsi_device);
++	}
++
++	return err;
++}
++
++static void __exit a4000t_scsi_exit(void)
++{
++	platform_device_unregister(a4000t_scsi_device);
++	driver_unregister(&a4000t_scsi_driver);
++}
++
++module_init(a4000t_scsi_init);
++module_exit(a4000t_scsi_exit);
+--- a/drivers/scsi/amiga7xx.c
++++ /dev/null
+@@ -1,297 +0,0 @@
+-/*
+- * Detection routine for the NCR53c710 based Amiga SCSI Controllers for Linux.
+- *		Amiga MacroSystemUS WarpEngine SCSI controller.
+- *		Amiga Technologies A4000T SCSI controller.
+- *		Amiga Technologies/DKB A4091 SCSI controller.
+- *
+- * Written 1997 by Alan Hourihane <alanh at fairlite.demon.co.uk>
+- * plus modifications of the 53c7xx.c driver to support the Amiga.
+- *
+- * Rewritten to use 53c700.c by Kars de Jong <jongk at linux-m68k.org>
+- */
+-
+-#include <linux/module.h>
+-#include <linux/blkdev.h>
+-#include <linux/device.h>
+-#include <linux/platform_device.h>
+-#include <linux/init.h>
+-#include <linux/interrupt.h>
+-#include <linux/zorro.h>
+-#include <asm/amigahw.h>
+-#include <asm/amigaints.h>
+-#include <scsi/scsi_host.h>
+-#include <scsi/scsi_device.h>
+-#include <scsi/scsi_transport.h>
+-#include <scsi/scsi_transport_spi.h>
+-
+-#include "53c700.h"
+-
+-MODULE_AUTHOR("Alan Hourihane <alanh at fairlite.demon.co.uk> / Kars de Jong <jongk at linux-m68k.org>");
+-MODULE_DESCRIPTION("Amiga NCR53C710 driver");
+-MODULE_LICENSE("GPL");
+-
+-static struct scsi_host_template amiga7xx_scsi_driver_template = {
+-	.name		= "A4000T builtin SCSI",
+-	.proc_name	= "Amiga7xx",
+-	.this_id	= 7,
+-	.module		= THIS_MODULE,
+-};
+-
+-static struct platform_device *a4000t_scsi_device;
+-
+-#ifdef CONFIG_ZORRO
+-
+-static struct zorro_driver_data {
+-	const char *name;
+-	unsigned long offset;
+-	int absolute;	/* offset is absolute address */
+-} amiga7xx_driver_data[] __devinitdata = {
+-	{ .name = "PowerUP 603e+", .offset = 0xf40000, .absolute = 1 },
+-	{ .name = "WarpEngine 40xx", .offset = 0x40000 },
+-	{ .name = "A4091", .offset = 0x800000 },
+-	{ .name = "GForce 040/060", .offset = 0x40000 },
+-	{ 0 }
+-};
+-
+-static struct zorro_device_id amiga7xx_zorro_tbl[] __devinitdata = {
+-	{
+-		.id = ZORRO_PROD_PHASE5_BLIZZARD_603E_PLUS,
+-		.driver_data = (unsigned long)&amiga7xx_driver_data[0],
+-	},
+-	{
+-		.id = ZORRO_PROD_MACROSYSTEMS_WARP_ENGINE_40xx,
+-		.driver_data = (unsigned long)&amiga7xx_driver_data[1],
+-	},
+-	{
+-		.id = ZORRO_PROD_CBM_A4091_1,
+-		.driver_data = (unsigned long)&amiga7xx_driver_data[2],
+-	},
+-	{
+-		.id = ZORRO_PROD_CBM_A4091_2,
+-		.driver_data = (unsigned long)&amiga7xx_driver_data[2],
+-	},
+-	{
+-		.id = ZORRO_PROD_GVP_GFORCE_040_060,
+-		.driver_data = (unsigned long)&amiga7xx_driver_data[3],
+-	},
+-	{ 0 }
+-};
+-
+-static int __devinit amiga7xx_init_one(struct zorro_dev *z,
+-				   const struct zorro_device_id *ent)
+-{
+-	struct Scsi_Host * host = NULL;
+-	struct NCR_700_Host_Parameters *hostdata;
+-	struct zorro_driver_data *zdd;
+-	unsigned long board, ioaddr;
+-
+-	board = zorro_resource_start(z);
+-	zdd = (struct zorro_driver_data *)ent->driver_data;
+-
+-	if (zdd->absolute) {
+-		ioaddr = zdd->offset;
+-	} else {
+-		ioaddr = board + zdd->offset;
+-	}
+-
+-	if (!zorro_request_device(z, zdd->name)) {
+-		printk(KERN_ERR "amiga7xx: cannot reserve region 0x%lx, abort\n",
+-		       board);
+-		return -EBUSY;
+-	}
+-
+-	hostdata = kmalloc(sizeof(struct NCR_700_Host_Parameters), GFP_KERNEL);
+-	if (hostdata == NULL) {
+-		printk(KERN_ERR "amiga7xx: Failed to allocate host data\n");
+-		goto out_release;
+-	}
+-
+-	memset(hostdata, 0, sizeof(struct NCR_700_Host_Parameters));
+-
+-	/* Fill in the required pieces of hostdata */
+-	if (ioaddr > 0x01000000)
+-		hostdata->base = ioremap(ioaddr, zorro_resource_len(z));
+-	else
+-		hostdata->base = (void __iomem *)ZTWO_VADDR(ioaddr);
+-
+-	hostdata->clock = 50;
+-	hostdata->chip710 = 1;
+-
+-	/* Settings for at least WarpEngine 40xx */
+-	hostdata->ctest7_extra = CTEST7_TT1;
+-
+-	amiga7xx_scsi_driver_template.name = zdd->name;
+-
+-	/* and register the chip */
+-	host = NCR_700_detect(&amiga7xx_scsi_driver_template,
+-			hostdata, &z->dev);
+-	if (!host) {
+-		printk(KERN_ERR "amiga7xx-scsi: No host detected; "
+-				"board configuration problem?\n");
+-		goto out_free;
+-	}
+-
+-	host->this_id = 7;
+-	host->base = ioaddr;
+-	host->irq = IRQ_AMIGA_PORTS;
+-
+-	if (request_irq(host->irq, NCR_700_intr, IRQF_SHARED,
+-			"amiga7xx-scsi", host)) {
+-		printk(KERN_ERR "amiga7xx-scsi: request_irq failed\n");
+-		goto out_put_host;
+-	}
+-
+-	scsi_scan_host(host);
+-
+-	return 0;
+-
+- out_put_host:
+-	scsi_host_put(host);
+- out_free:
+-	if (ioaddr > 0x01000000)
+-		iounmap(hostdata->base);
+-	kfree(hostdata);
+- out_release:
+-	zorro_release_device(z);
+-
+-	return -ENODEV;
+-}
+-
+-static __devexit void amiga7xx_remove_one(struct zorro_dev *z)
+-{
+-	struct Scsi_Host *host = dev_to_shost(&z->dev);
+-	struct NCR_700_Host_Parameters *hostdata =
+-		(struct NCR_700_Host_Parameters *)host->hostdata[0];
+-
+-	scsi_remove_host(host);
+-
+-	NCR_700_release(host);
+-	kfree(hostdata);
+-	free_irq(host->irq, host);
+-	zorro_release_device(z);
+-}
+-
+-static struct zorro_driver amiga7xx_driver = {
+-	.name	  = "amiga7xx-scsi",
+-	.id_table = amiga7xx_zorro_tbl,
+-	.probe	  = amiga7xx_init_one,
+-	.remove	  = __devexit_p(amiga7xx_remove_one),
+-};
+-
+-#endif /* CONFIG_ZORRO */
+-
+-#define A4000T_SCSI_ADDR 0xdd0040
+-
+-static int __devinit a4000t_probe(struct device *dev)
+-{
+-	struct Scsi_Host * host = NULL;
+-	struct NCR_700_Host_Parameters *hostdata;
+-
+-	if (!(MACH_IS_AMIGA && AMIGAHW_PRESENT(A4000_SCSI)))
+-		goto out;
+-
+-	if (!request_mem_region(A4000T_SCSI_ADDR, 0x1000,
+-			"A4000T builtin SCSI"))
+-		goto out;
+-
+-	hostdata = kmalloc(sizeof(struct NCR_700_Host_Parameters), GFP_KERNEL);
+-	if (hostdata == NULL) {
+-		printk(KERN_ERR "a4000t-scsi: Failed to allocate host data\n");
+-		goto out_release;
+-	}
+-	memset(hostdata, 0, sizeof(struct NCR_700_Host_Parameters));
+-
+-	/* Fill in the required pieces of hostdata */
+-	hostdata->base = (void __iomem *)ZTWO_VADDR(A4000T_SCSI_ADDR);
+-	hostdata->clock = 50;
+-	hostdata->chip710 = 1;
+-	hostdata->dmode_extra = DMODE_FC2;
+-	hostdata->dcntl_extra = EA_710;
+-
+-	/* and register the chip */
+-	host = NCR_700_detect(&amiga7xx_scsi_driver_template, hostdata, dev);
+-	if (!host) {
+-		printk(KERN_ERR "a4000t-scsi: No host detected; "
+-				"board configuration problem?\n");
+-		goto out_free;
+-	}
+-
+-	host->this_id = 7;
+-	host->base = A4000T_SCSI_ADDR;
+-	host->irq = IRQ_AMIGA_PORTS;
+-
+-	if (request_irq(host->irq, NCR_700_intr, IRQF_SHARED, "a4000t-scsi", host)) {
+-		printk(KERN_ERR "a4000t-scsi: request_irq failed\n");
+-		goto out_put_host;
+-	}
+-
+-	scsi_scan_host(host);
+-
+-	return 0;
+-
+- out_put_host:
+-	scsi_host_put(host);
+- out_free:
+-	kfree(hostdata);
+- out_release:
+-	release_mem_region(A4000T_SCSI_ADDR, 0x1000);
+- out:
+-	return -ENODEV;
+-}
+-
+-static __devexit int a4000t_device_remove(struct device *dev)
+-{
+-	struct Scsi_Host *host = dev_to_shost(dev);
+-	struct NCR_700_Host_Parameters *hostdata =
+-		(struct NCR_700_Host_Parameters *)host->hostdata[0];
+-
+-	scsi_remove_host(host);
+-
+-	NCR_700_release(host);
+-	kfree(hostdata);
+-	free_irq(host->irq, host);
+-	release_mem_region(A4000T_SCSI_ADDR, 0x1000);
+-
+-	return 0;
+-}
+-
+-static struct device_driver a4000t_scsi_driver = {
+-	.name	= "a4000t-scsi",
+-	.bus	= &platform_bus_type,
+-	.probe	= a4000t_probe,
+-	.remove	= __devexit_p(a4000t_device_remove),
+-};
+-
+-static int __init amiga7xx_scsi_init(void)
+-{
+-	int err;
+-
+-	err = driver_register(&a4000t_scsi_driver);
+-	if (err)
+-		return err;
+-
+-	a4000t_scsi_device = platform_device_register_simple("a4000t-scsi",
+-			-1, NULL, 0);
+-	if (IS_ERR(a4000t_scsi_device)) {
+-		driver_unregister(&a4000t_scsi_driver);
+-		return PTR_ERR(a4000t_scsi_device);
+-	}
+-
+-#ifdef CONFIG_ZORRO
+-	err = zorro_register_driver(&amiga7xx_driver);
+-#endif
+-
+-	return err;
+-}
+-
+-static void __exit amiga7xx_scsi_exit(void)
+-{
+-	platform_device_unregister(a4000t_scsi_device);
+-	driver_unregister(&a4000t_scsi_driver);
+-#ifdef CONFIG_ZORRO
+-	zorro_unregister_driver(&amiga7xx_driver);
+-#endif
+-}
+-
+-module_init(amiga7xx_scsi_init);
+-module_exit(amiga7xx_scsi_exit);
+--- /dev/null
++++ b/drivers/scsi/zorro7xx.c
+@@ -0,0 +1,181 @@
++/*
++ * Detection routine for the NCR53c710 based Amiga SCSI Controllers for Linux.
++ *		Amiga MacroSystemUS WarpEngine SCSI controller.
++ *		Amiga Technologies/DKB A4091 SCSI controller.
++ *
++ * Written 1997 by Alan Hourihane <alanh at fairlite.demon.co.uk>
++ * plus modifications of the 53c7xx.c driver to support the Amiga.
++ *
++ * Rewritten to use 53c700.c by Kars de Jong <jongk at linux-m68k.org>
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/zorro.h>
++#include <asm/amigaints.h>
++#include <scsi/scsi_host.h>
++#include <scsi/scsi_transport_spi.h>
++
++#include "53c700.h"
++
++MODULE_AUTHOR("Alan Hourihane <alanh at fairlite.demon.co.uk> / Kars de Jong <jongk at linux-m68k.org>");
++MODULE_DESCRIPTION("Amiga Zorro NCR53C710 driver");
++MODULE_LICENSE("GPL");
++
++
++static struct scsi_host_template zorro7xx_scsi_driver_template = {
++	.proc_name	= "zorro7xx",
++	.this_id	= 7,
++	.module		= THIS_MODULE,
++};
++
++static struct zorro_driver_data {
++	const char *name;
++	unsigned long offset;
++	int absolute;	/* offset is absolute address */
++} zorro7xx_driver_data[] __devinitdata = {
++	{ .name = "PowerUP 603e+", .offset = 0xf40000, .absolute = 1 },
++	{ .name = "WarpEngine 40xx", .offset = 0x40000 },
++	{ .name = "A4091", .offset = 0x800000 },
++	{ .name = "GForce 040/060", .offset = 0x40000 },
++	{ 0 }
++};
++
++static struct zorro_device_id zorro7xx_zorro_tbl[] __devinitdata = {
++	{
++		.id = ZORRO_PROD_PHASE5_BLIZZARD_603E_PLUS,
++		.driver_data = (unsigned long)&zorro7xx_driver_data[0],
++	},
++	{
++		.id = ZORRO_PROD_MACROSYSTEMS_WARP_ENGINE_40xx,
++		.driver_data = (unsigned long)&zorro7xx_driver_data[1],
++	},
++	{
++		.id = ZORRO_PROD_CBM_A4091_1,
++		.driver_data = (unsigned long)&zorro7xx_driver_data[2],
++	},
++	{
++		.id = ZORRO_PROD_CBM_A4091_2,
++		.driver_data = (unsigned long)&zorro7xx_driver_data[2],
++	},
++	{
++		.id = ZORRO_PROD_GVP_GFORCE_040_060,
++		.driver_data = (unsigned long)&zorro7xx_driver_data[3],
++	},
++	{ 0 }
++};
++
++static int __devinit zorro7xx_init_one(struct zorro_dev *z,
++				       const struct zorro_device_id *ent)
++{
++	struct Scsi_Host * host = NULL;
++	struct NCR_700_Host_Parameters *hostdata;
++	struct zorro_driver_data *zdd;
++	unsigned long board, ioaddr;
++
++	board = zorro_resource_start(z);
++	zdd = (struct zorro_driver_data *)ent->driver_data;
++
++	if (zdd->absolute) {
++		ioaddr = zdd->offset;
++	} else {
++		ioaddr = board + zdd->offset;
++	}
++
++	if (!zorro_request_device(z, zdd->name)) {
++		printk(KERN_ERR "zorro7xx: cannot reserve region 0x%lx, abort\n",
++		       board);
++		return -EBUSY;
++	}
++
++	hostdata = kmalloc(sizeof(struct NCR_700_Host_Parameters), GFP_KERNEL);
++	if (hostdata == NULL) {
++		printk(KERN_ERR "zorro7xx: Failed to allocate host data\n");
++		goto out_release;
++	}
++
++	memset(hostdata, 0, sizeof(struct NCR_700_Host_Parameters));
++
++	/* Fill in the required pieces of hostdata */
++	if (ioaddr > 0x01000000)
++		hostdata->base = ioremap(ioaddr, zorro_resource_len(z));
++	else
++		hostdata->base = (void __iomem *)ZTWO_VADDR(ioaddr);
++
++	hostdata->clock = 50;
++	hostdata->chip710 = 1;
++
++	/* Settings for at least WarpEngine 40xx */
++	hostdata->ctest7_extra = CTEST7_TT1;
++
++	zorro7xx_scsi_driver_template.name = zdd->name;
++
++	/* and register the chip */
++	host = NCR_700_detect(&zorro7xx_scsi_driver_template, hostdata,
++			      &z->dev);
++	if (!host) {
++		printk(KERN_ERR "zorro7xx: No host detected; "
++				"board configuration problem?\n");
++		goto out_free;
++	}
++
++	host->this_id = 7;
++	host->base = ioaddr;
++	host->irq = IRQ_AMIGA_PORTS;
++
++	if (request_irq(host->irq, NCR_700_intr, IRQF_SHARED, "zorro7xx-scsi",
++			host)) {
++		printk(KERN_ERR "zorro7xx: request_irq failed\n");
++		goto out_put_host;
++	}
++
++	scsi_scan_host(host);
++
++	return 0;
++
++ out_put_host:
++	scsi_host_put(host);
++ out_free:
++	if (ioaddr > 0x01000000)
++		iounmap(hostdata->base);
++	kfree(hostdata);
++ out_release:
++	zorro_release_device(z);
++
++	return -ENODEV;
++}
++
++static __devexit void zorro7xx_remove_one(struct zorro_dev *z)
++{
++	struct Scsi_Host *host = dev_to_shost(&z->dev);
++	struct NCR_700_Host_Parameters *hostdata =
++		(struct NCR_700_Host_Parameters *)host->hostdata[0];
++
++	scsi_remove_host(host);
++
++	NCR_700_release(host);
++	kfree(hostdata);
++	free_irq(host->irq, host);
++	zorro_release_device(z);
++}
++
++static struct zorro_driver zorro7xx_driver = {
++	.name	  = "zorro7xx-scsi",
++	.id_table = zorro7xx_zorro_tbl,
++	.probe	  = zorro7xx_init_one,
++	.remove	  = __devexit_p(zorro7xx_remove_one),
++};
++
++static int __init zorro7xx_scsi_init(void)
++{
++	return zorro_register_driver(&zorro7xx_driver);
++}
++
++static void __exit zorro7xx_scsi_exit(void)
++{
++	zorro_unregister_driver(&zorro7xx_driver);
++}
++
++module_init(zorro7xx_scsi_init);
++module_exit(zorro7xx_scsi_exit);

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/zorro-module-device-table.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/zorro-module-device-table.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,205 @@
+Subject: [PATCH] Add Amiga Zorro bus modalias support
+
+Add Amiga Zorro bus modalias support
+
+Signed-off-by: Geert Uytterhoeven <geert at 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-sysfs.c     |   11 +++++++++++
+ include/linux/mod_devicetable.h |    8 ++++++++
+ include/linux/zorro.h           |   13 +------------
+ scripts/mod/file2alias.c        |   15 +++++++++++++++
+ 11 files changed, 42 insertions(+), 12 deletions(-)
+
+--- a/drivers/net/a2065.c
++++ b/drivers/net/a2065.c
+@@ -708,6 +708,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
+@@ -305,6 +305,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
+@@ -217,6 +217,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-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:i%08X\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
+@@ -333,4 +333,12 @@ struct parisc_device_id {
+ #define PA_HVERSION_ANY_ID	0xffff
+ #define PA_SVERSION_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 */
++
+ #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
+@@ -390,6 +390,7 @@ static int do_vio_entry(const char *file
+ 
+ static int do_i2c_entry(const char *filename, struct i2c_device_id *i2c, char *alias)
+ {
++	i2c->id = TO_NATIVE(i2c->id);
+ 	strcpy(alias, "i2c:");
+ 	ADD(alias, "id", 1, i2c->id);
+ 	return 1;
+@@ -476,6 +477,16 @@ static int do_parisc_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)
+ {
+@@ -587,6 +598,10 @@ void handle_moddevtable(struct module *m
+ 		do_table(symval, sym->st_size,
+ 			 sizeof(struct parisc_device_id), "parisc",
+ 			 do_parisc_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);
+ }
+ 
+ /* Now add out buffered information to the generated C source */

Added: dists/trunk/linux-2.6/debian/patches/bugfix/m68k/zorro_config_attr-read-only.diff
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/m68k/zorro_config_attr-read-only.diff	Sun Jul 15 13:01:35 2007
@@ -0,0 +1,21 @@
+Subject: [PATCH] zorro: Make sysfs `config' attribute read-only
+
+zorro: Make the sysfs `config' attribute read-only, as you cannot write to it
+(there's no .write function neither).
+
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+---
+ drivers/zorro/zorro-sysfs.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/zorro/zorro-sysfs.c
++++ b/drivers/zorro/zorro-sysfs.c
+@@ -77,7 +77,7 @@ static ssize_t zorro_read_config(struct 
+ static struct bin_attribute zorro_config_attr = {
+ 	.attr =	{
+ 		.name = "config",
+-		.mode = S_IRUGO | S_IWUSR,
++		.mode = S_IRUGO,
+ 		.owner = THIS_MODULE
+ 	},
+ 	.size = sizeof(struct ConfigDev),

Modified: dists/trunk/linux-2.6/debian/patches/series/1~experimental.1-extra
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/1~experimental.1-extra	(original)
+++ dists/trunk/linux-2.6/debian/patches/series/1~experimental.1-extra	Sun Jul 15 13:01:35 2007
@@ -6,9 +6,8 @@
 + features/all/xen/vserver-update.patch *_xen-vserver
 + bugfix/arm/nas100d-pata-artop-single-port.patch arm
 
-# Submitted
-+ bugfix/m68k/falconide_intr_lock-reentrant.diff m68k
-#+ bugfix/m68k/600-task_thread_info.diff m68k
++ bugfix/m68k/m68k-page.h-needs-compiler.h.diff m68k
++ bugfix/m68k/630-extern-cleanup.diff.1 m68k
 + bugfix/m68k/633-atari_scc.diff m68k
 + bugfix/m68k/130-adbraw.diff m68k
 #+ bugfix/m68k/133-arch.diff m68k
@@ -33,6 +32,17 @@
 + bugfix/m68k/m68k-mvme-scsi-rename.diff m68k
 + bugfix/m68k/m68k-53c700-scsi.diff m68k
 + bugfix/m68k/via-pmu68k-dead-code.diff m68k
++ bugfix/m68k/m68k-use-_AC.diff m68k
++ bugfix/m68k/m68k-amiga-z2ram-kill-TRUE-FALSE.diff m68k
++ bugfix/m68k/add-termios2.diff m68k
++ bugfix/m68k/m68k-arbitary-speed-tty-support.diff m68k
++ bugfix/m68k/m68k-do-not-include-RODATA-in-text-segment.diff m68k
++ bugfix/m68k/m68k-53c700-cleanups.diff m68k
++ bugfix/m68k/split-amiga7xx.diff m68k
++ bugfix/m68k/m68k-scsi-Kconfig-hickups.diff m68k
++ bugfix/m68k/zorro_config_attr-read-only.diff m68k
++ bugfix/m68k/zorro-module-device-table.diff m68k
++ bugfix/m68k/falconide_intr_lock-ratelimit.diff m68k
 
 + bugfix/m68k/dmasound_paula.diff m68k
 + bugfix/m68k/disable-mac-broken-config-options.diff m68k



More information about the Kernel-svn-changes mailing list