block: Fix blk_start_queueing() to not kick a stopped queue
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / include / asm-m68k / ide.h
blob1daf6cbdd9f0de3d9b3ae515dd939e887b7dd1e7
1 /*
2 * linux/include/asm-m68k/ide.h
4 * Copyright (C) 1994-1996 Linus Torvalds & authors
5 */
7 /* Copyright(c) 1996 Kars de Jong */
8 /* Based on the ide driver from 1.2.13pl8 */
11 * Credits (alphabetical):
13 * - Bjoern Brauel
14 * - Kars de Jong
15 * - Torsten Ebeling
16 * - Dwight Engen
17 * - Thorsten Floeck
18 * - Roman Hodek
19 * - Guenther Kelleter
20 * - Chris Lawrence
21 * - Michael Rausch
22 * - Christian Sauer
23 * - Michael Schmitz
24 * - Jes Soerensen
25 * - Michael Thurm
26 * - Geert Uytterhoeven
29 #ifndef _M68K_IDE_H
30 #define _M68K_IDE_H
32 #ifdef __KERNEL__
35 #include <asm/setup.h>
36 #include <asm/io.h>
37 #include <asm/irq.h>
39 #ifdef CONFIG_ATARI
40 #include <linux/interrupt.h>
41 #include <asm/atari_stdma.h>
42 #endif
44 #ifdef CONFIG_MAC
45 #include <asm/macints.h>
46 #endif
49 * Get rid of defs from io.h - ide has its private and conflicting versions
50 * Since so far no single m68k platform uses ISA/PCI I/O space for IDE, we
51 * always use the `raw' MMIO versions
53 #undef inb
54 #undef inw
55 #undef insw
56 #undef inl
57 #undef insl
58 #undef outb
59 #undef outw
60 #undef outsw
61 #undef outl
62 #undef outsl
63 #undef readb
64 #undef readw
65 #undef readl
66 #undef writeb
67 #undef writew
68 #undef writel
70 #define inb in_8
71 #define inw in_be16
72 #define insw(port, addr, n) raw_insw((u16 *)port, addr, n)
73 #define inl in_be32
74 #define insl(port, addr, n) raw_insl((u32 *)port, addr, n)
75 #define outb(val, port) out_8(port, val)
76 #define outw(val, port) out_be16(port, val)
77 #define outsw(port, addr, n) raw_outsw((u16 *)port, addr, n)
78 #define outl(val, port) out_be32(port, val)
79 #define outsl(port, addr, n) raw_outsl((u32 *)port, addr, n)
80 #define readb in_8
81 #define readw in_be16
82 #define __ide_mm_insw(port, addr, n) raw_insw((u16 *)port, addr, n)
83 #define readl in_be32
84 #define __ide_mm_insl(port, addr, n) raw_insl((u32 *)port, addr, n)
85 #define writeb(val, port) out_8(port, val)
86 #define writew(val, port) out_be16(port, val)
87 #define __ide_mm_outsw(port, addr, n) raw_outsw((u16 *)port, addr, n)
88 #define writel(val, port) out_be32(port, val)
89 #define __ide_mm_outsl(port, addr, n) raw_outsl((u32 *)port, addr, n)
90 #if defined(CONFIG_ATARI) || defined(CONFIG_Q40)
91 #define insw_swapw(port, addr, n) raw_insw_swapw((u16 *)port, addr, n)
92 #define outsw_swapw(port, addr, n) raw_outsw_swapw((u16 *)port, addr, n)
93 #endif
96 /* Q40 and Atari have byteswapped IDE busses and since many interesting
97 * values in the identification string are text, chars and words they
98 * happened to be almost correct without swapping.. However *_capacity
99 * is needed for drives over 8 GB. RZ */
100 #if defined(CONFIG_Q40) || defined(CONFIG_ATARI)
101 #define M68K_IDE_SWAPW (MACH_IS_Q40 || MACH_IS_ATARI)
102 #endif
104 #ifdef CONFIG_BLK_DEV_FALCON_IDE
105 #define IDE_ARCH_LOCK
107 extern int falconide_intr_lock;
109 static __inline__ void ide_release_lock (void)
111 if (MACH_IS_ATARI) {
112 if (falconide_intr_lock == 0) {
113 printk("ide_release_lock: bug\n");
114 return;
116 falconide_intr_lock = 0;
117 stdma_release();
121 static __inline__ void
122 ide_get_lock(irq_handler_t handler, void *data)
124 if (MACH_IS_ATARI) {
125 if (falconide_intr_lock == 0) {
126 if (in_interrupt() > 0)
127 panic( "Falcon IDE hasn't ST-DMA lock in interrupt" );
128 stdma_lock(handler, data);
129 falconide_intr_lock = 1;
133 #endif /* CONFIG_BLK_DEV_FALCON_IDE */
135 #define IDE_ARCH_ACK_INTR
136 #define ide_ack_intr(hwif) ((hwif)->ack_intr ? (hwif)->ack_intr(hwif) : 1)
138 #endif /* __KERNEL__ */
139 #endif /* _M68K_IDE_H */