aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-core.c
diff options
context:
space:
mode:
authorAlan Cox <alan@lxorguk.ukuu.org.uk>2007-10-15 14:18:27 -0400
committerJeff Garzik <jeff@garzik.org>2007-10-25 02:10:52 -0400
commit3acaf94bb0a69cca75a524a4ba8c30a9eae97dc8 (patch)
treebc4a04afbd65cb3fea58ac8fe97abc95b8cf1b6a /drivers/ata/libata-core.c
parentedc93052844c2032b2ec5910ace516da9078714d (diff)
libata-core: Be a bit more relaxed about early DMA zero devices
I guess Windows didn't care about the command so neither did they Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r--drivers/ata/libata-core.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 0ec717b748db..9d10e2feb8b1 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2882,6 +2882,13 @@ static int ata_dev_set_mode(struct ata_device *dev)
2882 dev->pio_mode <= XFER_PIO_2) 2882 dev->pio_mode <= XFER_PIO_2)
2883 err_mask &= ~AC_ERR_DEV; 2883 err_mask &= ~AC_ERR_DEV;
2884 2884
2885 /* Early MWDMA devices do DMA but don't allow DMA mode setting.
2886 Don't fail an MWDMA0 set IFF the device indicates it is in MWDMA0 */
2887 if (dev->xfer_shift == ATA_SHIFT_MWDMA &&
2888 dev->dma_mode == XFER_MW_DMA_0 &&
2889 (dev->id[63] >> 8) & 1)
2890 err_mask &= ~AC_ERR_DEV;
2891
2885 if (err_mask) { 2892 if (err_mask) {
2886 ata_dev_printk(dev, KERN_ERR, "failed to set xfermode " 2893 ata_dev_printk(dev, KERN_ERR, "failed to set xfermode "
2887 "(err_mask=0x%x)\n", err_mask); 2894 "(err_mask=0x%x)\n", err_mask);
@@ -3943,9 +3950,6 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
3943 { "_NEC DV5800A", NULL, ATA_HORKAGE_NODMA }, 3950 { "_NEC DV5800A", NULL, ATA_HORKAGE_NODMA },
3944 { "SAMSUNG CD-ROM SN-124", "N001", ATA_HORKAGE_NODMA }, 3951 { "SAMSUNG CD-ROM SN-124", "N001", ATA_HORKAGE_NODMA },
3945 { "Seagate STT20000A", NULL, ATA_HORKAGE_NODMA }, 3952 { "Seagate STT20000A", NULL, ATA_HORKAGE_NODMA },
3946 { "IOMEGA ZIP 250 ATAPI", NULL, ATA_HORKAGE_NODMA }, /* temporary fix */
3947 { "IOMEGA ZIP 250 ATAPI Floppy",
3948 NULL, ATA_HORKAGE_NODMA },
3949 /* Odd clown on sil3726/4726 PMPs */ 3953 /* Odd clown on sil3726/4726 PMPs */
3950 { "Config Disk", NULL, ATA_HORKAGE_NODMA | 3954 { "Config Disk", NULL, ATA_HORKAGE_NODMA |
3951 ATA_HORKAGE_SKIP_PM }, 3955 ATA_HORKAGE_SKIP_PM },