ide: add IDE_HFLAG_NO_DSC host flag

* Add IDE_HFLAG_NO_DSC host flag for hosts that doesn't support DSC overlap.

* Set it in aec62xx (for ATP850UF only) and hpt34x host drivers.

* Convert ide-tape device driver to check for IDE_HFLAG_NO_DSC flag.
Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 8ac2b42a
...@@ -4532,19 +4532,11 @@ static void idetape_setup (ide_drive_t *drive, idetape_tape_t *tape, int minor) ...@@ -4532,19 +4532,11 @@ static void idetape_setup (ide_drive_t *drive, idetape_tape_t *tape, int minor)
spin_lock_init(&tape->spinlock); spin_lock_init(&tape->spinlock);
drive->dsc_overlap = 1; drive->dsc_overlap = 1;
#ifdef CONFIG_BLK_DEV_IDEPCI if (drive->hwif->host_flags & IDE_HFLAG_NO_DSC) {
if (HWIF(drive)->pci_dev != NULL) { printk(KERN_INFO "ide-tape: %s: disabling DSC overlap\n",
/* tape->name);
* These two ide-pci host adapters appear to need DSC overlap disabled. drive->dsc_overlap = 0;
* This probably needs further analysis.
*/
if ((HWIF(drive)->pci_dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) ||
(HWIF(drive)->pci_dev->device == PCI_DEVICE_ID_TTI_HPT343)) {
printk(KERN_INFO "ide-tape: %s: disabling DSC overlap\n", tape->name);
drive->dsc_overlap = 0;
}
} }
#endif /* CONFIG_BLK_DEV_IDEPCI */
/* Seagate Travan drives do not support DSC overlap. */ /* Seagate Travan drives do not support DSC overlap. */
if (strstr(drive->id->model, "Seagate STT3401")) if (strstr(drive->id->model, "Seagate STT3401"))
drive->dsc_overlap = 0; drive->dsc_overlap = 0;
......
...@@ -202,6 +202,7 @@ static const struct ide_port_info aec62xx_chipsets[] __devinitdata = { ...@@ -202,6 +202,7 @@ static const struct ide_port_info aec62xx_chipsets[] __devinitdata = {
.enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}},
.host_flags = IDE_HFLAG_SERIALIZE | .host_flags = IDE_HFLAG_SERIALIZE |
IDE_HFLAG_NO_ATAPI_DMA | IDE_HFLAG_NO_ATAPI_DMA |
IDE_HFLAG_NO_DSC |
IDE_HFLAG_ABUSE_SET_DMA_MODE | IDE_HFLAG_ABUSE_SET_DMA_MODE |
IDE_HFLAG_OFF_BOARD, IDE_HFLAG_OFF_BOARD,
.pio_mask = ATA_PIO4, .pio_mask = ATA_PIO4,
......
...@@ -131,6 +131,7 @@ static void __devinit init_hwif_hpt34x(ide_hwif_t *hwif) ...@@ -131,6 +131,7 @@ static void __devinit init_hwif_hpt34x(ide_hwif_t *hwif)
#define IDE_HFLAGS_HPT34X \ #define IDE_HFLAGS_HPT34X \
(IDE_HFLAG_NO_ATAPI_DMA | \ (IDE_HFLAG_NO_ATAPI_DMA | \
IDE_HFLAG_NO_DSC | \
IDE_HFLAG_ABUSE_SET_DMA_MODE | \ IDE_HFLAG_ABUSE_SET_DMA_MODE | \
IDE_HFLAG_NO_AUTODMA) IDE_HFLAG_NO_AUTODMA)
......
...@@ -1095,6 +1095,8 @@ enum { ...@@ -1095,6 +1095,8 @@ enum {
IDE_HFLAG_CY82C693 = (1 << 27), IDE_HFLAG_CY82C693 = (1 << 27),
/* force host out of "simplex" mode */ /* force host out of "simplex" mode */
IDE_HFLAG_CLEAR_SIMPLEX = (1 << 28), IDE_HFLAG_CLEAR_SIMPLEX = (1 << 28),
/* DSC overlap is unsupported */
IDE_HFLAG_NO_DSC = (1 << 29),
}; };
#ifdef CONFIG_BLK_DEV_OFFBOARD #ifdef CONFIG_BLK_DEV_OFFBOARD
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment