diff options
Diffstat (limited to 'drivers/ata/pata_it821x.c')
-rw-r--r-- | drivers/ata/pata_it821x.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c index b3456d7a592c..dab4e7cf8cda 100644 --- a/drivers/ata/pata_it821x.c +++ b/drivers/ata/pata_it821x.c | |||
@@ -2,6 +2,7 @@ | |||
2 | * pata_it821x.c - IT821x PATA for new ATA layer | 2 | * pata_it821x.c - IT821x PATA for new ATA layer |
3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
4 | * Alan Cox <alan@redhat.com> | 4 | * Alan Cox <alan@redhat.com> |
5 | * (C) 2007 Bartlomiej Zolnierkiewicz | ||
5 | * | 6 | * |
6 | * based upon | 7 | * based upon |
7 | * | 8 | * |
@@ -79,7 +80,7 @@ | |||
79 | 80 | ||
80 | 81 | ||
81 | #define DRV_NAME "pata_it821x" | 82 | #define DRV_NAME "pata_it821x" |
82 | #define DRV_VERSION "0.3.6" | 83 | #define DRV_VERSION "0.3.7" |
83 | 84 | ||
84 | struct it821x_dev | 85 | struct it821x_dev |
85 | { | 86 | { |
@@ -460,14 +461,8 @@ static unsigned int it821x_passthru_qc_issue_prot(struct ata_queued_cmd *qc) | |||
460 | 461 | ||
461 | static int it821x_smart_set_mode(struct ata_port *ap, struct ata_device **unused) | 462 | static int it821x_smart_set_mode(struct ata_port *ap, struct ata_device **unused) |
462 | { | 463 | { |
463 | int dma_enabled = 0; | ||
464 | int i; | 464 | int i; |
465 | 465 | ||
466 | /* Bits 5 and 6 indicate if DMA is active on master/slave */ | ||
467 | /* It is possible that BMDMA isn't allocated */ | ||
468 | if (ap->ioaddr.bmdma_addr) | ||
469 | dma_enabled = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); | ||
470 | |||
471 | for (i = 0; i < ATA_MAX_DEVICES; i++) { | 466 | for (i = 0; i < ATA_MAX_DEVICES; i++) { |
472 | struct ata_device *dev = &ap->device[i]; | 467 | struct ata_device *dev = &ap->device[i]; |
473 | if (ata_dev_enabled(dev)) { | 468 | if (ata_dev_enabled(dev)) { |
@@ -476,7 +471,7 @@ static int it821x_smart_set_mode(struct ata_port *ap, struct ata_device **unused | |||
476 | dev->dma_mode = XFER_MW_DMA_0; | 471 | dev->dma_mode = XFER_MW_DMA_0; |
477 | /* We do need the right mode information for DMA or PIO | 472 | /* We do need the right mode information for DMA or PIO |
478 | and this comes from the current configuration flags */ | 473 | and this comes from the current configuration flags */ |
479 | if (dma_enabled & (1 << (5 + i))) { | 474 | if (ata_id_has_dma(dev->id)) { |
480 | ata_dev_printk(dev, KERN_INFO, "configured for DMA\n"); | 475 | ata_dev_printk(dev, KERN_INFO, "configured for DMA\n"); |
481 | dev->xfer_mode = XFER_MW_DMA_0; | 476 | dev->xfer_mode = XFER_MW_DMA_0; |
482 | dev->xfer_shift = ATA_SHIFT_MWDMA; | 477 | dev->xfer_shift = ATA_SHIFT_MWDMA; |
@@ -799,7 +794,7 @@ MODULE_VERSION(DRV_VERSION); | |||
799 | 794 | ||
800 | 795 | ||
801 | module_param_named(noraid, it8212_noraid, int, S_IRUGO); | 796 | module_param_named(noraid, it8212_noraid, int, S_IRUGO); |
802 | MODULE_PARM_DESC(it8212_noraid, "Force card into bypass mode"); | 797 | MODULE_PARM_DESC(noraid, "Force card into bypass mode"); |
803 | 798 | ||
804 | module_init(it821x_init); | 799 | module_init(it821x_init); |
805 | module_exit(it821x_exit); | 800 | module_exit(it821x_exit); |