mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 16:38:31 +00:00 
			
		
		
		
	 dc10f61196
			
		
	
	
		dc10f61196
		
	
	
	
	
		
			
			Since we solved this by overriding default ->{in,out}put_data
methods in {q40,falcon}ide M68K_IDE_SWAP define can go away.
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
		
	
			
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *  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
 | |
| 
 | |
| /*
 | |
|  * 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
 | |
| 
 | |
| #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)->ack_intr ? (hwif)->ack_intr(hwif) : 1)
 | |
| 
 | |
| #endif /* __KERNEL__ */
 | |
| #endif /* _M68K_IDE_H */
 |