diff options
author | mav <mav@FreeBSD.org> | 2009-02-21 16:39:26 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2009-02-21 16:39:26 +0000 |
commit | d6b23ce1539543a5cc3dfe32ca002797fb016713 (patch) | |
tree | 96e03f929f54c478e1d8e53e2125aa63cd79453c /sys/dev/ata/atapi-cd.c | |
parent | bfa5bd4228fa05bfb9a1af423398fd7eeccca89e (diff) | |
download | FreeBSD-src-d6b23ce1539543a5cc3dfe32ca002797fb016713.zip FreeBSD-src-d6b23ce1539543a5cc3dfe32ca002797fb016713.tar.gz |
Teach device drivers' ata_reinit() methods, that there can be more then two
devices per channel.
Diffstat (limited to 'sys/dev/ata/atapi-cd.c')
-rw-r--r-- | sys/dev/ata/atapi-cd.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/dev/ata/atapi-cd.c b/sys/dev/ata/atapi-cd.c index ba65a6b..7fd80c4 100644 --- a/sys/dev/ata/atapi-cd.c +++ b/sys/dev/ata/atapi-cd.c @@ -159,10 +159,10 @@ acd_reinit(device_t dev) struct ata_channel *ch = device_get_softc(device_get_parent(dev)); struct ata_device *atadev = device_get_softc(dev); - if (((atadev->unit == ATA_MASTER) && !(ch->devices & ATA_ATAPI_MASTER)) || - ((atadev->unit == ATA_SLAVE) && !(ch->devices & ATA_ATAPI_SLAVE))) { - return 1; - } + /* if detach pending, return error */ + if (!(ch->devices & (ATA_ATAPI_MASTER << atadev->unit))) + return 1; + ATA_SETMODE(device_get_parent(dev), dev); return 0; } |