diff options
Diffstat (limited to 'include/linux/ide.h')
-rw-r--r-- | include/linux/ide.h | 58 |
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 *); | |||
1211 | extern void default_hwif_mmiops(ide_hwif_t *); | 1207 | extern void default_hwif_mmiops(ide_hwif_t *); |
1212 | extern void default_hwif_transport(ide_hwif_t *); | 1208 | extern 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 | |||
1227 | typedef struct ide_pci_enablebit_s { | 1210 | typedef 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 | |||
1263 | typedef struct ide_pci_device_s { | 1272 | typedef 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 | ||
1464 | static 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 */ |