aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ide.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/ide.h')
-rw-r--r--include/linux/ide.h58
1 files changed, 36 insertions, 22 deletions
diff --git a/include/linux/ide.h b/include/linux/ide.h
index e39ee2fa2607..19db0a4ae447 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -685,7 +685,6 @@ typedef struct hwif_s {
685 685
686 u8 pio_mask; 686 u8 pio_mask;
687 687
688 u8 atapi_dma; /* host supports atapi_dma */
689 u8 ultra_mask; 688 u8 ultra_mask;
690 u8 mwdma_mask; 689 u8 mwdma_mask;
691 u8 swdma_mask; 690 u8 swdma_mask;
@@ -797,12 +796,9 @@ typedef struct hwif_s {
797 unsigned serialized : 1; /* serialized all channel operation */ 796 unsigned serialized : 1; /* serialized all channel operation */
798 unsigned sharing_irq: 1; /* 1 = sharing irq with another hwif */ 797 unsigned sharing_irq: 1; /* 1 = sharing irq with another hwif */
799 unsigned reset : 1; /* reset after probe */ 798 unsigned reset : 1; /* reset after probe */
800 unsigned no_lba48 : 1; /* 1 = cannot do LBA48 */
801 unsigned no_lba48_dma : 1; /* 1 = cannot do LBA48 DMA */
802 unsigned auto_poll : 1; /* supports nop auto-poll */ 799 unsigned auto_poll : 1; /* supports nop auto-poll */
803 unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */ 800 unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */
804 unsigned no_io_32bit : 1; /* 1 = can not do 32-bit IO ops */ 801 unsigned no_io_32bit : 1; /* 1 = can not do 32-bit IO ops */
805 unsigned err_stops_fifo : 1; /* 1=data FIFO is cleared by an error */
806 unsigned mmio : 1; /* host uses MMIO */ 802 unsigned mmio : 1; /* host uses MMIO */
807 803
808 struct device gendev; 804 struct device gendev;
@@ -1211,19 +1207,6 @@ extern void default_hwif_iops(ide_hwif_t *);
1211extern void default_hwif_mmiops(ide_hwif_t *); 1207extern void default_hwif_mmiops(ide_hwif_t *);
1212extern void default_hwif_transport(ide_hwif_t *); 1208extern void default_hwif_transport(ide_hwif_t *);
1213 1209
1214#define ON_BOARD 1
1215#define NEVER_BOARD 0
1216
1217#ifdef CONFIG_BLK_DEV_OFFBOARD
1218# define OFF_BOARD ON_BOARD
1219#else /* CONFIG_BLK_DEV_OFFBOARD */
1220# define OFF_BOARD NEVER_BOARD
1221#endif /* CONFIG_BLK_DEV_OFFBOARD */
1222
1223#define NODMA 0
1224#define NOAUTODMA 1
1225#define AUTODMA 2
1226
1227typedef struct ide_pci_enablebit_s { 1210typedef struct ide_pci_enablebit_s {
1228 u8 reg; /* byte pci reg holding the enable-bit */ 1211 u8 reg; /* byte pci reg holding the enable-bit */
1229 u8 mask; /* mask to isolate the enable-bit */ 1212 u8 mask; /* mask to isolate the enable-bit */
@@ -1258,24 +1241,48 @@ enum {
1258 IDE_HFLAG_TRUST_BIOS_FOR_DMA = (1 << 10), 1241 IDE_HFLAG_TRUST_BIOS_FOR_DMA = (1 << 10),
1259 /* host uses VDMA */ 1242 /* host uses VDMA */
1260 IDE_HFLAG_VDMA = (1 << 11), 1243 IDE_HFLAG_VDMA = (1 << 11),
1244 /* ATAPI DMA is unsupported */
1245 IDE_HFLAG_NO_ATAPI_DMA = (1 << 12),
1246 /* set if host is a "bootable" controller */
1247 IDE_HFLAG_BOOTABLE = (1 << 13),
1248 /* host doesn't support DMA */
1249 IDE_HFLAG_NO_DMA = (1 << 14),
1250 /* check if host is PCI IDE device before allowing DMA */
1251 IDE_HFLAG_NO_AUTODMA = (1 << 15),
1252 /* host is CS5510/CS5520 */
1253 IDE_HFLAG_CS5520 = (1 << 16),
1254 /* no LBA48 */
1255 IDE_HFLAG_NO_LBA48 = (1 << 17),
1256 /* no LBA48 DMA */
1257 IDE_HFLAG_NO_LBA48_DMA = (1 << 18),
1258 /* data FIFO is cleared by an error */
1259 IDE_HFLAG_ERROR_STOPS_FIFO = (1 << 19),
1260 /* serialize ports */
1261 IDE_HFLAG_SERIALIZE = (1 << 20),
1262 /* use legacy IRQs */
1263 IDE_HFLAG_LEGACY_IRQS = (1 << 21),
1261}; 1264};
1262 1265
1266#ifdef CONFIG_BLK_DEV_OFFBOARD
1267# define IDE_HFLAG_OFF_BOARD IDE_HFLAG_BOOTABLE
1268#else
1269# define IDE_HFLAG_OFF_BOARD 0
1270#endif
1271
1263typedef struct ide_pci_device_s { 1272typedef struct ide_pci_device_s {
1264 char *name; 1273 char *name;
1265 int (*init_setup)(struct pci_dev *, struct ide_pci_device_s *);
1266 void (*init_setup_dma)(struct pci_dev *, struct ide_pci_device_s *, ide_hwif_t *);
1267 unsigned int (*init_chipset)(struct pci_dev *, const char *); 1274 unsigned int (*init_chipset)(struct pci_dev *, const char *);
1268 void (*init_iops)(ide_hwif_t *); 1275 void (*init_iops)(ide_hwif_t *);
1269 void (*init_hwif)(ide_hwif_t *); 1276 void (*init_hwif)(ide_hwif_t *);
1270 void (*init_dma)(ide_hwif_t *, unsigned long); 1277 void (*init_dma)(ide_hwif_t *, unsigned long);
1271 void (*fixup)(ide_hwif_t *); 1278 void (*fixup)(ide_hwif_t *);
1272 u8 autodma;
1273 ide_pci_enablebit_t enablebits[2]; 1279 ide_pci_enablebit_t enablebits[2];
1274 u8 bootable;
1275 unsigned int extra; 1280 unsigned int extra;
1276 struct ide_pci_device_s *next; 1281 struct ide_pci_device_s *next;
1277 u16 host_flags; 1282 u32 host_flags;
1278 u8 pio_mask; 1283 u8 pio_mask;
1284 u8 swdma_mask;
1285 u8 mwdma_mask;
1279 u8 udma_mask; 1286 u8 udma_mask;
1280} ide_pci_device_t; 1287} ide_pci_device_t;
1281 1288
@@ -1454,4 +1461,11 @@ static inline int hwif_to_node(ide_hwif_t *hwif)
1454 return dev ? pcibus_to_node(dev->bus) : -1; 1461 return dev ? pcibus_to_node(dev->bus) : -1;
1455} 1462}
1456 1463
1464static inline ide_drive_t *ide_get_paired_drive(ide_drive_t *drive)
1465{
1466 ide_hwif_t *hwif = HWIF(drive);
1467
1468 return &hwif->drives[(drive->dn ^ 1) & 1];
1469}
1470
1457#endif /* _IDE_H */ 1471#endif /* _IDE_H */