/* Note: This relies on the fact we never fail from UDMA to MWDMA2 but instead drop to PIO.  */
static u8 cs5530_udma_filter(ide_drive_t *drive)
/* Note: This relies on the fact we never fail from UDMA to MWDMA2 but instead drop to PIO.  */
static u8 cs5530_udma_filter(ide_drive_t *drive)
{
	ide_hwif_t *hwif = drive->hwif;
	ide_drive_t *mate = ide_get_pair_dev(drive);
	u16 *mateid;
	u8 mask = hwif->ultra_mask;
	if (mate == NULL)
		goto out;
	mateid = mate->id;
	if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) {
		if ((mateid[ATA_ID_FIELD_VALID] & 4) &&
		    (mateid[ATA_ID_UDMA_MODES] & 7))
			goto out;
		if (mateid[ATA_ID_MWDMA_MODES] & 7)
			mask = 0;
	}
out:
	return mask;
}