aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_it821x.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ata/pata_it821x.c')
-rw-r--r--drivers/ata/pata_it821x.c13
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
84struct it821x_dev 85struct it821x_dev
85{ 86{
@@ -460,14 +461,8 @@ static unsigned int it821x_passthru_qc_issue_prot(struct ata_queued_cmd *qc)
460 461
461static int it821x_smart_set_mode(struct ata_port *ap, struct ata_device **unused) 462static 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
801module_param_named(noraid, it8212_noraid, int, S_IRUGO); 796module_param_named(noraid, it8212_noraid, int, S_IRUGO);
802MODULE_PARM_DESC(it8212_noraid, "Force card into bypass mode"); 797MODULE_PARM_DESC(noraid, "Force card into bypass mode");
803 798
804module_init(it821x_init); 799module_init(it821x_init);
805module_exit(it821x_exit); 800module_exit(it821x_exit);