diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2007-10-15 14:18:27 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-10-25 02:10:52 -0400 |
commit | 3acaf94bb0a69cca75a524a4ba8c30a9eae97dc8 (patch) | |
tree | bc4a04afbd65cb3fea58ac8fe97abc95b8cf1b6a /drivers/ata/libata-core.c | |
parent | edc93052844c2032b2ec5910ace516da9078714d (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.c | 10 |
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 }, |