Unbreak the ata_atapi() usage. Since r200171 the mode setting functions

get a ata_device type device passed instead of a ata_channel one, thus
ata_atapi() has to be adjusted accordingly.

Reviewed by:	mav
MFC after:	3 days
This commit is contained in:
Marius Strobl 2009-12-13 00:13:21 +00:00
parent ec897c886d
commit 0966baf709
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=200459
3 changed files with 6 additions and 7 deletions

View File

@ -1150,12 +1150,11 @@ ata_satarev2str(int rev)
}
int
ata_atapi(device_t dev)
ata_atapi(device_t dev, int target)
{
struct ata_channel *ch = device_get_softc(device_get_parent(dev));
struct ata_device *atadev = device_get_softc(dev);
struct ata_channel *ch = device_get_softc(dev);
return (ch->devices & (ATA_ATAPI_MASTER << atadev->unit));
return (ch->devices & (ATA_ATAPI_MASTER << target));
}
int

View File

@ -622,7 +622,7 @@ void ata_udelay(int interval);
char *ata_unit2str(struct ata_device *atadev);
const char *ata_mode2str(int mode);
const char *ata_satarev2str(int rev);
int ata_atapi(device_t dev);
int ata_atapi(device_t dev, int target);
int ata_pmode(struct ata_params *ap);
int ata_wmode(struct ata_params *ap);
int ata_umode(struct ata_params *ap);

View File

@ -212,12 +212,12 @@ ata_ite_8213_setmode(device_t dev, int target, int mode)
reg40 |= 0x4033;
/* Set PIO/WDMA timings. */
if (target == 0) {
reg40 |= (ata_atapi(dev) ? 0x04 : 0x00);
reg40 |= (ata_atapi(dev, target) ? 0x04 : 0x00);
mask40 = 0x3300;
new40 = timings[ata_mode2idx(piomode)] << 8;
}
else {
reg40 |= (ata_atapi(dev) ? 0x40 : 0x00);
reg40 |= (ata_atapi(dev, target) ? 0x40 : 0x00);
mask44 = 0x0f;
new44 = ((timings[ata_mode2idx(piomode)] & 0x30) >> 2) |
(timings[ata_mode2idx(piomode)] & 0x03);