IOATAPICDDriveNub.cpp [plain text]
#include <IOKit/IOLib.h>
#include <IOKit/storage/ata/IOATAPICDDriveNub.h>
#include <IOKit/storage/ata/IOATAPICDDrive.h>
#define super IOCDBlockStorageDevice
OSDefineMetaClassAndStructors( IOATAPICDDriveNub, IOCDBlockStorageDevice )
bool IOATAPICDDriveNub::attach(IOService * provider)
{
if (!super::attach(provider))
return false;
_provider = OSDynamicCast(IOATAPICDDrive, provider);
if (_provider == 0) {
IOLog("IOATAPICDDriveNub: attach; wrong provider type!\n");
return false;
}
return true;
}
void IOATAPICDDriveNub::detach(IOService * provider)
{
if (_provider == provider)
_provider = 0;
super::detach(provider);
}
IOReturn IOATAPICDDriveNub::doAsyncReadCD(IOMemoryDescriptor * buffer,
UInt32 block,
UInt32 nblks,
CDSectorArea sectorArea,
CDSectorType sectorType,
IOStorageCompletion completion)
{
return _provider->doAsyncReadCD(buffer,
block,
nblks,
sectorArea,
sectorType,
completion);
}
IOReturn IOATAPICDDriveNub::doAsyncReadWrite(IOMemoryDescriptor * buffer,
UInt32 block,
UInt32 nblks,
IOStorageCompletion completion)
{
if (buffer->getDirection() == kIODirectionOut)
return kIOReturnNotWritable;
return _provider->doAsyncReadWrite(buffer, block, nblks, completion);
}
IOReturn
IOATAPICDDriveNub::doSyncReadWrite(IOMemoryDescriptor * buffer,
UInt32 block,
UInt32 nblks)
{
if (buffer->getDirection() == kIODirectionOut)
return kIOReturnNotWritable;
return _provider->doSyncReadWrite(buffer, block, nblks);
}
IOReturn
IOATAPICDDriveNub::doFormatMedia(UInt64 byteCapacity)
{
return kIOReturnUnsupported;
}
UInt32
IOATAPICDDriveNub::doGetFormatCapacities(UInt64 * capacities,
UInt32 capacitiesMaxCount) const
{
return _provider->doGetFormatCapacities(capacities, capacitiesMaxCount);
}
IOReturn IOATAPICDDriveNub::doEjectMedia()
{
return _provider->doEjectMedia();
}
IOReturn IOATAPICDDriveNub::doLockUnlockMedia(bool doLock)
{
return _provider->doLockUnlockMedia(doLock);
}
UInt32 IOATAPICDDriveNub::getMediaType()
{
return kCDMediaTypeROM;
}
char * IOATAPICDDriveNub::getVendorString()
{
return _provider->getVendorString();
}
char * IOATAPICDDriveNub::getProductString()
{
return _provider->getProductString();
}
char * IOATAPICDDriveNub::getRevisionString()
{
return _provider->getRevisionString();
}
char * IOATAPICDDriveNub::getAdditionalDeviceInfoString()
{
return _provider->getAdditionalDeviceInfoString();
}
IOReturn IOATAPICDDriveNub::reportBlockSize(UInt64 * blockSize)
{
return _provider->reportBlockSize(blockSize);
}
IOReturn IOATAPICDDriveNub::reportEjectability(bool * isEjectable)
{
return _provider->reportEjectability(isEjectable);
}
IOReturn IOATAPICDDriveNub::reportLockability(bool * isLockable)
{
return _provider->reportLockability(isLockable);
}
IOReturn IOATAPICDDriveNub::reportMediaState(bool * mediaPresent,
bool * changed)
{
return _provider->reportMediaState(mediaPresent, changed);
}
IOReturn IOATAPICDDriveNub::reportPollRequirements(bool * pollIsRequired,
bool * pollIsExpensive)
{
return _provider->reportPollRequirements(pollIsRequired, pollIsExpensive);
}
IOReturn IOATAPICDDriveNub::reportMaxReadTransfer(UInt64 blockSize,
UInt64 * max)
{
return _provider->reportMaxReadTransfer(blockSize, max);
}
IOReturn IOATAPICDDriveNub::reportMaxValidBlock(UInt64 * maxBlock)
{
return _provider->reportMaxValidBlock(maxBlock);
}
IOReturn IOATAPICDDriveNub::reportRemovability(bool * isRemovable)
{
return _provider->reportRemovability(isRemovable);
}
IOReturn IOATAPICDDriveNub::readISRC(UInt8 track, CDISRC isrc)
{
return _provider->readISRC(track, isrc);
}
IOReturn IOATAPICDDriveNub::readMCN(CDMCN mcn)
{
return _provider->readMCN(mcn);
}
IOReturn IOATAPICDDriveNub::readTOC(IOMemoryDescriptor * buffer)
{
return _provider->readTOC(buffer);
}
IOReturn IOATAPICDDriveNub::audioPause(bool pause)
{
return _provider->audioPause(pause);
}
IOReturn IOATAPICDDriveNub::audioPlay(CDMSF timeStart, CDMSF timeStop)
{
return _provider->audioPlay(timeStart, timeStop);
}
IOReturn IOATAPICDDriveNub::audioScan(CDMSF timeStart, bool reverse)
{
return _provider->audioScan(timeStart, reverse);
}
IOReturn IOATAPICDDriveNub::audioStop()
{
return _provider->audioStop();
}
IOReturn IOATAPICDDriveNub::getAudioStatus(CDAudioStatus * status)
{
return _provider->getAudioStatus(status);
}
IOReturn IOATAPICDDriveNub::getAudioVolume(UInt8 * leftVolume,
UInt8 * rightVolume)
{
return _provider->getAudioVolume(leftVolume, rightVolume);
}
IOReturn IOATAPICDDriveNub::setAudioVolume(UInt8 leftVolume, UInt8 rightVolume)
{
return _provider->setAudioVolume(leftVolume, rightVolume);
}
IOReturn IOATAPICDDriveNub::doSynchronizeCache()
{
return kIOReturnUnsupported;
}
IOReturn IOATAPICDDriveNub::reportMaxWriteTransfer(UInt64 blockSize,
UInt64 * max)
{
return _provider->reportMaxWriteTransfer(blockSize, max);
}
IOReturn IOATAPICDDriveNub::reportWriteProtection(bool * isWriteProtected)
{
return _provider->reportWriteProtection(isWriteProtected);
}