Skip to content

Commit

Permalink
pata_via: clear UDMA transfer mode bit for PIO and MWDMA
Browse files Browse the repository at this point in the history
Fix register naming while at it.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
  • Loading branch information
Bartlomiej Zolnierkiewicz authored and Jeff Garzik committed Dec 3, 2009
1 parent 750c713 commit c4d8a20
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions drivers/ata/pata_via.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,14 +303,21 @@ static void via_do_set_mode(struct ata_port *ap, struct ata_device *adev, int mo
}

/* Set UDMA unless device is not UDMA capable */
if (udma_type && t.udma) {
u8 cable80_status;
if (udma_type) {
u8 udma_etc;

/* Get 80-wire cable detection bit */
pci_read_config_byte(pdev, 0x50 + offset, &cable80_status);
cable80_status &= 0x10;
pci_read_config_byte(pdev, 0x50 + offset, &udma_etc);

pci_write_config_byte(pdev, 0x50 + offset, ut | cable80_status);
/* clear transfer mode bit */
udma_etc &= ~0x20;

if (t.udma) {
/* preserve 80-wire cable detection bit */
udma_etc &= 0x10;
udma_etc |= ut;
}

pci_write_config_byte(pdev, 0x50 + offset, udma_etc);
}
}

Expand Down

0 comments on commit c4d8a20

Please sign in to comment.