Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 139440
b: refs/heads/master
c: 8d64fcd
h: refs/heads/master
v: v3
  • Loading branch information
Sergei Shtylyov authored and Bartlomiej Zolnierkiewicz committed Mar 31, 2009
1 parent 8a90afc commit c5797af
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 27 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 985232e388714d4a9e94b4d96ee69b6ff8c9dc31
refs/heads/master: 8d64fcd9357798ad0d61f8877de13d5e1b1ab510
3 changes: 1 addition & 2 deletions trunk/drivers/ide/cs5530.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,7 @@ static u8 cs5530_udma_filter(ide_drive_t *drive)
if ((mateid[ATA_ID_FIELD_VALID] & 4) &&
(mateid[ATA_ID_UDMA_MODES] & 7))
goto out;
if ((mateid[ATA_ID_FIELD_VALID] & 2) &&
(mateid[ATA_ID_MWDMA_MODES] & 7))
if (mateid[ATA_ID_MWDMA_MODES] & 7)
mask = 0;
}
out:
Expand Down
7 changes: 3 additions & 4 deletions trunk/drivers/ide/ide-dma-sff.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,9 @@ int config_drive_for_dma(ide_drive_t *drive)
* Enable DMA on any drive that has mode2 DMA
* (multi or single) enabled
*/
if (id[ATA_ID_FIELD_VALID] & 2) /* regular DMA */
if ((id[ATA_ID_MWDMA_MODES] & 0x404) == 0x404 ||
(id[ATA_ID_SWDMA_MODES] & 0x404) == 0x404)
return 1;
if ((id[ATA_ID_MWDMA_MODES] & 0x404) == 0x404 ||
(id[ATA_ID_SWDMA_MODES] & 0x404) == 0x404)
return 1;

/* Consult the list of known "good" drives */
if (ide_dma_good_drive(drive))
Expand Down
32 changes: 14 additions & 18 deletions trunk/drivers/ide/ide-dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -245,12 +245,11 @@ static unsigned int ide_get_mode_mask(ide_drive_t *drive, u8 base, u8 req_mode)
case XFER_UDMA_0:
if ((id[ATA_ID_FIELD_VALID] & 4) == 0)
break;

mask = id[ATA_ID_UDMA_MODES];
if (port_ops && port_ops->udma_filter)
mask = port_ops->udma_filter(drive);
mask &= port_ops->udma_filter(drive);
else
mask = hwif->ultra_mask;
mask &= id[ATA_ID_UDMA_MODES];
mask &= hwif->ultra_mask;

/*
* avoid false cable warning from eighty_ninty_three()
Expand All @@ -261,27 +260,25 @@ static unsigned int ide_get_mode_mask(ide_drive_t *drive, u8 base, u8 req_mode)
}
break;
case XFER_MW_DMA_0:
if ((id[ATA_ID_FIELD_VALID] & 2) == 0)
break;
mask = id[ATA_ID_MWDMA_MODES];
if (port_ops && port_ops->mdma_filter)
mask = port_ops->mdma_filter(drive);
mask &= port_ops->mdma_filter(drive);
else
mask = hwif->mwdma_mask;
mask &= id[ATA_ID_MWDMA_MODES];
mask &= hwif->mwdma_mask;
break;
case XFER_SW_DMA_0:
if (id[ATA_ID_FIELD_VALID] & 2) {
mask = id[ATA_ID_SWDMA_MODES] & hwif->swdma_mask;
} else if (id[ATA_ID_OLD_DMA_MODES] >> 8) {
mask = id[ATA_ID_SWDMA_MODES];
if (!(mask & ATA_SWDMA2) && (id[ATA_ID_OLD_DMA_MODES] >> 8)) {
u8 mode = id[ATA_ID_OLD_DMA_MODES] >> 8;

/*
* if the mode is valid convert it to the mask
* (the maximum allowed mode is XFER_SW_DMA_2)
*/
if (mode <= 2)
mask = ((2 << mode) - 1) & hwif->swdma_mask;
mask = (2 << mode) - 1;
}
mask &= hwif->swdma_mask;
break;
default:
BUG();
Expand Down Expand Up @@ -398,11 +395,10 @@ int ide_id_dma_bug(ide_drive_t *drive)
if ((id[ATA_ID_UDMA_MODES] >> 8) &&
(id[ATA_ID_MWDMA_MODES] >> 8))
goto err_out;
} else if (id[ATA_ID_FIELD_VALID] & 2) {
if ((id[ATA_ID_MWDMA_MODES] >> 8) &&
(id[ATA_ID_SWDMA_MODES] >> 8))
goto err_out;
}
} else if ((id[ATA_ID_MWDMA_MODES] >> 8) &&
(id[ATA_ID_SWDMA_MODES] >> 8))
goto err_out;

return 0;
err_out:
printk(KERN_ERR "%s: bad DMA info in identify block\n", drive->name);
Expand Down
3 changes: 1 addition & 2 deletions trunk/drivers/ide/sc1200.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,7 @@ static u8 sc1200_udma_filter(ide_drive_t *drive)
if ((mateid[ATA_ID_FIELD_VALID] & 4) &&
(mateid[ATA_ID_UDMA_MODES] & 7))
goto out;
if ((mateid[ATA_ID_FIELD_VALID] & 2) &&
(mateid[ATA_ID_MWDMA_MODES] & 7))
if (mateid[ATA_ID_MWDMA_MODES] & 7)
mask = 0;
}
out:
Expand Down

0 comments on commit c5797af

Please sign in to comment.