| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
 | 2 |  *  linux/include/asm-m68k/ide.h | 
 | 3 |  * | 
 | 4 |  *  Copyright (C) 1994-1996  Linus Torvalds & authors | 
 | 5 |  */ | 
 | 6 |  | 
 | 7 | /* Copyright(c) 1996 Kars de Jong */ | 
 | 8 | /* Based on the ide driver from 1.2.13pl8 */ | 
 | 9 |  | 
 | 10 | /* | 
 | 11 |  * Credits (alphabetical): | 
 | 12 |  * | 
 | 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 | 
 | 27 |  */ | 
 | 28 |  | 
 | 29 | #ifndef _M68K_IDE_H | 
 | 30 | #define _M68K_IDE_H | 
 | 31 |  | 
 | 32 | #ifdef __KERNEL__ | 
 | 33 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 34 |  | 
 | 35 | #include <asm/setup.h> | 
 | 36 | #include <asm/io.h> | 
 | 37 | #include <asm/irq.h> | 
 | 38 |  | 
 | 39 | #ifdef CONFIG_ATARI | 
 | 40 | #include <linux/interrupt.h> | 
 | 41 | #include <asm/atari_stdma.h> | 
 | 42 | #endif | 
 | 43 |  | 
 | 44 | #ifdef CONFIG_MAC | 
 | 45 | #include <asm/macints.h> | 
 | 46 | #endif | 
 | 47 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 48 | /* | 
 | 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 | 
 | 52 |  */ | 
 | 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 | 
 | 69 |  | 
 | 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 | 
 | 94 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 95 | #ifdef CONFIG_BLK_DEV_FALCON_IDE | 
 | 96 | #define IDE_ARCH_LOCK | 
 | 97 |  | 
 | 98 | extern int falconide_intr_lock; | 
 | 99 |  | 
 | 100 | static __inline__ void ide_release_lock (void) | 
 | 101 | { | 
 | 102 | 	if (MACH_IS_ATARI) { | 
 | 103 | 		if (falconide_intr_lock == 0) { | 
 | 104 | 			printk("ide_release_lock: bug\n"); | 
 | 105 | 			return; | 
 | 106 | 		} | 
 | 107 | 		falconide_intr_lock = 0; | 
 | 108 | 		stdma_release(); | 
 | 109 | 	} | 
 | 110 | } | 
 | 111 |  | 
 | 112 | static __inline__ void | 
| David Howells | 40220c1 | 2006-10-09 12:19:47 +0100 | [diff] [blame] | 113 | ide_get_lock(irq_handler_t handler, void *data) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 114 | { | 
 | 115 | 	if (MACH_IS_ATARI) { | 
 | 116 | 		if (falconide_intr_lock == 0) { | 
 | 117 | 			if (in_interrupt() > 0) | 
 | 118 | 				panic( "Falcon IDE hasn't ST-DMA lock in interrupt" ); | 
 | 119 | 			stdma_lock(handler, data); | 
 | 120 | 			falconide_intr_lock = 1; | 
 | 121 | 		} | 
 | 122 | 	} | 
 | 123 | } | 
 | 124 | #endif /* CONFIG_BLK_DEV_FALCON_IDE */ | 
 | 125 |  | 
 | 126 | #define IDE_ARCH_ACK_INTR | 
| Bartlomiej Zolnierkiewicz | 18e181f | 2007-10-20 00:32:32 +0200 | [diff] [blame] | 127 | #define ide_ack_intr(hwif)	((hwif)->ack_intr ? (hwif)->ack_intr(hwif) : 1) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 128 |  | 
 | 129 | #endif /* __KERNEL__ */ | 
 | 130 | #endif /* _M68K_IDE_H */ |