| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
| Stephen Rothwell | b354cab | 2005-11-08 12:20:34 +1100 | [diff] [blame] | 2 | *  Copyright (C) 1994-1996 Linus Torvalds & authors | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 3 | * | 
| Stephen Rothwell | b354cab | 2005-11-08 12:20:34 +1100 | [diff] [blame] | 4 | *  This file contains the powerpc architecture specific IDE code. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 5 | */ | 
| Stephen Rothwell | b354cab | 2005-11-08 12:20:34 +1100 | [diff] [blame] | 6 | #ifndef _ASM_POWERPC_IDE_H | 
|  | 7 | #define _ASM_POWERPC_IDE_H | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 8 |  | 
|  | 9 | #ifdef __KERNEL__ | 
|  | 10 |  | 
| Stephen Rothwell | b354cab | 2005-11-08 12:20:34 +1100 | [diff] [blame] | 11 | #ifndef __powerpc64__ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 12 | #include <linux/sched.h> | 
|  | 13 | #include <asm/mpc8xx.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 | #endif | 
| Stephen Rothwell | 73ea9e1 | 2006-09-19 17:30:20 +1000 | [diff] [blame] | 15 | #include <asm/io.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 16 |  | 
| Stephen Rothwell | b354cab | 2005-11-08 12:20:34 +1100 | [diff] [blame] | 17 | #ifndef MAX_HWIFS | 
|  | 18 | #ifdef __powerpc64__ | 
|  | 19 | #define MAX_HWIFS	10 | 
|  | 20 | #else | 
|  | 21 | #define MAX_HWIFS	8 | 
|  | 22 | #endif | 
|  | 23 | #endif | 
|  | 24 |  | 
| Stephen Rothwell | 73ea9e1 | 2006-09-19 17:30:20 +1000 | [diff] [blame] | 25 | #define __ide_mm_insw(p, a, c)	_insw_ns((volatile u16 __iomem *)(p), (a), (c)) | 
|  | 26 | #define __ide_mm_insl(p, a, c)	_insl_ns((volatile u32 __iomem *)(p), (a), (c)) | 
|  | 27 | #define __ide_mm_outsw(p, a, c)	_outsw_ns((volatile u16 __iomem *)(p), (a), (c)) | 
|  | 28 | #define __ide_mm_outsl(p, a, c)	_outsl_ns((volatile u32 __iomem *)(p), (a), (c)) | 
|  | 29 |  | 
| Stephen Rothwell | b354cab | 2005-11-08 12:20:34 +1100 | [diff] [blame] | 30 | #ifndef  __powerpc64__ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 31 | #include <linux/hdreg.h> | 
|  | 32 | #include <linux/ioport.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 |  | 
|  | 34 | struct ide_machdep_calls { | 
|  | 35 | int         (*default_irq)(unsigned long base); | 
|  | 36 | unsigned long (*default_io_base)(int index); | 
|  | 37 | void        (*ide_init_hwif)(hw_regs_t *hw, | 
|  | 38 | unsigned long data_port, | 
|  | 39 | unsigned long ctrl_port, | 
|  | 40 | int *irq); | 
|  | 41 | }; | 
|  | 42 |  | 
|  | 43 | extern struct ide_machdep_calls ppc_ide_md; | 
|  | 44 |  | 
|  | 45 | #undef	SUPPORT_SLOW_DATA_PORTS | 
|  | 46 | #define	SUPPORT_SLOW_DATA_PORTS	0 | 
|  | 47 |  | 
|  | 48 | #define IDE_ARCH_OBSOLETE_DEFAULTS | 
|  | 49 |  | 
|  | 50 | static __inline__ int ide_default_irq(unsigned long base) | 
|  | 51 | { | 
|  | 52 | if (ppc_ide_md.default_irq) | 
|  | 53 | return ppc_ide_md.default_irq(base); | 
|  | 54 | return 0; | 
|  | 55 | } | 
|  | 56 |  | 
|  | 57 | static __inline__ unsigned long ide_default_io_base(int index) | 
|  | 58 | { | 
|  | 59 | if (ppc_ide_md.default_io_base) | 
|  | 60 | return ppc_ide_md.default_io_base(index); | 
|  | 61 | return 0; | 
|  | 62 | } | 
|  | 63 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 64 | #ifdef CONFIG_PCI | 
|  | 65 | #define ide_init_default_irq(base)	(0) | 
|  | 66 | #else | 
|  | 67 | #define ide_init_default_irq(base)	ide_default_irq(base) | 
|  | 68 | #endif | 
|  | 69 |  | 
|  | 70 | #if (defined CONFIG_APUS || defined CONFIG_BLK_DEV_MPC8xx_IDE ) | 
|  | 71 | #define IDE_ARCH_ACK_INTR  1 | 
|  | 72 | #define ide_ack_intr(hwif) (hwif->hw.ack_intr ? hwif->hw.ack_intr(hwif) : 1) | 
|  | 73 | #endif | 
|  | 74 |  | 
| Stephen Rothwell | b354cab | 2005-11-08 12:20:34 +1100 | [diff] [blame] | 75 | #endif /* __powerpc64__ */ | 
|  | 76 |  | 
|  | 77 | #define IDE_ARCH_OBSOLETE_INIT | 
|  | 78 | #define ide_default_io_ctl(base)	((base) + 0x206) /* obsolete */ | 
|  | 79 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 80 | #endif /* __KERNEL__ */ | 
|  | 81 |  | 
| Stephen Rothwell | b354cab | 2005-11-08 12:20:34 +1100 | [diff] [blame] | 82 | #endif /* _ASM_POWERPC_IDE_H */ |