diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-18 11:39:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-18 11:39:24 -0400 |
commit | 188da98800893691e47eea9335a234378e32aceb (patch) | |
tree | 57dbf491d23676e011b4946ec1867a6d55a02eef /include | |
parent | 07fe944e87d79f8d7e1b090913fe9f2ace78f41d (diff) | |
parent | 273b8385e5817a4765f82257004c5ec661a6a5b2 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (58 commits)
ide: remove ide_init_default_irq() macro
ide: move default IDE ports setup to ide_generic host driver
ide: remove obsoleted "idex=noprobe" kernel parameter (take 2)
ide: remove needless hwif->irq check from ide_hwif_configure()
ide: init hwif->{io_ports,irq} explicitly in legacy VLB host drivers
ide: limit legacy VLB host drivers to alpha, x86 and mips
cmd640: init hwif->{io_ports,irq} explicitly
cmd640: cleanup setup_device_ptrs()
ide: add ide-4drives host driver (take 3)
ide: remove ppc ifdef from init_ide_data()
ide: remove ide_default_io_ctl() macro
ide: remove CONFIG_IDE_ARCH_OBSOLETE_INIT
ide: add CONFIG_IDE_ARCH_OBSOLETE_DEFAULTS (take 2)
ppc/pmac: remove no longer needed IDE quirk
ppc: don't include <linux/ide.h>
ppc: remove ppc_ide_md
ppc/pplus: remove ppc_ide_md.ide_init_hwif hook
ppc/sandpoint: remove ppc_ide_md hooks
ppc/lopec: remove ppc_ide_md hooks
ppc/mpc8xx: remove ppc_ide_md hooks
...
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-alpha/ide.h | 11 | ||||
-rw-r--r-- | include/asm-arm/ide.h | 8 | ||||
-rw-r--r-- | include/asm-blackfin/ide.h | 4 | ||||
-rw-r--r-- | include/asm-ia64/ide.h | 10 | ||||
-rw-r--r-- | include/asm-m32r/ide.h | 10 | ||||
-rw-r--r-- | include/asm-mips/mach-generic/ide.h | 10 | ||||
-rw-r--r-- | include/asm-parisc/ide.h | 2 | ||||
-rw-r--r-- | include/asm-powerpc/ide.h | 57 | ||||
-rw-r--r-- | include/asm-powerpc/mediabay.h | 6 | ||||
-rw-r--r-- | include/asm-sh/ide.h | 3 | ||||
-rw-r--r-- | include/asm-sparc/ide.h | 2 | ||||
-rw-r--r-- | include/asm-sparc64/ide.h | 2 | ||||
-rw-r--r-- | include/asm-x86/ide.h | 10 | ||||
-rw-r--r-- | include/linux/hdreg.h | 4 | ||||
-rw-r--r-- | include/linux/ide.h | 174 |
15 files changed, 143 insertions, 170 deletions
diff --git a/include/asm-alpha/ide.h b/include/asm-alpha/ide.h index b7bf68d0407b..f44129abc02c 100644 --- a/include/asm-alpha/ide.h +++ b/include/asm-alpha/ide.h | |||
@@ -13,9 +13,6 @@ | |||
13 | 13 | ||
14 | #ifdef __KERNEL__ | 14 | #ifdef __KERNEL__ |
15 | 15 | ||
16 | |||
17 | #define IDE_ARCH_OBSOLETE_DEFAULTS | ||
18 | |||
19 | static inline int ide_default_irq(unsigned long base) | 16 | static inline int ide_default_irq(unsigned long base) |
20 | { | 17 | { |
21 | switch (base) { | 18 | switch (base) { |
@@ -40,14 +37,6 @@ static inline unsigned long ide_default_io_base(int index) | |||
40 | } | 37 | } |
41 | } | 38 | } |
42 | 39 | ||
43 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
44 | |||
45 | #ifdef CONFIG_PCI | ||
46 | #define ide_init_default_irq(base) (0) | ||
47 | #else | ||
48 | #define ide_init_default_irq(base) ide_default_irq(base) | ||
49 | #endif | ||
50 | |||
51 | #include <asm-generic/ide_iops.h> | 40 | #include <asm-generic/ide_iops.h> |
52 | 41 | ||
53 | #endif /* __KERNEL__ */ | 42 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-arm/ide.h b/include/asm-arm/ide.h index f348fcf3150b..88f4d231ce4f 100644 --- a/include/asm-arm/ide.h +++ b/include/asm-arm/ide.h | |||
@@ -17,14 +17,6 @@ | |||
17 | #define MAX_HWIFS 4 | 17 | #define MAX_HWIFS 4 |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | #if !defined(CONFIG_ARCH_L7200) | ||
21 | # ifdef CONFIG_ARCH_CLPS7500 | ||
22 | # define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
23 | # else | ||
24 | # define ide_default_io_ctl(base) (0) | ||
25 | # endif | ||
26 | #endif /* !ARCH_L7200 */ | ||
27 | |||
28 | #define __ide_mm_insw(port,addr,len) readsw(port,addr,len) | 20 | #define __ide_mm_insw(port,addr,len) readsw(port,addr,len) |
29 | #define __ide_mm_insl(port,addr,len) readsl(port,addr,len) | 21 | #define __ide_mm_insl(port,addr,len) readsl(port,addr,len) |
30 | #define __ide_mm_outsw(port,addr,len) writesw(port,addr,len) | 22 | #define __ide_mm_outsw(port,addr,len) writesw(port,addr,len) |
diff --git a/include/asm-blackfin/ide.h b/include/asm-blackfin/ide.h index 121e272581d6..5b88de115bf4 100644 --- a/include/asm-blackfin/ide.h +++ b/include/asm-blackfin/ide.h | |||
@@ -19,10 +19,6 @@ | |||
19 | 19 | ||
20 | #define MAX_HWIFS 1 | 20 | #define MAX_HWIFS 1 |
21 | 21 | ||
22 | /* Legacy ... BLK_DEV_IDECS */ | ||
23 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
24 | |||
25 | |||
26 | #include <asm-generic/ide_iops.h> | 22 | #include <asm-generic/ide_iops.h> |
27 | 23 | ||
28 | /****************************************************************************/ | 24 | /****************************************************************************/ |
diff --git a/include/asm-ia64/ide.h b/include/asm-ia64/ide.h index 1ccf23809329..8fa3f8cd067a 100644 --- a/include/asm-ia64/ide.h +++ b/include/asm-ia64/ide.h | |||
@@ -16,8 +16,6 @@ | |||
16 | 16 | ||
17 | #include <linux/irq.h> | 17 | #include <linux/irq.h> |
18 | 18 | ||
19 | #define IDE_ARCH_OBSOLETE_DEFAULTS | ||
20 | |||
21 | static inline int ide_default_irq(unsigned long base) | 19 | static inline int ide_default_irq(unsigned long base) |
22 | { | 20 | { |
23 | switch (base) { | 21 | switch (base) { |
@@ -46,14 +44,6 @@ static inline unsigned long ide_default_io_base(int index) | |||
46 | } | 44 | } |
47 | } | 45 | } |
48 | 46 | ||
49 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
50 | |||
51 | #ifdef CONFIG_PCI | ||
52 | #define ide_init_default_irq(base) (0) | ||
53 | #else | ||
54 | #define ide_init_default_irq(base) ide_default_irq(base) | ||
55 | #endif | ||
56 | |||
57 | #include <asm-generic/ide_iops.h> | 47 | #include <asm-generic/ide_iops.h> |
58 | 48 | ||
59 | #endif /* __KERNEL__ */ | 49 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-m32r/ide.h b/include/asm-m32r/ide.h index 5d2044e529ab..1e7f6474d130 100644 --- a/include/asm-m32r/ide.h +++ b/include/asm-m32r/ide.h | |||
@@ -23,8 +23,6 @@ | |||
23 | # endif | 23 | # endif |
24 | #endif | 24 | #endif |
25 | 25 | ||
26 | #define IDE_ARCH_OBSOLETE_DEFAULTS | ||
27 | |||
28 | static __inline__ int ide_default_irq(unsigned long base) | 26 | static __inline__ int ide_default_irq(unsigned long base) |
29 | { | 27 | { |
30 | switch (base) { | 28 | switch (base) { |
@@ -65,14 +63,6 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
65 | } | 63 | } |
66 | } | 64 | } |
67 | 65 | ||
68 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
69 | |||
70 | #ifdef CONFIG_BLK_DEV_IDEPCI | ||
71 | #define ide_init_default_irq(base) (0) | ||
72 | #else | ||
73 | #define ide_init_default_irq(base) ide_default_irq(base) | ||
74 | #endif | ||
75 | |||
76 | #include <asm-generic/ide_iops.h> | 66 | #include <asm-generic/ide_iops.h> |
77 | 67 | ||
78 | #endif /* __KERNEL__ */ | 68 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-mips/mach-generic/ide.h b/include/asm-mips/mach-generic/ide.h index 4ec2b930dfbb..0f6c251f5fec 100644 --- a/include/asm-mips/mach-generic/ide.h +++ b/include/asm-mips/mach-generic/ide.h | |||
@@ -27,8 +27,6 @@ | |||
27 | # endif | 27 | # endif |
28 | #endif | 28 | #endif |
29 | 29 | ||
30 | #define IDE_ARCH_OBSOLETE_DEFAULTS | ||
31 | |||
32 | static __inline__ int ide_probe_legacy(void) | 30 | static __inline__ int ide_probe_legacy(void) |
33 | { | 31 | { |
34 | #ifdef CONFIG_PCI | 32 | #ifdef CONFIG_PCI |
@@ -98,14 +96,6 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
98 | } | 96 | } |
99 | } | 97 | } |
100 | 98 | ||
101 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
102 | |||
103 | #ifdef CONFIG_BLK_DEV_IDEPCI | ||
104 | #define ide_init_default_irq(base) (0) | ||
105 | #else | ||
106 | #define ide_init_default_irq(base) ide_default_irq(base) | ||
107 | #endif | ||
108 | |||
109 | /* MIPS port and memory-mapped I/O string operations. */ | 99 | /* MIPS port and memory-mapped I/O string operations. */ |
110 | static inline void __ide_flush_prologue(void) | 100 | static inline void __ide_flush_prologue(void) |
111 | { | 101 | { |
diff --git a/include/asm-parisc/ide.h b/include/asm-parisc/ide.h index be8760fbc8ee..db0c94410095 100644 --- a/include/asm-parisc/ide.h +++ b/include/asm-parisc/ide.h | |||
@@ -17,8 +17,6 @@ | |||
17 | #define MAX_HWIFS 2 | 17 | #define MAX_HWIFS 2 |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
21 | |||
22 | #define ide_request_irq(irq,hand,flg,dev,id) request_irq((irq),(hand),(flg),(dev),(id)) | 20 | #define ide_request_irq(irq,hand,flg,dev,id) request_irq((irq),(hand),(flg),(dev),(id)) |
23 | #define ide_free_irq(irq,dev_id) free_irq((irq), (dev_id)) | 21 | #define ide_free_irq(irq,dev_id) free_irq((irq), (dev_id)) |
24 | #define ide_request_region(from,extent,name) request_region((from), (extent), (name)) | 22 | #define ide_request_region(from,extent,name) request_region((from), (extent), (name)) |
diff --git a/include/asm-powerpc/ide.h b/include/asm-powerpc/ide.h index 6d50310ecaea..3d90bf7d3d73 100644 --- a/include/asm-powerpc/ide.h +++ b/include/asm-powerpc/ide.h | |||
@@ -31,39 +31,48 @@ | |||
31 | #include <linux/hdreg.h> | 31 | #include <linux/hdreg.h> |
32 | #include <linux/ioport.h> | 32 | #include <linux/ioport.h> |
33 | 33 | ||
34 | struct ide_machdep_calls { | 34 | /* FIXME: use ide_platform host driver */ |
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 | #define IDE_ARCH_OBSOLETE_DEFAULTS | ||
46 | |||
47 | static __inline__ int ide_default_irq(unsigned long base) | 35 | static __inline__ int ide_default_irq(unsigned long base) |
48 | { | 36 | { |
49 | if (ppc_ide_md.default_irq) | 37 | #ifdef CONFIG_PPLUS |
50 | return ppc_ide_md.default_irq(base); | 38 | switch (base) { |
39 | case 0x1f0: return 14; | ||
40 | case 0x170: return 15; | ||
41 | } | ||
42 | #endif | ||
43 | #ifdef CONFIG_PPC_PREP | ||
44 | switch (base) { | ||
45 | case 0x1f0: return 13; | ||
46 | case 0x170: return 13; | ||
47 | case 0x1e8: return 11; | ||
48 | case 0x168: return 10; | ||
49 | case 0xfff0: return 14; /* MCP(N)750 ide0 */ | ||
50 | case 0xffe0: return 15; /* MCP(N)750 ide1 */ | ||
51 | } | ||
52 | #endif | ||
51 | return 0; | 53 | return 0; |
52 | } | 54 | } |
53 | 55 | ||
56 | /* FIXME: use ide_platform host driver */ | ||
54 | static __inline__ unsigned long ide_default_io_base(int index) | 57 | static __inline__ unsigned long ide_default_io_base(int index) |
55 | { | 58 | { |
56 | if (ppc_ide_md.default_io_base) | 59 | #ifdef CONFIG_PPLUS |
57 | return ppc_ide_md.default_io_base(index); | 60 | switch (index) { |
61 | case 0: return 0x1f0; | ||
62 | case 1: return 0x170; | ||
63 | } | ||
64 | #endif | ||
65 | #ifdef CONFIG_PPC_PREP | ||
66 | switch (index) { | ||
67 | case 0: return 0x1f0; | ||
68 | case 1: return 0x170; | ||
69 | case 2: return 0x1e8; | ||
70 | case 3: return 0x168; | ||
71 | } | ||
72 | #endif | ||
58 | return 0; | 73 | return 0; |
59 | } | 74 | } |
60 | 75 | ||
61 | #ifdef CONFIG_PCI | ||
62 | #define ide_init_default_irq(base) (0) | ||
63 | #else | ||
64 | #define ide_init_default_irq(base) ide_default_irq(base) | ||
65 | #endif | ||
66 | |||
67 | #ifdef CONFIG_BLK_DEV_MPC8xx_IDE | 76 | #ifdef CONFIG_BLK_DEV_MPC8xx_IDE |
68 | #define IDE_ARCH_ACK_INTR 1 | 77 | #define IDE_ARCH_ACK_INTR 1 |
69 | #define ide_ack_intr(hwif) ((hwif)->ack_intr ? (hwif)->ack_intr(hwif) : 1) | 78 | #define ide_ack_intr(hwif) ((hwif)->ack_intr ? (hwif)->ack_intr(hwif) : 1) |
@@ -71,8 +80,6 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
71 | 80 | ||
72 | #endif /* __powerpc64__ */ | 81 | #endif /* __powerpc64__ */ |
73 | 82 | ||
74 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
75 | |||
76 | #endif /* __KERNEL__ */ | 83 | #endif /* __KERNEL__ */ |
77 | 84 | ||
78 | #endif /* _ASM_POWERPC_IDE_H */ | 85 | #endif /* _ASM_POWERPC_IDE_H */ |
diff --git a/include/asm-powerpc/mediabay.h b/include/asm-powerpc/mediabay.h index de83fe196309..df111c362a7f 100644 --- a/include/asm-powerpc/mediabay.h +++ b/include/asm-powerpc/mediabay.h | |||
@@ -22,10 +22,14 @@ int check_media_bay(struct device_node *which_bay, int what); | |||
22 | /* Number of bays in the machine or 0 */ | 22 | /* Number of bays in the machine or 0 */ |
23 | extern int media_bay_count; | 23 | extern int media_bay_count; |
24 | 24 | ||
25 | #ifdef CONFIG_BLK_DEV_IDE_PMAC | ||
26 | #include <linux/ide.h> | ||
27 | |||
25 | int check_media_bay_by_base(unsigned long base, int what); | 28 | int check_media_bay_by_base(unsigned long base, int what); |
26 | /* called by IDE PMAC host driver to register IDE controller for media bay */ | 29 | /* called by IDE PMAC host driver to register IDE controller for media bay */ |
27 | int media_bay_set_ide_infos(struct device_node *which_bay, unsigned long base, | 30 | int media_bay_set_ide_infos(struct device_node *which_bay, unsigned long base, |
28 | int irq, int index); | 31 | int irq, ide_hwif_t *hwif); |
32 | #endif | ||
29 | 33 | ||
30 | #endif /* __KERNEL__ */ | 34 | #endif /* __KERNEL__ */ |
31 | #endif /* _PPC_MEDIABAY_H */ | 35 | #endif /* _PPC_MEDIABAY_H */ |
diff --git a/include/asm-sh/ide.h b/include/asm-sh/ide.h index 9f8e9142dc33..58e0bdd52be4 100644 --- a/include/asm-sh/ide.h +++ b/include/asm-sh/ide.h | |||
@@ -14,9 +14,6 @@ | |||
14 | 14 | ||
15 | #ifdef __KERNEL__ | 15 | #ifdef __KERNEL__ |
16 | 16 | ||
17 | |||
18 | #define ide_default_io_ctl(base) (0) | ||
19 | |||
20 | #include <asm-generic/ide_iops.h> | 17 | #include <asm-generic/ide_iops.h> |
21 | 18 | ||
22 | #endif /* __KERNEL__ */ | 19 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-sparc/ide.h b/include/asm-sparc/ide.h index 4076cb5d1581..afd1736ed480 100644 --- a/include/asm-sparc/ide.h +++ b/include/asm-sparc/ide.h | |||
@@ -17,8 +17,6 @@ | |||
17 | #undef MAX_HWIFS | 17 | #undef MAX_HWIFS |
18 | #define MAX_HWIFS 2 | 18 | #define MAX_HWIFS 2 |
19 | 19 | ||
20 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
21 | |||
22 | #define __ide_insl(data_reg, buffer, wcount) \ | 20 | #define __ide_insl(data_reg, buffer, wcount) \ |
23 | __ide_insw(data_reg, buffer, (wcount)<<1) | 21 | __ide_insw(data_reg, buffer, (wcount)<<1) |
24 | #define __ide_outsl(data_reg, buffer, wcount) \ | 22 | #define __ide_outsl(data_reg, buffer, wcount) \ |
diff --git a/include/asm-sparc64/ide.h b/include/asm-sparc64/ide.h index ac7eb210b941..c5fdabe0b42d 100644 --- a/include/asm-sparc64/ide.h +++ b/include/asm-sparc64/ide.h | |||
@@ -24,8 +24,6 @@ | |||
24 | # endif | 24 | # endif |
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
28 | |||
29 | #define __ide_insl(data_reg, buffer, wcount) \ | 27 | #define __ide_insl(data_reg, buffer, wcount) \ |
30 | __ide_insw(data_reg, buffer, (wcount)<<1) | 28 | __ide_insw(data_reg, buffer, (wcount)<<1) |
31 | #define __ide_outsl(data_reg, buffer, wcount) \ | 29 | #define __ide_outsl(data_reg, buffer, wcount) \ |
diff --git a/include/asm-x86/ide.h b/include/asm-x86/ide.h index c2552d8bebf7..cf9c98e5bdb5 100644 --- a/include/asm-x86/ide.h +++ b/include/asm-x86/ide.h | |||
@@ -20,8 +20,6 @@ | |||
20 | # endif | 20 | # endif |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | #define IDE_ARCH_OBSOLETE_DEFAULTS | ||
24 | |||
25 | static __inline__ int ide_default_irq(unsigned long base) | 23 | static __inline__ int ide_default_irq(unsigned long base) |
26 | { | 24 | { |
27 | switch (base) { | 25 | switch (base) { |
@@ -60,14 +58,6 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
60 | } | 58 | } |
61 | } | 59 | } |
62 | 60 | ||
63 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
64 | |||
65 | #ifdef CONFIG_BLK_DEV_IDEPCI | ||
66 | #define ide_init_default_irq(base) (0) | ||
67 | #else | ||
68 | #define ide_init_default_irq(base) ide_default_irq(base) | ||
69 | #endif | ||
70 | |||
71 | #include <asm-generic/ide_iops.h> | 61 | #include <asm-generic/ide_iops.h> |
72 | 62 | ||
73 | #endif /* __KERNEL__ */ | 63 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/hdreg.h b/include/linux/hdreg.h index e38e75967e74..c37e9241fae7 100644 --- a/include/linux/hdreg.h +++ b/include/linux/hdreg.h | |||
@@ -422,9 +422,11 @@ struct hd_geometry { | |||
422 | #define HDIO_SET_NOWERR 0x0325 /* change ignore-write-error flag */ | 422 | #define HDIO_SET_NOWERR 0x0325 /* change ignore-write-error flag */ |
423 | #define HDIO_SET_DMA 0x0326 /* change use-dma flag */ | 423 | #define HDIO_SET_DMA 0x0326 /* change use-dma flag */ |
424 | #define HDIO_SET_PIO_MODE 0x0327 /* reconfig interface to new speed */ | 424 | #define HDIO_SET_PIO_MODE 0x0327 /* reconfig interface to new speed */ |
425 | #ifndef __KERNEL__ | ||
425 | #define HDIO_SCAN_HWIF 0x0328 /* register and (re)scan interface */ | 426 | #define HDIO_SCAN_HWIF 0x0328 /* register and (re)scan interface */ |
426 | #define HDIO_SET_NICE 0x0329 /* set nice flags */ | ||
427 | #define HDIO_UNREGISTER_HWIF 0x032a /* unregister interface */ | 427 | #define HDIO_UNREGISTER_HWIF 0x032a /* unregister interface */ |
428 | #endif | ||
429 | #define HDIO_SET_NICE 0x0329 /* set nice flags */ | ||
428 | #define HDIO_SET_WCACHE 0x032b /* change write cache enable-disable */ | 430 | #define HDIO_SET_WCACHE 0x032b /* change write cache enable-disable */ |
429 | #define HDIO_SET_ACOUSTIC 0x032c /* change acoustic behavior */ | 431 | #define HDIO_SET_ACOUSTIC 0x032c /* change acoustic behavior */ |
430 | #define HDIO_SET_BUSSTATE 0x032d /* set the bus state of the hwif */ | 432 | #define HDIO_SET_BUSSTATE 0x032d /* set the bus state of the hwif */ |
diff --git a/include/linux/ide.h b/include/linux/ide.h index bc26b2f27359..6c39482fd1a1 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -82,24 +82,10 @@ typedef unsigned char byte; /* used everywhere */ | |||
82 | 82 | ||
83 | #define IDE_FEATURE_OFFSET IDE_ERROR_OFFSET | 83 | #define IDE_FEATURE_OFFSET IDE_ERROR_OFFSET |
84 | #define IDE_COMMAND_OFFSET IDE_STATUS_OFFSET | 84 | #define IDE_COMMAND_OFFSET IDE_STATUS_OFFSET |
85 | 85 | #define IDE_ALTSTATUS_OFFSET IDE_CONTROL_OFFSET | |
86 | #define IDE_DATA_REG (HWIF(drive)->io_ports[IDE_DATA_OFFSET]) | 86 | #define IDE_IREASON_OFFSET IDE_NSECTOR_OFFSET |
87 | #define IDE_ERROR_REG (HWIF(drive)->io_ports[IDE_ERROR_OFFSET]) | 87 | #define IDE_BCOUNTL_OFFSET IDE_LCYL_OFFSET |
88 | #define IDE_NSECTOR_REG (HWIF(drive)->io_ports[IDE_NSECTOR_OFFSET]) | 88 | #define IDE_BCOUNTH_OFFSET IDE_HCYL_OFFSET |
89 | #define IDE_SECTOR_REG (HWIF(drive)->io_ports[IDE_SECTOR_OFFSET]) | ||
90 | #define IDE_LCYL_REG (HWIF(drive)->io_ports[IDE_LCYL_OFFSET]) | ||
91 | #define IDE_HCYL_REG (HWIF(drive)->io_ports[IDE_HCYL_OFFSET]) | ||
92 | #define IDE_SELECT_REG (HWIF(drive)->io_ports[IDE_SELECT_OFFSET]) | ||
93 | #define IDE_STATUS_REG (HWIF(drive)->io_ports[IDE_STATUS_OFFSET]) | ||
94 | #define IDE_CONTROL_REG (HWIF(drive)->io_ports[IDE_CONTROL_OFFSET]) | ||
95 | #define IDE_IRQ_REG (HWIF(drive)->io_ports[IDE_IRQ_OFFSET]) | ||
96 | |||
97 | #define IDE_FEATURE_REG IDE_ERROR_REG | ||
98 | #define IDE_COMMAND_REG IDE_STATUS_REG | ||
99 | #define IDE_ALTSTATUS_REG IDE_CONTROL_REG | ||
100 | #define IDE_IREASON_REG IDE_NSECTOR_REG | ||
101 | #define IDE_BCOUNTL_REG IDE_LCYL_REG | ||
102 | #define IDE_BCOUNTH_REG IDE_HCYL_REG | ||
103 | 89 | ||
104 | #define OK_STAT(stat,good,bad) (((stat)&((good)|(bad)))==(good)) | 90 | #define OK_STAT(stat,good,bad) (((stat)&((good)|(bad)))==(good)) |
105 | #define BAD_R_STAT (BUSY_STAT | ERR_STAT) | 91 | #define BAD_R_STAT (BUSY_STAT | ERR_STAT) |
@@ -169,7 +155,7 @@ enum { ide_unknown, ide_generic, ide_pci, | |||
169 | ide_rz1000, ide_trm290, | 155 | ide_rz1000, ide_trm290, |
170 | ide_cmd646, ide_cy82c693, ide_4drives, | 156 | ide_cmd646, ide_cy82c693, ide_4drives, |
171 | ide_pmac, ide_etrax100, ide_acorn, | 157 | ide_pmac, ide_etrax100, ide_acorn, |
172 | ide_au1xxx, ide_palm3710, ide_forced | 158 | ide_au1xxx, ide_palm3710 |
173 | }; | 159 | }; |
174 | 160 | ||
175 | typedef u8 hwif_chipset_t; | 161 | typedef u8 hwif_chipset_t; |
@@ -186,14 +172,9 @@ typedef struct hw_regs_s { | |||
186 | } hw_regs_t; | 172 | } hw_regs_t; |
187 | 173 | ||
188 | struct hwif_s * ide_find_port(unsigned long); | 174 | struct hwif_s * ide_find_port(unsigned long); |
189 | struct hwif_s *ide_deprecated_find_port(unsigned long); | ||
190 | void ide_init_port_data(struct hwif_s *, unsigned int); | 175 | void ide_init_port_data(struct hwif_s *, unsigned int); |
191 | void ide_init_port_hw(struct hwif_s *, hw_regs_t *); | 176 | void ide_init_port_hw(struct hwif_s *, hw_regs_t *); |
192 | 177 | ||
193 | struct ide_drive_s; | ||
194 | int ide_register_hw(hw_regs_t *, void (*)(struct ide_drive_s *), | ||
195 | struct hwif_s **); | ||
196 | |||
197 | static inline void ide_std_init_ports(hw_regs_t *hw, | 178 | static inline void ide_std_init_ports(hw_regs_t *hw, |
198 | unsigned long io_addr, | 179 | unsigned long io_addr, |
199 | unsigned long ctl_addr) | 180 | unsigned long ctl_addr) |
@@ -213,45 +194,6 @@ static inline void ide_std_init_ports(hw_regs_t *hw, | |||
213 | #define MAX_HWIFS CONFIG_IDE_MAX_HWIFS | 194 | #define MAX_HWIFS CONFIG_IDE_MAX_HWIFS |
214 | #endif | 195 | #endif |
215 | 196 | ||
216 | /* needed on alpha, x86/x86_64, ia64, mips, ppc32 and sh */ | ||
217 | #ifndef IDE_ARCH_OBSOLETE_DEFAULTS | ||
218 | # define ide_default_io_base(index) (0) | ||
219 | # define ide_default_irq(base) (0) | ||
220 | # define ide_init_default_irq(base) (0) | ||
221 | #endif | ||
222 | |||
223 | #ifdef CONFIG_IDE_ARCH_OBSOLETE_INIT | ||
224 | static inline void ide_init_hwif_ports(hw_regs_t *hw, | ||
225 | unsigned long io_addr, | ||
226 | unsigned long ctl_addr, | ||
227 | int *irq) | ||
228 | { | ||
229 | if (!ctl_addr) | ||
230 | ide_std_init_ports(hw, io_addr, ide_default_io_ctl(io_addr)); | ||
231 | else | ||
232 | ide_std_init_ports(hw, io_addr, ctl_addr); | ||
233 | |||
234 | if (irq) | ||
235 | *irq = 0; | ||
236 | |||
237 | hw->io_ports[IDE_IRQ_OFFSET] = 0; | ||
238 | |||
239 | #ifdef CONFIG_PPC32 | ||
240 | if (ppc_ide_md.ide_init_hwif) | ||
241 | ppc_ide_md.ide_init_hwif(hw, io_addr, ctl_addr, irq); | ||
242 | #endif | ||
243 | } | ||
244 | #else | ||
245 | static inline void ide_init_hwif_ports(hw_regs_t *hw, | ||
246 | unsigned long io_addr, | ||
247 | unsigned long ctl_addr, | ||
248 | int *irq) | ||
249 | { | ||
250 | if (io_addr || ctl_addr) | ||
251 | printk(KERN_WARNING "%s: must not be called\n", __FUNCTION__); | ||
252 | } | ||
253 | #endif /* CONFIG_IDE_ARCH_OBSOLETE_INIT */ | ||
254 | |||
255 | /* Currently only m68k, apus and m8xx need it */ | 197 | /* Currently only m68k, apus and m8xx need it */ |
256 | #ifndef IDE_ARCH_ACK_INTR | 198 | #ifndef IDE_ARCH_ACK_INTR |
257 | # define ide_ack_intr(hwif) (1) | 199 | # define ide_ack_intr(hwif) (1) |
@@ -406,7 +348,7 @@ typedef struct ide_drive_s { | |||
406 | u8 wcache; /* status of write cache */ | 348 | u8 wcache; /* status of write cache */ |
407 | u8 acoustic; /* acoustic management */ | 349 | u8 acoustic; /* acoustic management */ |
408 | u8 media; /* disk, cdrom, tape, floppy, ... */ | 350 | u8 media; /* disk, cdrom, tape, floppy, ... */ |
409 | u8 ctl; /* "normal" value for IDE_CONTROL_REG */ | 351 | u8 ctl; /* "normal" value for Control register */ |
410 | u8 ready_stat; /* min status value for drive ready */ | 352 | u8 ready_stat; /* min status value for drive ready */ |
411 | u8 mult_count; /* current multiple sector setting */ | 353 | u8 mult_count; /* current multiple sector setting */ |
412 | u8 mult_req; /* requested multiple sector setting */ | 354 | u8 mult_req; /* requested multiple sector setting */ |
@@ -507,8 +449,6 @@ typedef struct hwif_s { | |||
507 | void (*maskproc)(ide_drive_t *, int); | 449 | void (*maskproc)(ide_drive_t *, int); |
508 | /* check host's drive quirk list */ | 450 | /* check host's drive quirk list */ |
509 | void (*quirkproc)(ide_drive_t *); | 451 | void (*quirkproc)(ide_drive_t *); |
510 | /* driver soft-power interface */ | ||
511 | int (*busproc)(ide_drive_t *, int); | ||
512 | #endif | 452 | #endif |
513 | u8 (*mdma_filter)(ide_drive_t *); | 453 | u8 (*mdma_filter)(ide_drive_t *); |
514 | u8 (*udma_filter)(ide_drive_t *); | 454 | u8 (*udma_filter)(ide_drive_t *); |
@@ -578,7 +518,6 @@ typedef struct hwif_s { | |||
578 | 518 | ||
579 | unsigned noprobe : 1; /* don't probe for this interface */ | 519 | unsigned noprobe : 1; /* don't probe for this interface */ |
580 | unsigned present : 1; /* this interface exists */ | 520 | unsigned present : 1; /* this interface exists */ |
581 | unsigned hold : 1; /* this interface is always present */ | ||
582 | unsigned serialized : 1; /* serialized all channel operation */ | 521 | unsigned serialized : 1; /* serialized all channel operation */ |
583 | unsigned sharing_irq: 1; /* 1 = sharing irq with another hwif */ | 522 | unsigned sharing_irq: 1; /* 1 = sharing irq with another hwif */ |
584 | unsigned reset : 1; /* reset after probe */ | 523 | unsigned reset : 1; /* reset after probe */ |
@@ -586,7 +525,9 @@ typedef struct hwif_s { | |||
586 | unsigned mmio : 1; /* host uses MMIO */ | 525 | unsigned mmio : 1; /* host uses MMIO */ |
587 | unsigned straight8 : 1; /* Alan's straight 8 check */ | 526 | unsigned straight8 : 1; /* Alan's straight 8 check */ |
588 | 527 | ||
589 | struct device gendev; | 528 | struct device gendev; |
529 | struct device *portdev; | ||
530 | |||
590 | struct completion gendev_rel_comp; /* To deal with device release() */ | 531 | struct completion gendev_rel_comp; /* To deal with device release() */ |
591 | 532 | ||
592 | void *hwif_data; /* extra hwif data */ | 533 | void *hwif_data; /* extra hwif data */ |
@@ -647,6 +588,68 @@ int set_io_32bit(ide_drive_t *, int); | |||
647 | int set_pio_mode(ide_drive_t *, int); | 588 | int set_pio_mode(ide_drive_t *, int); |
648 | int set_using_dma(ide_drive_t *, int); | 589 | int set_using_dma(ide_drive_t *, int); |
649 | 590 | ||
591 | /* ATAPI packet command flags */ | ||
592 | enum { | ||
593 | /* set when an error is considered normal - no retry (ide-tape) */ | ||
594 | PC_FLAG_ABORT = (1 << 0), | ||
595 | PC_FLAG_SUPPRESS_ERROR = (1 << 1), | ||
596 | PC_FLAG_WAIT_FOR_DSC = (1 << 2), | ||
597 | PC_FLAG_DMA_OK = (1 << 3), | ||
598 | PC_FLAG_DMA_RECOMMENDED = (1 << 4), | ||
599 | PC_FLAG_DMA_IN_PROGRESS = (1 << 5), | ||
600 | PC_FLAG_DMA_ERROR = (1 << 6), | ||
601 | PC_FLAG_WRITING = (1 << 7), | ||
602 | /* command timed out */ | ||
603 | PC_FLAG_TIMEDOUT = (1 << 8), | ||
604 | }; | ||
605 | |||
606 | struct ide_atapi_pc { | ||
607 | /* actual packet bytes */ | ||
608 | u8 c[12]; | ||
609 | /* incremented on each retry */ | ||
610 | int retries; | ||
611 | int error; | ||
612 | |||
613 | /* bytes to transfer */ | ||
614 | int req_xfer; | ||
615 | /* bytes actually transferred */ | ||
616 | int xferred; | ||
617 | |||
618 | /* data buffer */ | ||
619 | u8 *buf; | ||
620 | /* current buffer position */ | ||
621 | u8 *cur_pos; | ||
622 | int buf_size; | ||
623 | /* missing/available data on the current buffer */ | ||
624 | int b_count; | ||
625 | |||
626 | /* the corresponding request */ | ||
627 | struct request *rq; | ||
628 | |||
629 | unsigned long flags; | ||
630 | |||
631 | /* | ||
632 | * those are more or less driver-specific and some of them are subject | ||
633 | * to change/removal later. | ||
634 | */ | ||
635 | u8 pc_buf[256]; | ||
636 | void (*idefloppy_callback) (ide_drive_t *); | ||
637 | ide_startstop_t (*idetape_callback) (ide_drive_t *); | ||
638 | |||
639 | /* idetape only */ | ||
640 | struct idetape_bh *bh; | ||
641 | char *b_data; | ||
642 | |||
643 | /* idescsi only for now */ | ||
644 | struct scatterlist *sg; | ||
645 | unsigned int sg_cnt; | ||
646 | |||
647 | struct scsi_cmnd *scsi_cmd; | ||
648 | void (*done) (struct scsi_cmnd *); | ||
649 | |||
650 | unsigned long timeout; | ||
651 | }; | ||
652 | |||
650 | #ifdef CONFIG_IDE_PROC_FS | 653 | #ifdef CONFIG_IDE_PROC_FS |
651 | /* | 654 | /* |
652 | * configurable drive settings | 655 | * configurable drive settings |
@@ -691,6 +694,7 @@ void proc_ide_create(void); | |||
691 | void proc_ide_destroy(void); | 694 | void proc_ide_destroy(void); |
692 | void ide_proc_register_port(ide_hwif_t *); | 695 | void ide_proc_register_port(ide_hwif_t *); |
693 | void ide_proc_port_register_devices(ide_hwif_t *); | 696 | void ide_proc_port_register_devices(ide_hwif_t *); |
697 | void ide_proc_unregister_device(ide_drive_t *); | ||
694 | void ide_proc_unregister_port(ide_hwif_t *); | 698 | void ide_proc_unregister_port(ide_hwif_t *); |
695 | void ide_proc_register_driver(ide_drive_t *, ide_driver_t *); | 699 | void ide_proc_register_driver(ide_drive_t *, ide_driver_t *); |
696 | void ide_proc_unregister_driver(ide_drive_t *, ide_driver_t *); | 700 | void ide_proc_unregister_driver(ide_drive_t *, ide_driver_t *); |
@@ -724,6 +728,7 @@ static inline void proc_ide_create(void) { ; } | |||
724 | static inline void proc_ide_destroy(void) { ; } | 728 | static inline void proc_ide_destroy(void) { ; } |
725 | static inline void ide_proc_register_port(ide_hwif_t *hwif) { ; } | 729 | static inline void ide_proc_register_port(ide_hwif_t *hwif) { ; } |
726 | static inline void ide_proc_port_register_devices(ide_hwif_t *hwif) { ; } | 730 | static inline void ide_proc_port_register_devices(ide_hwif_t *hwif) { ; } |
731 | static inline void ide_proc_unregister_device(ide_drive_t *drive) { ; } | ||
727 | static inline void ide_proc_unregister_port(ide_hwif_t *hwif) { ; } | 732 | static inline void ide_proc_unregister_port(ide_hwif_t *hwif) { ; } |
728 | static inline void ide_proc_register_driver(ide_drive_t *drive, ide_driver_t *driver) { ; } | 733 | static inline void ide_proc_register_driver(ide_drive_t *drive, ide_driver_t *driver) { ; } |
729 | static inline void ide_proc_unregister_driver(ide_drive_t *drive, ide_driver_t *driver) { ; } | 734 | static inline void ide_proc_unregister_driver(ide_drive_t *drive, ide_driver_t *driver) { ; } |
@@ -990,7 +995,6 @@ extern void do_ide_request(struct request_queue *); | |||
990 | void ide_init_disk(struct gendisk *, ide_drive_t *); | 995 | void ide_init_disk(struct gendisk *, ide_drive_t *); |
991 | 996 | ||
992 | #ifdef CONFIG_IDEPCI_PCIBUS_ORDER | 997 | #ifdef CONFIG_IDEPCI_PCIBUS_ORDER |
993 | extern int ide_scan_direction; | ||
994 | extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner, const char *mod_name); | 998 | extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner, const char *mod_name); |
995 | #define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE, KBUILD_MODNAME) | 999 | #define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE, KBUILD_MODNAME) |
996 | #else | 1000 | #else |
@@ -1195,7 +1199,7 @@ static inline void ide_acpi_set_state(ide_hwif_t *hwif, int on) {} | |||
1195 | void ide_remove_port_from_hwgroup(ide_hwif_t *); | 1199 | void ide_remove_port_from_hwgroup(ide_hwif_t *); |
1196 | extern int ide_hwif_request_regions(ide_hwif_t *hwif); | 1200 | extern int ide_hwif_request_regions(ide_hwif_t *hwif); |
1197 | extern void ide_hwif_release_regions(ide_hwif_t* hwif); | 1201 | extern void ide_hwif_release_regions(ide_hwif_t* hwif); |
1198 | void ide_unregister(unsigned int, int, int); | 1202 | void ide_unregister(unsigned int); |
1199 | 1203 | ||
1200 | void ide_register_region(struct gendisk *); | 1204 | void ide_register_region(struct gendisk *); |
1201 | void ide_unregister_region(struct gendisk *); | 1205 | void ide_unregister_region(struct gendisk *); |
@@ -1204,6 +1208,8 @@ void ide_undecoded_slave(ide_drive_t *); | |||
1204 | 1208 | ||
1205 | int ide_device_add_all(u8 *idx, const struct ide_port_info *); | 1209 | int ide_device_add_all(u8 *idx, const struct ide_port_info *); |
1206 | int ide_device_add(u8 idx[4], const struct ide_port_info *); | 1210 | int ide_device_add(u8 idx[4], const struct ide_port_info *); |
1211 | void ide_port_unregister_devices(ide_hwif_t *); | ||
1212 | void ide_port_scan(ide_hwif_t *); | ||
1207 | 1213 | ||
1208 | static inline void *ide_get_hwifdata (ide_hwif_t * hwif) | 1214 | static inline void *ide_get_hwifdata (ide_hwif_t * hwif) |
1209 | { | 1215 | { |
@@ -1279,6 +1285,7 @@ extern struct mutex ide_cfg_mtx; | |||
1279 | #define local_irq_set(flags) do { local_save_flags((flags)); local_irq_enable_in_hardirq(); } while (0) | 1285 | #define local_irq_set(flags) do { local_save_flags((flags)); local_irq_enable_in_hardirq(); } while (0) |
1280 | 1286 | ||
1281 | extern struct bus_type ide_bus_type; | 1287 | extern struct bus_type ide_bus_type; |
1288 | extern struct class *ide_port_class; | ||
1282 | 1289 | ||
1283 | /* check if CACHE FLUSH (EXT) command is supported (bits defined in ATA-6) */ | 1290 | /* check if CACHE FLUSH (EXT) command is supported (bits defined in ATA-6) */ |
1284 | #define ide_id_has_flush_cache(id) ((id)->cfs_enable_2 & 0x3000) | 1291 | #define ide_id_has_flush_cache(id) ((id)->cfs_enable_2 & 0x3000) |
@@ -1307,7 +1314,10 @@ static inline ide_drive_t *ide_get_paired_drive(ide_drive_t *drive) | |||
1307 | 1314 | ||
1308 | static inline void ide_set_irq(ide_drive_t *drive, int on) | 1315 | static inline void ide_set_irq(ide_drive_t *drive, int on) |
1309 | { | 1316 | { |
1310 | drive->hwif->OUTB(drive->ctl | (on ? 0 : 2), IDE_CONTROL_REG); | 1317 | ide_hwif_t *hwif = drive->hwif; |
1318 | |||
1319 | hwif->OUTB(drive->ctl | (on ? 0 : 2), | ||
1320 | hwif->io_ports[IDE_CONTROL_OFFSET]); | ||
1311 | } | 1321 | } |
1312 | 1322 | ||
1313 | static inline u8 ide_read_status(ide_drive_t *drive) | 1323 | static inline u8 ide_read_status(ide_drive_t *drive) |
@@ -1331,4 +1341,26 @@ static inline u8 ide_read_error(ide_drive_t *drive) | |||
1331 | return hwif->INB(hwif->io_ports[IDE_ERROR_OFFSET]); | 1341 | return hwif->INB(hwif->io_ports[IDE_ERROR_OFFSET]); |
1332 | } | 1342 | } |
1333 | 1343 | ||
1344 | /* | ||
1345 | * Too bad. The drive wants to send us data which we are not ready to accept. | ||
1346 | * Just throw it away. | ||
1347 | */ | ||
1348 | static inline void ide_atapi_discard_data(ide_drive_t *drive, unsigned bcount) | ||
1349 | { | ||
1350 | ide_hwif_t *hwif = drive->hwif; | ||
1351 | |||
1352 | /* FIXME: use ->atapi_input_bytes */ | ||
1353 | while (bcount--) | ||
1354 | (void)hwif->INB(hwif->io_ports[IDE_DATA_OFFSET]); | ||
1355 | } | ||
1356 | |||
1357 | static inline void ide_atapi_write_zeros(ide_drive_t *drive, unsigned bcount) | ||
1358 | { | ||
1359 | ide_hwif_t *hwif = drive->hwif; | ||
1360 | |||
1361 | /* FIXME: use ->atapi_output_bytes */ | ||
1362 | while (bcount--) | ||
1363 | hwif->OUTB(0, hwif->io_ports[IDE_DATA_OFFSET]); | ||
1364 | } | ||
1365 | |||
1334 | #endif /* _IDE_H */ | 1366 | #endif /* _IDE_H */ |