From 6502789f15693eda5b859e1e99038b15114c79b6 Mon Sep 17 00:00:00 2001 From: "Christian T. Steigies" Date: Sun, 15 Jul 2007 13:01:35 +0000 Subject: [PATCH] Add 2.6.22 patches from linux-m68k CVS svn path=/dists/trunk/linux-2.6/; revision=9136 --- debian/changelog | 5 +- .../bugfix/m68k/630-extern-cleanup.diff.1 | 26 + debian/patches/bugfix/m68k/add-termios2.diff | 374 +++++++++ .../bugfix/m68k/ask-m68k-io.h-missing.diff | 57 ++ .../m68k/falconide_intr_lock-ratelimit.diff | 22 + .../bugfix/m68k/m68k-53c700-cleanups.diff | 186 +++++ .../m68k-amiga-z2ram-kill-TRUE-FALSE.diff | 27 + .../m68k/m68k-arbitary-speed-tty-support.diff | 68 ++ ...do-not-include-RODATA-in-text-segment.diff | 36 + .../m68k/m68k-page.h-needs-compiler.h.diff | 20 + .../m68k/m68k-scsi-Kconfig-hickups.diff | 29 + debian/patches/bugfix/m68k/m68k-use-_AC.diff | 43 ++ .../patches/bugfix/m68k/split-amiga7xx.diff | 709 ++++++++++++++++++ .../m68k/zorro-module-device-table.diff | 205 +++++ .../m68k/zorro_config_attr-read-only.diff | 21 + debian/patches/series/1~experimental.1-extra | 16 +- 16 files changed, 1839 insertions(+), 5 deletions(-) create mode 100644 debian/patches/bugfix/m68k/630-extern-cleanup.diff.1 create mode 100644 debian/patches/bugfix/m68k/add-termios2.diff create mode 100644 debian/patches/bugfix/m68k/ask-m68k-io.h-missing.diff create mode 100644 debian/patches/bugfix/m68k/falconide_intr_lock-ratelimit.diff create mode 100644 debian/patches/bugfix/m68k/m68k-53c700-cleanups.diff create mode 100644 debian/patches/bugfix/m68k/m68k-amiga-z2ram-kill-TRUE-FALSE.diff create mode 100644 debian/patches/bugfix/m68k/m68k-arbitary-speed-tty-support.diff create mode 100644 debian/patches/bugfix/m68k/m68k-do-not-include-RODATA-in-text-segment.diff create mode 100644 debian/patches/bugfix/m68k/m68k-page.h-needs-compiler.h.diff create mode 100644 debian/patches/bugfix/m68k/m68k-scsi-Kconfig-hickups.diff create mode 100644 debian/patches/bugfix/m68k/m68k-use-_AC.diff create mode 100644 debian/patches/bugfix/m68k/split-amiga7xx.diff create mode 100644 debian/patches/bugfix/m68k/zorro-module-device-table.diff create mode 100644 debian/patches/bugfix/m68k/zorro_config_attr-read-only.diff diff --git a/debian/changelog b/debian/changelog index cfb20b6bc..16cc87c33 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,7 +16,8 @@ linux-2.6 (2.6.22-1~experimental.1) UNRELEASED; urgency=low [ 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 @@ linux-2.6 (2.6.22-1~experimental.1) UNRELEASED; urgency=low [ dann frazier ] * Enable vserver flavour for ia64 (closes: #423232) - -- Christian T. Steigies Fri, 13 Jul 2007 23:39:57 +0200 + -- Christian T. Steigies Sun, 15 Jul 2007 14:58:22 +0200 linux-2.6 (2.6.22~rc5-1~experimental.1) experimental; urgency=low diff --git a/debian/patches/bugfix/m68k/630-extern-cleanup.diff.1 b/debian/patches/bugfix/m68k/630-extern-cleanup.diff.1 new file mode 100644 index 000000000..4ac6c567d --- /dev/null +++ b/debian/patches/bugfix/m68k/630-extern-cleanup.diff.1 @@ -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 +--- + 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. */ diff --git a/debian/patches/bugfix/m68k/add-termios2.diff b/debian/patches/bugfix/m68k/add-termios2.diff new file mode 100644 index 000000000..6759ce072 --- /dev/null +++ b/debian/patches/bugfix/m68k/add-termios2.diff @@ -0,0 +1,374 @@ +From alan@lxorguk.ukuu.org.uk Wed May 23 21:55:17 2007 +Date: Wed, 23 May 2007 20:56:45 +0100 +From: Alan Cox +To: Geert Uytterhoeven +Cc: Roman Zippel , Linux Kernel Development , akpm@osdl.org, rmk@arm.linux.kernel.org, spyro@f2s.com, starvik@axis.com, ysato@users.sourceforge.jp, "Luck, Tony" , takata@linux-m32r.org, chris@zankel.net, uclinux-v850@lsi.nec.co.jp, kyle@parisc-linux.org, linux-mips@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 + +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 */ diff --git a/debian/patches/bugfix/m68k/ask-m68k-io.h-missing.diff b/debian/patches/bugfix/m68k/ask-m68k-io.h-missing.diff new file mode 100644 index 000000000..b53412dc4 --- /dev/null +++ b/debian/patches/bugfix/m68k/ask-m68k-io.h-missing.diff @@ -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) diff --git a/debian/patches/bugfix/m68k/falconide_intr_lock-ratelimit.diff b/debian/patches/bugfix/m68k/falconide_intr_lock-ratelimit.diff new file mode 100644 index 000000000..2434c9519 --- /dev/null +++ b/debian/patches/bugfix/m68k/falconide_intr_lock-ratelimit.diff @@ -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 +--- + 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; diff --git a/debian/patches/bugfix/m68k/m68k-53c700-cleanups.diff b/debian/patches/bugfix/m68k/m68k-53c700-cleanups.diff new file mode 100644 index 000000000..6a9013b5c --- /dev/null +++ b/debian/patches/bugfix/m68k/m68k-53c700-cleanups.diff @@ -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 +--- + 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); diff --git a/debian/patches/bugfix/m68k/m68k-amiga-z2ram-kill-TRUE-FALSE.diff b/debian/patches/bugfix/m68k/m68k-amiga-z2ram-kill-TRUE-FALSE.diff new file mode 100644 index 000000000..0b6b9410c --- /dev/null +++ b/debian/patches/bugfix/m68k/m68k-amiga-z2ram-kill-TRUE-FALSE.diff @@ -0,0 +1,27 @@ +Subject: [PATCH] drivers/block/z2ram: Remove TRUE/FALSE defines +Cc: Jens Axboe + +From: Richard Knutsson + +Remove defines of TRUE and FALSE + * not used in the file + * the file is not included somewhere else + +Signed-off-by: Richard Knutsson +Signed-off-by: Geert Uytterhoeven +--- + 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) diff --git a/debian/patches/bugfix/m68k/m68k-arbitary-speed-tty-support.diff b/debian/patches/bugfix/m68k/m68k-arbitary-speed-tty-support.diff new file mode 100644 index 000000000..cd4b34789 --- /dev/null +++ b/debian/patches/bugfix/m68k/m68k-arbitary-speed-tty-support.diff @@ -0,0 +1,68 @@ +From alan@lxorguk.ukuu.org.uk Wed May 23 18:43:50 2007 +Date: Wed, 23 May 2007 17:44:46 +0100 +From: Alan Cox +To: geert@linux-m68k.org, zippel@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 + +--- + 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__ */ + diff --git a/debian/patches/bugfix/m68k/m68k-do-not-include-RODATA-in-text-segment.diff b/debian/patches/bugfix/m68k/m68k-do-not-include-RODATA-in-text-segment.diff new file mode 100644 index 000000000..41dc043e9 --- /dev/null +++ b/debian/patches/bugfix/m68k/m68k-do-not-include-RODATA-in-text-segment.diff @@ -0,0 +1,36 @@ +Subject: [PATCH] m68k: Don't include RODATA into text segment + +From: Roman Zippel + +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 +Signed-off-by: Geert Uytterhoeven + +--- + 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 diff --git a/debian/patches/bugfix/m68k/m68k-page.h-needs-compiler.h.diff b/debian/patches/bugfix/m68k/m68k-page.h-needs-compiler.h.diff new file mode 100644 index 000000000..12fa77ada --- /dev/null +++ b/debian/patches/bugfix/m68k/m68k-page.h-needs-compiler.h.diff @@ -0,0 +1,20 @@ +Subject: [PATCH] m68k: needs + +m68k: needs because of __attribute_const__ + +Signed-off-by: Geert Uytterhoeven +--- + 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 ++ + #include + + #define get_user_page(vaddr) __get_free_page(GFP_KERNEL) diff --git a/debian/patches/bugfix/m68k/m68k-scsi-Kconfig-hickups.diff b/debian/patches/bugfix/m68k/m68k-scsi-Kconfig-hickups.diff new file mode 100644 index 000000000..a1327e882 --- /dev/null +++ b/debian/patches/bugfix/m68k/m68k-scsi-Kconfig-hickups.diff @@ -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 +--- + 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" diff --git a/debian/patches/bugfix/m68k/m68k-use-_AC.diff b/debian/patches/bugfix/m68k/m68k-use-_AC.diff new file mode 100644 index 000000000..cd6b3e048 --- /dev/null +++ b/debian/patches/bugfix/m68k/m68k-use-_AC.diff @@ -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 +--- + 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 ++ + /* 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 +--- 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) diff --git a/debian/patches/bugfix/m68k/split-amiga7xx.diff b/debian/patches/bugfix/m68k/split-amiga7xx.diff new file mode 100644 index 000000000..4a5b6be65 --- /dev/null +++ b/debian/patches/bugfix/m68k/split-amiga7xx.diff @@ -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 +--- + 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 ++ * plus modifications of the 53c7xx.c driver to support the Amiga. ++ * ++ * Rewritten to use 53c700.c by Kars de Jong ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "53c700.h" ++ ++MODULE_AUTHOR("Alan Hourihane / Kars de Jong "); ++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 +- * plus modifications of the 53c7xx.c driver to support the Amiga. +- * +- * Rewritten to use 53c700.c by Kars de Jong +- */ +- +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- +-#include "53c700.h" +- +-MODULE_AUTHOR("Alan Hourihane / Kars de Jong "); +-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 ++ * plus modifications of the 53c7xx.c driver to support the Amiga. ++ * ++ * Rewritten to use 53c700.c by Kars de Jong ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "53c700.h" ++ ++MODULE_AUTHOR("Alan Hourihane / Kars de Jong "); ++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); diff --git a/debian/patches/bugfix/m68k/zorro-module-device-table.diff b/debian/patches/bugfix/m68k/zorro-module-device-table.diff new file mode 100644 index 000000000..2d829f8a5 --- /dev/null +++ b/debian/patches/bugfix/m68k/zorro-module-device-table.diff @@ -0,0 +1,205 @@ +Subject: [PATCH] Add Amiga Zorro bus modalias support + +Add Amiga Zorro bus modalias support + +Signed-off-by: Geert Uytterhoeven +--- + 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 + +@@ -116,6 +114,7 @@ struct ConfigDev { + + #include + #include ++#include + + #include + +@@ -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 */ diff --git a/debian/patches/bugfix/m68k/zorro_config_attr-read-only.diff b/debian/patches/bugfix/m68k/zorro_config_attr-read-only.diff new file mode 100644 index 000000000..53018b409 --- /dev/null +++ b/debian/patches/bugfix/m68k/zorro_config_attr-read-only.diff @@ -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 +--- + 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), diff --git a/debian/patches/series/1~experimental.1-extra b/debian/patches/series/1~experimental.1-extra index 417b959f2..cac4572e8 100644 --- a/debian/patches/series/1~experimental.1-extra +++ b/debian/patches/series/1~experimental.1-extra @@ -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