diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-19 22:36:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-19 22:36:05 -0400 |
commit | 5f737085beea3a5c5b6f44a16e6d3e2fd03095e0 (patch) | |
tree | 218643043a16f9af32b2b1037ddbb3ecd271c779 /include | |
parent | e9a404580ccaeb31dd2a976f9929c4f9eb6f3540 (diff) | |
parent | 276d789e1794560d7ce53a7f2687415e2a80bb8a (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6: (50 commits)
ide: remove inclusion of non-existent io_trace.h
ide-disk: add get_smart_data() helper
ide: fix ->data_phase in taskfile_load_raw()
ide: check drive->using_dma in flagged_taskfile()
ide: check ->dma_setup() return value in flagged_taskfile()
dtc2278: note on docs
qd65xx: remove pointless qd_{read,write}_reg() (take 2)
ide: PCI BMDMA initialization fixes (take 2)
ide: remove stale comments from ide-taskfile.c
ide: remove dead code from ide_driveid_update()
ide: use __ide_end_request() in ide_end_dequeued_request()
ide: enhance ide_setup_pci_noise()
cs5530: remove needless ide_lock taking
ide: take ide_lock for prefetch disable/enable in do_special()
ht6560b: fix deadlock on error handling
cmd640: fix deadlock on error handling
slc90e66: fix deadlock on error handling
opti621: fix deadlock on error handling
qd65xx: fix deadlock on error handling
dtc2278: fix deadlock on error handling
...
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-alpha/ide.h | 1 | ||||
-rw-r--r-- | include/asm-arm/ide.h | 1 | ||||
-rw-r--r-- | include/asm-blackfin/ide.h | 1 | ||||
-rw-r--r-- | include/asm-cris/arch-v32/ide.h | 2 | ||||
-rw-r--r-- | include/asm-ia64/ide.h | 1 | ||||
-rw-r--r-- | include/asm-m32r/ide.h | 1 | ||||
-rw-r--r-- | include/asm-m68k/ide.h | 2 | ||||
-rw-r--r-- | include/asm-mips/mach-generic/ide.h | 1 | ||||
-rw-r--r-- | include/asm-parisc/ide.h | 1 | ||||
-rw-r--r-- | include/asm-powerpc/ide.h | 3 | ||||
-rw-r--r-- | include/asm-sh64/ide.h | 1 | ||||
-rw-r--r-- | include/asm-sparc/ide.h | 1 | ||||
-rw-r--r-- | include/asm-sparc64/ide.h | 1 | ||||
-rw-r--r-- | include/asm-x86/ide.h | 1 | ||||
-rw-r--r-- | include/linux/ide.h | 109 |
15 files changed, 36 insertions, 91 deletions
diff --git a/include/asm-alpha/ide.h b/include/asm-alpha/ide.h index 2a5cc0b367ab..b7bf68d0407b 100644 --- a/include/asm-alpha/ide.h +++ b/include/asm-alpha/ide.h | |||
@@ -40,7 +40,6 @@ static inline unsigned long ide_default_io_base(int index) | |||
40 | } | 40 | } |
41 | } | 41 | } |
42 | 42 | ||
43 | #define IDE_ARCH_OBSOLETE_INIT | ||
44 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 43 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
45 | 44 | ||
46 | #ifdef CONFIG_PCI | 45 | #ifdef CONFIG_PCI |
diff --git a/include/asm-arm/ide.h b/include/asm-arm/ide.h index 4f68c8a5a199..f348fcf3150b 100644 --- a/include/asm-arm/ide.h +++ b/include/asm-arm/ide.h | |||
@@ -18,7 +18,6 @@ | |||
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | #if !defined(CONFIG_ARCH_L7200) | 20 | #if !defined(CONFIG_ARCH_L7200) |
21 | # define IDE_ARCH_OBSOLETE_INIT | ||
22 | # ifdef CONFIG_ARCH_CLPS7500 | 21 | # ifdef CONFIG_ARCH_CLPS7500 |
23 | # define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 22 | # define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
24 | # else | 23 | # else |
diff --git a/include/asm-blackfin/ide.h b/include/asm-blackfin/ide.h index 41b2db46a168..121e272581d6 100644 --- a/include/asm-blackfin/ide.h +++ b/include/asm-blackfin/ide.h | |||
@@ -20,7 +20,6 @@ | |||
20 | #define MAX_HWIFS 1 | 20 | #define MAX_HWIFS 1 |
21 | 21 | ||
22 | /* Legacy ... BLK_DEV_IDECS */ | 22 | /* Legacy ... BLK_DEV_IDECS */ |
23 | #define IDE_ARCH_OBSOLETE_INIT | ||
24 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 23 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
25 | 24 | ||
26 | 25 | ||
diff --git a/include/asm-cris/arch-v32/ide.h b/include/asm-cris/arch-v32/ide.h index 6590f657500d..11296170d057 100644 --- a/include/asm-cris/arch-v32/ide.h +++ b/include/asm-cris/arch-v32/ide.h | |||
@@ -54,7 +54,7 @@ static inline unsigned long ide_default_io_base(int index) | |||
54 | #define SUPPORT_VLB_SYNC 0 | 54 | #define SUPPORT_VLB_SYNC 0 |
55 | 55 | ||
56 | #define IDE_ARCH_ACK_INTR | 56 | #define IDE_ARCH_ACK_INTR |
57 | #define ide_ack_intr(hwif) (hwif)->hw.ack_intr(hwif) | 57 | #define ide_ack_intr(hwif) ((hwif)->ack_intr(hwif)) |
58 | 58 | ||
59 | #endif /* __KERNEL__ */ | 59 | #endif /* __KERNEL__ */ |
60 | 60 | ||
diff --git a/include/asm-ia64/ide.h b/include/asm-ia64/ide.h index e928675de352..1ccf23809329 100644 --- a/include/asm-ia64/ide.h +++ b/include/asm-ia64/ide.h | |||
@@ -46,7 +46,6 @@ static inline unsigned long ide_default_io_base(int index) | |||
46 | } | 46 | } |
47 | } | 47 | } |
48 | 48 | ||
49 | #define IDE_ARCH_OBSOLETE_INIT | ||
50 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 49 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
51 | 50 | ||
52 | #ifdef CONFIG_PCI | 51 | #ifdef CONFIG_PCI |
diff --git a/include/asm-m32r/ide.h b/include/asm-m32r/ide.h index 4672a49e8760..5d2044e529ab 100644 --- a/include/asm-m32r/ide.h +++ b/include/asm-m32r/ide.h | |||
@@ -65,7 +65,6 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
65 | } | 65 | } |
66 | } | 66 | } |
67 | 67 | ||
68 | #define IDE_ARCH_OBSOLETE_INIT | ||
69 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 68 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
70 | 69 | ||
71 | #ifdef CONFIG_BLK_DEV_IDEPCI | 70 | #ifdef CONFIG_BLK_DEV_IDEPCI |
diff --git a/include/asm-m68k/ide.h b/include/asm-m68k/ide.h index f9ffb2cbbae8..909c6dfd3851 100644 --- a/include/asm-m68k/ide.h +++ b/include/asm-m68k/ide.h | |||
@@ -137,7 +137,7 @@ ide_get_lock(irq_handler_t handler, void *data) | |||
137 | #endif /* CONFIG_BLK_DEV_FALCON_IDE */ | 137 | #endif /* CONFIG_BLK_DEV_FALCON_IDE */ |
138 | 138 | ||
139 | #define IDE_ARCH_ACK_INTR | 139 | #define IDE_ARCH_ACK_INTR |
140 | #define ide_ack_intr(hwif) ((hwif)->hw.ack_intr ? (hwif)->hw.ack_intr(hwif) : 1) | 140 | #define ide_ack_intr(hwif) ((hwif)->ack_intr ? (hwif)->ack_intr(hwif) : 1) |
141 | 141 | ||
142 | #endif /* __KERNEL__ */ | 142 | #endif /* __KERNEL__ */ |
143 | #endif /* _M68K_IDE_H */ | 143 | #endif /* _M68K_IDE_H */ |
diff --git a/include/asm-mips/mach-generic/ide.h b/include/asm-mips/mach-generic/ide.h index a77128362a7d..4ec2b930dfbb 100644 --- a/include/asm-mips/mach-generic/ide.h +++ b/include/asm-mips/mach-generic/ide.h | |||
@@ -98,7 +98,6 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
98 | } | 98 | } |
99 | } | 99 | } |
100 | 100 | ||
101 | #define IDE_ARCH_OBSOLETE_INIT | ||
102 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 101 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
103 | 102 | ||
104 | #ifdef CONFIG_BLK_DEV_IDEPCI | 103 | #ifdef CONFIG_BLK_DEV_IDEPCI |
diff --git a/include/asm-parisc/ide.h b/include/asm-parisc/ide.h index b27bf7aeb256..be8760fbc8ee 100644 --- a/include/asm-parisc/ide.h +++ b/include/asm-parisc/ide.h | |||
@@ -17,7 +17,6 @@ | |||
17 | #define MAX_HWIFS 2 | 17 | #define MAX_HWIFS 2 |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | #define IDE_ARCH_OBSOLETE_INIT | ||
21 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 20 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
22 | 21 | ||
23 | #define ide_request_irq(irq,hand,flg,dev,id) request_irq((irq),(hand),(flg),(dev),(id)) | 22 | #define ide_request_irq(irq,hand,flg,dev,id) request_irq((irq),(hand),(flg),(dev),(id)) |
diff --git a/include/asm-powerpc/ide.h b/include/asm-powerpc/ide.h index 1644e44c8757..fd7f5a430f0a 100644 --- a/include/asm-powerpc/ide.h +++ b/include/asm-powerpc/ide.h | |||
@@ -69,12 +69,11 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
69 | 69 | ||
70 | #ifdef CONFIG_BLK_DEV_MPC8xx_IDE | 70 | #ifdef CONFIG_BLK_DEV_MPC8xx_IDE |
71 | #define IDE_ARCH_ACK_INTR 1 | 71 | #define IDE_ARCH_ACK_INTR 1 |
72 | #define ide_ack_intr(hwif) (hwif->hw.ack_intr ? hwif->hw.ack_intr(hwif) : 1) | 72 | #define ide_ack_intr(hwif) ((hwif)->ack_intr ? (hwif)->ack_intr(hwif) : 1) |
73 | #endif | 73 | #endif |
74 | 74 | ||
75 | #endif /* __powerpc64__ */ | 75 | #endif /* __powerpc64__ */ |
76 | 76 | ||
77 | #define IDE_ARCH_OBSOLETE_INIT | ||
78 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 77 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
79 | 78 | ||
80 | #endif /* __KERNEL__ */ | 79 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-sh64/ide.h b/include/asm-sh64/ide.h index c9d84d5f772e..b6e31e8b9410 100644 --- a/include/asm-sh64/ide.h +++ b/include/asm-sh64/ide.h | |||
@@ -19,7 +19,6 @@ | |||
19 | /* Without this, the initialisation of PCI IDE cards end up calling | 19 | /* Without this, the initialisation of PCI IDE cards end up calling |
20 | * ide_init_hwif_ports, which won't work. */ | 20 | * ide_init_hwif_ports, which won't work. */ |
21 | #ifdef CONFIG_BLK_DEV_IDEPCI | 21 | #ifdef CONFIG_BLK_DEV_IDEPCI |
22 | #define IDE_ARCH_OBSOLETE_INIT 1 | ||
23 | #define ide_default_io_ctl(base) (0) | 22 | #define ide_default_io_ctl(base) (0) |
24 | #endif | 23 | #endif |
25 | 24 | ||
diff --git a/include/asm-sparc/ide.h b/include/asm-sparc/ide.h index a6d735a1310e..404022765fc7 100644 --- a/include/asm-sparc/ide.h +++ b/include/asm-sparc/ide.h | |||
@@ -18,7 +18,6 @@ | |||
18 | #undef MAX_HWIFS | 18 | #undef MAX_HWIFS |
19 | #define MAX_HWIFS 2 | 19 | #define MAX_HWIFS 2 |
20 | 20 | ||
21 | #define IDE_ARCH_OBSOLETE_INIT | ||
22 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 21 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
23 | 22 | ||
24 | #define __ide_insl(data_reg, buffer, wcount) \ | 23 | #define __ide_insl(data_reg, buffer, wcount) \ |
diff --git a/include/asm-sparc64/ide.h b/include/asm-sparc64/ide.h index 55149cf933c2..ac7eb210b941 100644 --- a/include/asm-sparc64/ide.h +++ b/include/asm-sparc64/ide.h | |||
@@ -24,7 +24,6 @@ | |||
24 | # endif | 24 | # endif |
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | #define IDE_ARCH_OBSOLETE_INIT | ||
28 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 27 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
29 | 28 | ||
30 | #define __ide_insl(data_reg, buffer, wcount) \ | 29 | #define __ide_insl(data_reg, buffer, wcount) \ |
diff --git a/include/asm-x86/ide.h b/include/asm-x86/ide.h index e7817a3d6578..42130adf9c7c 100644 --- a/include/asm-x86/ide.h +++ b/include/asm-x86/ide.h | |||
@@ -62,7 +62,6 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
62 | } | 62 | } |
63 | } | 63 | } |
64 | 64 | ||
65 | #define IDE_ARCH_OBSOLETE_INIT | ||
66 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | 65 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ |
67 | 66 | ||
68 | #ifdef CONFIG_BLK_DEV_IDEPCI | 67 | #ifdef CONFIG_BLK_DEV_IDEPCI |
diff --git a/include/linux/ide.h b/include/linux/ide.h index 19db0a4ae447..2e4b8dd03cfe 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -192,22 +192,20 @@ typedef unsigned char byte; /* used everywhere */ | |||
192 | struct hwif_s; | 192 | struct hwif_s; |
193 | typedef int (ide_ack_intr_t)(struct hwif_s *); | 193 | typedef int (ide_ack_intr_t)(struct hwif_s *); |
194 | 194 | ||
195 | #ifndef NO_DMA | ||
196 | #define NO_DMA 255 | ||
197 | #endif | ||
198 | |||
199 | /* | 195 | /* |
200 | * hwif_chipset_t is used to keep track of the specific hardware | 196 | * hwif_chipset_t is used to keep track of the specific hardware |
201 | * chipset used by each IDE interface, if known. | 197 | * chipset used by each IDE interface, if known. |
202 | */ | 198 | */ |
203 | typedef enum { ide_unknown, ide_generic, ide_pci, | 199 | enum { ide_unknown, ide_generic, ide_pci, |
204 | ide_cmd640, ide_dtc2278, ide_ali14xx, | 200 | ide_cmd640, ide_dtc2278, ide_ali14xx, |
205 | ide_qd65xx, ide_umc8672, ide_ht6560b, | 201 | ide_qd65xx, ide_umc8672, ide_ht6560b, |
206 | ide_rz1000, ide_trm290, | 202 | ide_rz1000, ide_trm290, |
207 | ide_cmd646, ide_cy82c693, ide_4drives, | 203 | ide_cmd646, ide_cy82c693, ide_4drives, |
208 | ide_pmac, ide_etrax100, ide_acorn, | 204 | ide_pmac, ide_etrax100, ide_acorn, |
209 | ide_au1xxx, ide_forced | 205 | ide_au1xxx, ide_forced |
210 | } hwif_chipset_t; | 206 | }; |
207 | |||
208 | typedef u8 hwif_chipset_t; | ||
211 | 209 | ||
212 | /* | 210 | /* |
213 | * Structure to hold all information about the location of this port | 211 | * Structure to hold all information about the location of this port |
@@ -215,22 +213,16 @@ typedef enum { ide_unknown, ide_generic, ide_pci, | |||
215 | typedef struct hw_regs_s { | 213 | typedef struct hw_regs_s { |
216 | unsigned long io_ports[IDE_NR_PORTS]; /* task file registers */ | 214 | unsigned long io_ports[IDE_NR_PORTS]; /* task file registers */ |
217 | int irq; /* our irq number */ | 215 | int irq; /* our irq number */ |
218 | int dma; /* our dma entry */ | ||
219 | ide_ack_intr_t *ack_intr; /* acknowledge interrupt */ | 216 | ide_ack_intr_t *ack_intr; /* acknowledge interrupt */ |
220 | hwif_chipset_t chipset; | 217 | hwif_chipset_t chipset; |
221 | struct device *dev; | 218 | struct device *dev; |
222 | } hw_regs_t; | 219 | } hw_regs_t; |
223 | 220 | ||
224 | /* | 221 | struct hwif_s * ide_find_port(unsigned long); |
225 | * Register new hardware with ide | 222 | |
226 | */ | 223 | int ide_register_hw(hw_regs_t *, void (*)(struct hwif_s *), int, |
227 | int ide_register_hw(hw_regs_t *, int, struct hwif_s **); | 224 | struct hwif_s **); |
228 | int ide_register_hw_with_fixup(hw_regs_t *, int, struct hwif_s **, | ||
229 | void (*)(struct hwif_s *)); | ||
230 | 225 | ||
231 | /* | ||
232 | * Set up hw_regs_t structure before calling ide_register_hw (optional) | ||
233 | */ | ||
234 | void ide_setup_ports( hw_regs_t *hw, | 226 | void ide_setup_ports( hw_regs_t *hw, |
235 | unsigned long base, | 227 | unsigned long base, |
236 | int *offsets, | 228 | int *offsets, |
@@ -268,11 +260,7 @@ static inline void ide_std_init_ports(hw_regs_t *hw, | |||
268 | # define ide_init_default_irq(base) (0) | 260 | # define ide_init_default_irq(base) (0) |
269 | #endif | 261 | #endif |
270 | 262 | ||
271 | /* | 263 | #ifdef CONFIG_IDE_ARCH_OBSOLETE_INIT |
272 | * ide_init_hwif_ports() is OBSOLETE and will be removed in 2.7 series. | ||
273 | * New ports shouldn't define IDE_ARCH_OBSOLETE_INIT in <asm/ide.h>. | ||
274 | */ | ||
275 | #ifdef IDE_ARCH_OBSOLETE_INIT | ||
276 | static inline void ide_init_hwif_ports(hw_regs_t *hw, | 264 | static inline void ide_init_hwif_ports(hw_regs_t *hw, |
277 | unsigned long io_addr, | 265 | unsigned long io_addr, |
278 | unsigned long ctl_addr, | 266 | unsigned long ctl_addr, |
@@ -302,7 +290,7 @@ static inline void ide_init_hwif_ports(hw_regs_t *hw, | |||
302 | if (io_addr || ctl_addr) | 290 | if (io_addr || ctl_addr) |
303 | printk(KERN_WARNING "%s: must not be called\n", __FUNCTION__); | 291 | printk(KERN_WARNING "%s: must not be called\n", __FUNCTION__); |
304 | } | 292 | } |
305 | #endif /* IDE_ARCH_OBSOLETE_INIT */ | 293 | #endif /* CONFIG_IDE_ARCH_OBSOLETE_INIT */ |
306 | 294 | ||
307 | /* Currently only m68k, apus and m8xx need it */ | 295 | /* Currently only m68k, apus and m8xx need it */ |
308 | #ifndef IDE_ARCH_ACK_INTR | 296 | #ifndef IDE_ARCH_ACK_INTR |
@@ -363,7 +351,6 @@ typedef union { | |||
363 | * ATA DATA Register Special. | 351 | * ATA DATA Register Special. |
364 | * ATA NSECTOR Count Register(). | 352 | * ATA NSECTOR Count Register(). |
365 | * ATAPI Byte Count Register. | 353 | * ATAPI Byte Count Register. |
366 | * Channel index ordering pairs. | ||
367 | */ | 354 | */ |
368 | typedef union { | 355 | typedef union { |
369 | unsigned all :16; | 356 | unsigned all :16; |
@@ -378,7 +365,7 @@ typedef union { | |||
378 | #error "Please fix <asm/byteorder.h>" | 365 | #error "Please fix <asm/byteorder.h>" |
379 | #endif | 366 | #endif |
380 | } b; | 367 | } b; |
381 | } ata_nsector_t, ata_data_t, atapi_bcount_t, ata_index_t; | 368 | } ata_nsector_t, ata_data_t, atapi_bcount_t; |
382 | 369 | ||
383 | /* | 370 | /* |
384 | * ATA-IDE Select Register, aka Device-Head | 371 | * ATA-IDE Select Register, aka Device-Head |
@@ -657,7 +644,7 @@ typedef struct ide_drive_s { | |||
657 | ((1<<ide_pci)|(1<<ide_cmd646)|(1<<ide_ali14xx)) | 644 | ((1<<ide_pci)|(1<<ide_cmd646)|(1<<ide_ali14xx)) |
658 | #define IDE_CHIPSET_IS_PCI(c) ((IDE_CHIPSET_PCI_MASK >> (c)) & 1) | 645 | #define IDE_CHIPSET_IS_PCI(c) ((IDE_CHIPSET_PCI_MASK >> (c)) & 1) |
659 | 646 | ||
660 | struct ide_pci_device_s; | 647 | struct ide_port_info; |
661 | 648 | ||
662 | typedef struct hwif_s { | 649 | typedef struct hwif_s { |
663 | struct hwif_s *next; /* for linked-list in ide_hwgroup_t */ | 650 | struct hwif_s *next; /* for linked-list in ide_hwgroup_t */ |
@@ -672,7 +659,6 @@ typedef struct hwif_s { | |||
672 | unsigned long sata_scr[SATA_NR_PORTS]; | 659 | unsigned long sata_scr[SATA_NR_PORTS]; |
673 | unsigned long sata_misc[SATA_NR_PORTS]; | 660 | unsigned long sata_misc[SATA_NR_PORTS]; |
674 | 661 | ||
675 | hw_regs_t hw; /* Hardware info */ | ||
676 | ide_drive_t drives[MAX_DRIVES]; /* drive info */ | 662 | ide_drive_t drives[MAX_DRIVES]; /* drive info */ |
677 | 663 | ||
678 | u8 major; /* our major number */ | 664 | u8 major; /* our major number */ |
@@ -694,7 +680,9 @@ typedef struct hwif_s { | |||
694 | hwif_chipset_t chipset; /* sub-module for tuning.. */ | 680 | hwif_chipset_t chipset; /* sub-module for tuning.. */ |
695 | 681 | ||
696 | struct pci_dev *pci_dev; /* for pci chipsets */ | 682 | struct pci_dev *pci_dev; /* for pci chipsets */ |
697 | struct ide_pci_device_s *cds; /* chipset device struct */ | 683 | const struct ide_port_info *cds; /* chipset device struct */ |
684 | |||
685 | ide_ack_intr_t *ack_intr; | ||
698 | 686 | ||
699 | void (*rw_disk)(ide_drive_t *, struct request *); | 687 | void (*rw_disk)(ide_drive_t *, struct request *); |
700 | 688 | ||
@@ -725,6 +713,8 @@ typedef struct hwif_s { | |||
725 | u8 (*mdma_filter)(ide_drive_t *); | 713 | u8 (*mdma_filter)(ide_drive_t *); |
726 | u8 (*udma_filter)(ide_drive_t *); | 714 | u8 (*udma_filter)(ide_drive_t *); |
727 | 715 | ||
716 | void (*fixup)(struct hwif_s *); | ||
717 | |||
728 | void (*ata_input_data)(ide_drive_t *, void *, u32); | 718 | void (*ata_input_data)(ide_drive_t *, void *, u32); |
729 | void (*ata_output_data)(ide_drive_t *, void *, u32); | 719 | void (*ata_output_data)(ide_drive_t *, void *, u32); |
730 | 720 | ||
@@ -841,8 +831,6 @@ typedef struct hwgroup_s { | |||
841 | 831 | ||
842 | /* for pci chipsets */ | 832 | /* for pci chipsets */ |
843 | struct pci_dev *pci_dev; | 833 | struct pci_dev *pci_dev; |
844 | /* chipset device struct */ | ||
845 | struct ide_pci_device_s *cds; | ||
846 | 834 | ||
847 | /* current request */ | 835 | /* current request */ |
848 | struct request *rq; | 836 | struct request *rq; |
@@ -1030,36 +1018,16 @@ extern int ide_end_request (ide_drive_t *drive, int uptodate, int nrsecs); | |||
1030 | int ide_end_dequeued_request(ide_drive_t *drive, struct request *rq, | 1018 | int ide_end_dequeued_request(ide_drive_t *drive, struct request *rq, |
1031 | int uptodate, int nr_sectors); | 1019 | int uptodate, int nr_sectors); |
1032 | 1020 | ||
1033 | /* | ||
1034 | * This is used on exit from the driver to designate the next irq handler | ||
1035 | * and also to start the safety timer. | ||
1036 | */ | ||
1037 | extern void ide_set_handler (ide_drive_t *drive, ide_handler_t *handler, unsigned int timeout, ide_expiry_t *expiry); | 1021 | extern void ide_set_handler (ide_drive_t *drive, ide_handler_t *handler, unsigned int timeout, ide_expiry_t *expiry); |
1038 | 1022 | ||
1039 | /* | ||
1040 | * This is used on exit from the driver to designate the next irq handler | ||
1041 | * and start the safety time safely and atomically from the IRQ handler | ||
1042 | * with respect to the command issue (which it also does) | ||
1043 | */ | ||
1044 | extern void ide_execute_command(ide_drive_t *, task_ioreg_t cmd, ide_handler_t *, unsigned int, ide_expiry_t *); | 1023 | extern void ide_execute_command(ide_drive_t *, task_ioreg_t cmd, ide_handler_t *, unsigned int, ide_expiry_t *); |
1045 | 1024 | ||
1046 | ide_startstop_t __ide_error(ide_drive_t *, struct request *, u8, u8); | 1025 | ide_startstop_t __ide_error(ide_drive_t *, struct request *, u8, u8); |
1047 | 1026 | ||
1048 | /* | ||
1049 | * ide_error() takes action based on the error returned by the controller. | ||
1050 | * The caller should return immediately after invoking this. | ||
1051 | * | ||
1052 | * (drive, msg, status) | ||
1053 | */ | ||
1054 | ide_startstop_t ide_error (ide_drive_t *drive, const char *msg, byte stat); | 1027 | ide_startstop_t ide_error (ide_drive_t *drive, const char *msg, byte stat); |
1055 | 1028 | ||
1056 | ide_startstop_t __ide_abort(ide_drive_t *, struct request *); | 1029 | ide_startstop_t __ide_abort(ide_drive_t *, struct request *); |
1057 | 1030 | ||
1058 | /* | ||
1059 | * Abort a running command on the controller triggering the abort | ||
1060 | * from a host side, non error situation | ||
1061 | * (drive, msg) | ||
1062 | */ | ||
1063 | extern ide_startstop_t ide_abort(ide_drive_t *, const char *); | 1031 | extern ide_startstop_t ide_abort(ide_drive_t *, const char *); |
1064 | 1032 | ||
1065 | extern void ide_fix_driveid(struct hd_driveid *); | 1033 | extern void ide_fix_driveid(struct hd_driveid *); |
@@ -1075,15 +1043,8 @@ extern void ide_fixstring(u8 *, const int, const int); | |||
1075 | 1043 | ||
1076 | int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long); | 1044 | int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long); |
1077 | 1045 | ||
1078 | /* | ||
1079 | * Start a reset operation for an IDE interface. | ||
1080 | * The caller should return immediately after invoking this. | ||
1081 | */ | ||
1082 | extern ide_startstop_t ide_do_reset (ide_drive_t *); | 1046 | extern ide_startstop_t ide_do_reset (ide_drive_t *); |
1083 | 1047 | ||
1084 | /* | ||
1085 | * This function is intended to be used prior to invoking ide_do_drive_cmd(). | ||
1086 | */ | ||
1087 | extern void ide_init_drive_cmd (struct request *rq); | 1048 | extern void ide_init_drive_cmd (struct request *rq); |
1088 | 1049 | ||
1089 | /* | 1050 | /* |
@@ -1098,13 +1059,6 @@ typedef enum { | |||
1098 | 1059 | ||
1099 | extern int ide_do_drive_cmd(ide_drive_t *, struct request *, ide_action_t); | 1060 | extern int ide_do_drive_cmd(ide_drive_t *, struct request *, ide_action_t); |
1100 | 1061 | ||
1101 | /* | ||
1102 | * Clean up after success/failure of an explicit drive cmd. | ||
1103 | * stat/err are used only when (HWGROUP(drive)->rq->cmd == IDE_DRIVE_CMD). | ||
1104 | * stat/err are used only when (HWGROUP(drive)->rq->cmd == IDE_DRIVE_TASK_MASK). | ||
1105 | * | ||
1106 | * (ide_drive_t *drive, u8 stat, u8 err) | ||
1107 | */ | ||
1108 | extern void ide_end_drive_cmd(ide_drive_t *, u8, u8); | 1062 | extern void ide_end_drive_cmd(ide_drive_t *, u8, u8); |
1109 | 1063 | ||
1110 | /* | 1064 | /* |
@@ -1177,10 +1131,6 @@ extern int taskfile_lib_get_identify(ide_drive_t *drive, u8 *); | |||
1177 | 1131 | ||
1178 | extern int ide_wait_not_busy(ide_hwif_t *hwif, unsigned long timeout); | 1132 | extern int ide_wait_not_busy(ide_hwif_t *hwif, unsigned long timeout); |
1179 | 1133 | ||
1180 | /* | ||
1181 | * ide_stall_queue() can be used by a drive to give excess bandwidth back | ||
1182 | * to the hwgroup by sleeping for timeout jiffies. | ||
1183 | */ | ||
1184 | extern void ide_stall_queue(ide_drive_t *drive, unsigned long timeout); | 1134 | extern void ide_stall_queue(ide_drive_t *drive, unsigned long timeout); |
1185 | 1135 | ||
1186 | extern int ide_spin_wait_hwgroup(ide_drive_t *); | 1136 | extern int ide_spin_wait_hwgroup(ide_drive_t *); |
@@ -1200,8 +1150,8 @@ extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *o | |||
1200 | #define ide_pci_register_driver(d) pci_register_driver(d) | 1150 | #define ide_pci_register_driver(d) pci_register_driver(d) |
1201 | #endif | 1151 | #endif |
1202 | 1152 | ||
1203 | void ide_pci_setup_ports(struct pci_dev *, struct ide_pci_device_s *, int, ata_index_t *); | 1153 | void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, int, u8 *); |
1204 | extern void ide_setup_pci_noise (struct pci_dev *dev, struct ide_pci_device_s *d); | 1154 | void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *); |
1205 | 1155 | ||
1206 | extern void default_hwif_iops(ide_hwif_t *); | 1156 | extern void default_hwif_iops(ide_hwif_t *); |
1207 | extern void default_hwif_mmiops(ide_hwif_t *); | 1157 | extern void default_hwif_mmiops(ide_hwif_t *); |
@@ -1261,6 +1211,14 @@ enum { | |||
1261 | IDE_HFLAG_SERIALIZE = (1 << 20), | 1211 | IDE_HFLAG_SERIALIZE = (1 << 20), |
1262 | /* use legacy IRQs */ | 1212 | /* use legacy IRQs */ |
1263 | IDE_HFLAG_LEGACY_IRQS = (1 << 21), | 1213 | IDE_HFLAG_LEGACY_IRQS = (1 << 21), |
1214 | /* force use of legacy IRQs */ | ||
1215 | IDE_HFLAG_FORCE_LEGACY_IRQS = (1 << 22), | ||
1216 | /* limit LBA48 requests to 256 sectors */ | ||
1217 | IDE_HFLAG_RQSIZE_256 = (1 << 23), | ||
1218 | /* use 32-bit I/O ops */ | ||
1219 | IDE_HFLAG_IO_32BIT = (1 << 24), | ||
1220 | /* unmask IRQs */ | ||
1221 | IDE_HFLAG_UNMASK_IRQS = (1 << 25), | ||
1264 | }; | 1222 | }; |
1265 | 1223 | ||
1266 | #ifdef CONFIG_BLK_DEV_OFFBOARD | 1224 | #ifdef CONFIG_BLK_DEV_OFFBOARD |
@@ -1269,7 +1227,7 @@ enum { | |||
1269 | # define IDE_HFLAG_OFF_BOARD 0 | 1227 | # define IDE_HFLAG_OFF_BOARD 0 |
1270 | #endif | 1228 | #endif |
1271 | 1229 | ||
1272 | typedef struct ide_pci_device_s { | 1230 | struct ide_port_info { |
1273 | char *name; | 1231 | char *name; |
1274 | unsigned int (*init_chipset)(struct pci_dev *, const char *); | 1232 | unsigned int (*init_chipset)(struct pci_dev *, const char *); |
1275 | void (*init_iops)(ide_hwif_t *); | 1233 | void (*init_iops)(ide_hwif_t *); |
@@ -1277,17 +1235,17 @@ typedef struct ide_pci_device_s { | |||
1277 | void (*init_dma)(ide_hwif_t *, unsigned long); | 1235 | void (*init_dma)(ide_hwif_t *, unsigned long); |
1278 | void (*fixup)(ide_hwif_t *); | 1236 | void (*fixup)(ide_hwif_t *); |
1279 | ide_pci_enablebit_t enablebits[2]; | 1237 | ide_pci_enablebit_t enablebits[2]; |
1238 | hwif_chipset_t chipset; | ||
1280 | unsigned int extra; | 1239 | unsigned int extra; |
1281 | struct ide_pci_device_s *next; | ||
1282 | u32 host_flags; | 1240 | u32 host_flags; |
1283 | u8 pio_mask; | 1241 | u8 pio_mask; |
1284 | u8 swdma_mask; | 1242 | u8 swdma_mask; |
1285 | u8 mwdma_mask; | 1243 | u8 mwdma_mask; |
1286 | u8 udma_mask; | 1244 | u8 udma_mask; |
1287 | } ide_pci_device_t; | 1245 | }; |
1288 | 1246 | ||
1289 | extern int ide_setup_pci_device(struct pci_dev *, ide_pci_device_t *); | 1247 | int ide_setup_pci_device(struct pci_dev *, const struct ide_port_info *); |
1290 | extern int ide_setup_pci_devices(struct pci_dev *, struct pci_dev *, ide_pci_device_t *); | 1248 | int ide_setup_pci_devices(struct pci_dev *, struct pci_dev *, const struct ide_port_info *); |
1291 | 1249 | ||
1292 | void ide_map_sg(ide_drive_t *, struct request *); | 1250 | void ide_map_sg(ide_drive_t *, struct request *); |
1293 | void ide_init_sg_cmd(ide_drive_t *, struct request *); | 1251 | void ide_init_sg_cmd(ide_drive_t *, struct request *); |
@@ -1370,8 +1328,7 @@ void ide_unregister_region(struct gendisk *); | |||
1370 | 1328 | ||
1371 | void ide_undecoded_slave(ide_hwif_t *); | 1329 | void ide_undecoded_slave(ide_hwif_t *); |
1372 | 1330 | ||
1373 | int probe_hwif_init_with_fixup(ide_hwif_t *, void (*)(ide_hwif_t *)); | 1331 | int ide_device_add(u8 idx[4]); |
1374 | extern int probe_hwif_init(ide_hwif_t *); | ||
1375 | 1332 | ||
1376 | static inline void *ide_get_hwifdata (ide_hwif_t * hwif) | 1333 | static inline void *ide_get_hwifdata (ide_hwif_t * hwif) |
1377 | { | 1334 | { |