From: Geert Uytterhoeven Amiga Gayle IDE: Add support for the IDE interface on the M-Tech E-Matrix 530 expansion card drivers/ide/Kconfig | 16 ++++++++++------ drivers/ide/legacy/gayle.c | 14 +++++++++++--- 2 files changed, 21 insertions(+), 9 deletions(-) diff -puN drivers/ide/Kconfig~68k-368 drivers/ide/Kconfig --- 25/drivers/ide/Kconfig~68k-368 2004-01-01 13:42:56.000000000 -0800 +++ 25-akpm/drivers/ide/Kconfig 2004-01-01 13:42:56.000000000 -0800 @@ -899,12 +899,16 @@ config BLK_DEV_GAYLE bool "Amiga Gayle IDE interface support" depends on AMIGA help - This is the IDE driver for the builtin IDE interface on some Amiga - models. It supports both the `A1200 style' (used in A600 and A1200) - and `A4000 style' (used in A4000 and A4000T) of the Gayle IDE - interface. Say Y if you have such an Amiga model and want to use IDE - devices (hard disks, CD-ROM drives, etc.) that are connected to the - builtin IDE interface. + This is the IDE driver for the Amiga Gayle IDE interface. It supports + both the `A1200 style' and `A4000 style' of the Gayle IDE interface, + This includes builtin IDE interfaces on some Amiga models (A600, + A1200, A4000, and A4000T), and IDE interfaces on the Zorro expansion + bus (M-Tech E-Matrix 530 expansion card). + Say Y if you have an Amiga with a Gayle IDE interface and want to use + IDE devices (hard disks, CD-ROM drives, etc.) that are connected to + it. + Note that you also have to enable Zorro bus support if you want to + use Gayle IDE interfaces on the Zorro expansion bus. config BLK_DEV_IDEDOUBLER bool "Amiga IDE Doubler support (EXPERIMENTAL)" diff -puN drivers/ide/legacy/gayle.c~68k-368 drivers/ide/legacy/gayle.c --- 25/drivers/ide/legacy/gayle.c~68k-368 2004-01-01 13:42:56.000000000 -0800 +++ 25-akpm/drivers/ide/legacy/gayle.c 2004-01-01 13:42:56.000000000 -0800 @@ -29,7 +29,7 @@ */ #define GAYLE_BASE_4000 0xdd2020 /* A4000/A4000T */ -#define GAYLE_BASE_1200 0xda0000 /* A1200/A600 */ +#define GAYLE_BASE_1200 0xda0000 /* A1200/A600 and E-Matrix 530 */ /* * Offsets from one of the above bases @@ -118,9 +118,17 @@ void __init gayle_init(void) if (!MACH_IS_AMIGA) return; - if (!(a4000 = AMIGAHW_PRESENT(A4000_IDE)) && !AMIGAHW_PRESENT(A1200_IDE)) - return; + if ((a4000 = AMIGAHW_PRESENT(A4000_IDE)) || AMIGAHW_PRESENT(A1200_IDE)) + goto found; + +#ifdef CONFIG_ZORRO + if (zorro_find_device(ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530_SCSI_IDE, + NULL)) + goto found; +#endif + return; +found: for (i = 0; i < GAYLE_NUM_PROBE_HWIFS; i++) { unsigned long base, ctrlport, irqport; ide_ack_intr_t *ack_intr; _