123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- /*
- * linux/include/asm-m68k/ide.h
- *
- * Copyright (C) 1994-1996 Linus Torvalds & authors
- */
- /* Copyright(c) 1996 Kars de Jong */
- /* Based on the ide driver from 1.2.13pl8 */
- /*
- * Credits (alphabetical):
- *
- * - Bjoern Brauel
- * - Kars de Jong
- * - Torsten Ebeling
- * - Dwight Engen
- * - Thorsten Floeck
- * - Roman Hodek
- * - Guenther Kelleter
- * - Chris Lawrence
- * - Michael Rausch
- * - Christian Sauer
- * - Michael Schmitz
- * - Jes Soerensen
- * - Michael Thurm
- * - Geert Uytterhoeven
- */
- #ifndef _M68K_IDE_H
- #define _M68K_IDE_H
- #ifdef __KERNEL__
- #include <asm/setup.h>
- #include <asm/io.h>
- #include <asm/irq.h>
- #ifdef CONFIG_ATARI
- #include <linux/interrupt.h>
- #include <asm/atari_stdma.h>
- #endif
- #ifdef CONFIG_MAC
- #include <asm/macints.h>
- #endif
- #ifndef MAX_HWIFS
- #define MAX_HWIFS 4 /* same as the other archs */
- #endif
- /*
- * Get rid of defs from io.h - ide has its private and conflicting versions
- * Since so far no single m68k platform uses ISA/PCI I/O space for IDE, we
- * always use the `raw' MMIO versions
- */
- #undef inb
- #undef inw
- #undef insw
- #undef inl
- #undef insl
- #undef outb
- #undef outw
- #undef outsw
- #undef outl
- #undef outsl
- #undef readb
- #undef readw
- #undef readl
- #undef writeb
- #undef writew
- #undef writel
- #define inb in_8
- #define inw in_be16
- #define insw(port, addr, n) raw_insw((u16 *)port, addr, n)
- #define inl in_be32
- #define insl(port, addr, n) raw_insl((u32 *)port, addr, n)
- #define outb(val, port) out_8(port, val)
- #define outw(val, port) out_be16(port, val)
- #define outsw(port, addr, n) raw_outsw((u16 *)port, addr, n)
- #define outl(val, port) out_be32(port, val)
- #define outsl(port, addr, n) raw_outsl((u32 *)port, addr, n)
- #define readb in_8
- #define readw in_be16
- #define __ide_mm_insw(port, addr, n) raw_insw((u16 *)port, addr, n)
- #define readl in_be32
- #define __ide_mm_insl(port, addr, n) raw_insl((u32 *)port, addr, n)
- #define writeb(val, port) out_8(port, val)
- #define writew(val, port) out_be16(port, val)
- #define __ide_mm_outsw(port, addr, n) raw_outsw((u16 *)port, addr, n)
- #define writel(val, port) out_be32(port, val)
- #define __ide_mm_outsl(port, addr, n) raw_outsl((u32 *)port, addr, n)
- #if defined(CONFIG_ATARI) || defined(CONFIG_Q40)
- #define insw_swapw(port, addr, n) raw_insw_swapw((u16 *)port, addr, n)
- #define outsw_swapw(port, addr, n) raw_outsw_swapw((u16 *)port, addr, n)
- #endif
- /* Q40 and Atari have byteswapped IDE busses and since many interesting
- * values in the identification string are text, chars and words they
- * happened to be almost correct without swapping.. However *_capacity
- * is needed for drives over 8 GB. RZ */
- #if defined(CONFIG_Q40) || defined(CONFIG_ATARI)
- #define M68K_IDE_SWAPW (MACH_IS_Q40 || MACH_IS_ATARI)
- #endif
- #ifdef CONFIG_BLK_DEV_FALCON_IDE
- #define IDE_ARCH_LOCK
- extern int falconide_intr_lock;
- static __inline__ void ide_release_lock (void)
- {
- if (MACH_IS_ATARI) {
- if (falconide_intr_lock == 0) {
- printk("ide_release_lock: bug\n");
- return;
- }
- falconide_intr_lock = 0;
- stdma_release();
- }
- }
- static __inline__ void
- ide_get_lock(irq_handler_t handler, void *data)
- {
- if (MACH_IS_ATARI) {
- if (falconide_intr_lock == 0) {
- if (in_interrupt() > 0)
- panic( "Falcon IDE hasn't ST-DMA lock in interrupt" );
- stdma_lock(handler, data);
- falconide_intr_lock = 1;
- }
- }
- }
- #endif /* CONFIG_BLK_DEV_FALCON_IDE */
- #define IDE_ARCH_ACK_INTR
- #define ide_ack_intr(hwif) ((hwif)->hw.ack_intr ? (hwif)->hw.ack_intr(hwif) : 1)
- #endif /* __KERNEL__ */
- #endif /* _M68K_IDE_H */
|