|
@@ -422,17 +422,9 @@ static u8 __devinit via82cxxx_cable_detect(ide_hwif_t *hwif)
|
|
|
|
|
|
static void __devinit init_hwif_via82cxxx(ide_hwif_t *hwif)
|
|
|
{
|
|
|
- struct via82cxxx_dev *vdev = pci_get_drvdata(hwif->pci_dev);
|
|
|
- int i;
|
|
|
-
|
|
|
hwif->set_pio_mode = &via_set_pio_mode;
|
|
|
hwif->set_dma_mode = &via_set_drive;
|
|
|
|
|
|
- for (i = 0; i < 2; i++) {
|
|
|
- hwif->drives[i].io_32bit = 1;
|
|
|
- hwif->drives[i].unmask = (vdev->via_config->flags & VIA_NO_UNMASK) ? 0 : 1;
|
|
|
- }
|
|
|
-
|
|
|
if (!hwif->dma_base)
|
|
|
return;
|
|
|
|
|
@@ -440,17 +432,20 @@ static void __devinit init_hwif_via82cxxx(ide_hwif_t *hwif)
|
|
|
hwif->cbl = via82cxxx_cable_detect(hwif);
|
|
|
}
|
|
|
|
|
|
+#define IDE_HFLAGS_VIA \
|
|
|
+ (IDE_HFLAG_PIO_NO_BLACKLIST | \
|
|
|
+ IDE_HFLAG_PIO_NO_DOWNGRADE | \
|
|
|
+ IDE_HFLAG_POST_SET_MODE | \
|
|
|
+ IDE_HFLAG_IO_32BIT | \
|
|
|
+ IDE_HFLAG_BOOTABLE)
|
|
|
+
|
|
|
static ide_pci_device_t via82cxxx_chipsets[] __devinitdata = {
|
|
|
{ /* 0 */
|
|
|
.name = "VP_IDE",
|
|
|
.init_chipset = init_chipset_via82cxxx,
|
|
|
.init_hwif = init_hwif_via82cxxx,
|
|
|
.enablebits = {{0x40,0x02,0x02}, {0x40,0x01,0x01}},
|
|
|
- .host_flags = IDE_HFLAG_PIO_NO_BLACKLIST |
|
|
|
- IDE_HFLAG_PIO_NO_DOWNGRADE |
|
|
|
- IDE_HFLAG_POST_SET_MODE |
|
|
|
- IDE_HFLAG_NO_AUTODMA |
|
|
|
- IDE_HFLAG_BOOTABLE,
|
|
|
+ .host_flags = IDE_HFLAGS_VIA | IDE_HFLAG_NO_AUTODMA,
|
|
|
.pio_mask = ATA_PIO5,
|
|
|
.swdma_mask = ATA_SWDMA2,
|
|
|
.mwdma_mask = ATA_MWDMA2,
|
|
@@ -459,10 +454,7 @@ static ide_pci_device_t via82cxxx_chipsets[] __devinitdata = {
|
|
|
.init_chipset = init_chipset_via82cxxx,
|
|
|
.init_hwif = init_hwif_via82cxxx,
|
|
|
.enablebits = {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
|
|
|
- .host_flags = IDE_HFLAG_PIO_NO_BLACKLIST |
|
|
|
- IDE_HFLAG_PIO_NO_DOWNGRADE |
|
|
|
- IDE_HFLAG_POST_SET_MODE |
|
|
|
- IDE_HFLAG_BOOTABLE,
|
|
|
+ .host_flags = IDE_HFLAGS_VIA,
|
|
|
.pio_mask = ATA_PIO5,
|
|
|
.swdma_mask = ATA_SWDMA2,
|
|
|
.mwdma_mask = ATA_MWDMA2,
|
|
@@ -485,6 +477,11 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
|
+ if (via_config->flags & VIA_NO_UNMASK)
|
|
|
+ d->host_flags &= ~IDE_HFLAG_UNMASK_IRQS;
|
|
|
+ else
|
|
|
+ d->host_flags |= IDE_HFLAG_UNMASK_IRQS;
|
|
|
+
|
|
|
#ifdef CONFIG_PPC_CHRP
|
|
|
if (machine_is(chrp) && _chrp_type == _CHRP_Pegasos)
|
|
|
d->host_flags |= IDE_HFLAG_FORCE_LEGACY_IRQS;
|