ahci: Minor coding style cleanup.
* Renamed some methods to camel case. * Replaced coding error panics with ASSERTs.
This commit is contained in:
@@ -571,13 +571,13 @@ AHCIPort::ScsiInquiry(scsi_ccb* request)
|
||||
}
|
||||
|
||||
sata_request sreq;
|
||||
sreq.set_data(&ataData, sizeof(ataData));
|
||||
sreq.set_ata_cmd(fIsATAPI
|
||||
sreq.SetData(&ataData, sizeof(ataData));
|
||||
sreq.SetATACommand(fIsATAPI
|
||||
? ATA_COMMAND_IDENTIFY_PACKET_DEVICE : ATA_COMMAND_IDENTIFY_DEVICE);
|
||||
ExecuteSataRequest(&sreq);
|
||||
sreq.wait_for_completion();
|
||||
sreq.WaitForCompletion();
|
||||
|
||||
if (sreq.completion_status() & ATA_ERR) {
|
||||
if ((sreq.CompletionStatus() & ATA_ERR) != 0) {
|
||||
TRACE("identify device failed\n");
|
||||
request->subsys_status = SCSI_REQ_CMP_ERR;
|
||||
gSCSI->finished(request, 1);
|
||||
@@ -585,7 +585,7 @@ AHCIPort::ScsiInquiry(scsi_ccb* request)
|
||||
}
|
||||
|
||||
/*
|
||||
uint8* data = (uint8*) &ataData;
|
||||
uint8* data = (uint8*)&ataData;
|
||||
for (int i = 0; i < 512; i += 8) {
|
||||
TRACE(" %02x %02x %02x %02x %02x %02x %02x %02x\n", data[i], data[i+1],
|
||||
data[i+2], data[i+3], data[i+4], data[i+5], data[i+6], data[i+7]);
|
||||
@@ -681,7 +681,7 @@ AHCIPort::ScsiSynchronizeCache(scsi_ccb* request)
|
||||
return;
|
||||
}
|
||||
|
||||
sreq->set_ata_cmd(fUse48BitCommands
|
||||
sreq->SetATACommand(fUse48BitCommands
|
||||
? ATA_COMMAND_FLUSH_CACHE_EXT : ATA_COMMAND_FLUSH_CACHE);
|
||||
ExecuteSataRequest(sreq);
|
||||
}
|
||||
@@ -782,7 +782,7 @@ AHCIPort::ScsiReadWrite(scsi_ccb* request, uint64 lba, size_t sectorCount,
|
||||
}
|
||||
if (lba > MAX_SECTOR_LBA_48)
|
||||
panic("achi: ScsiReadWrite position too large for 48-bit LBA\n");
|
||||
sreq->set_ata48_cmd(
|
||||
sreq->SetATA48Command(
|
||||
isWrite ? ATA_COMMAND_WRITE_DMA_EXT : ATA_COMMAND_READ_DMA_EXT,
|
||||
lba, sectorCount);
|
||||
} else {
|
||||
@@ -792,7 +792,7 @@ AHCIPort::ScsiReadWrite(scsi_ccb* request, uint64 lba, size_t sectorCount,
|
||||
}
|
||||
if (lba > MAX_SECTOR_LBA_28)
|
||||
panic("achi: ScsiReadWrite position too large for normal LBA\n");
|
||||
sreq->set_ata28_cmd(isWrite
|
||||
sreq->SetATA28Command(isWrite
|
||||
? ATA_COMMAND_WRITE_DMA : ATA_COMMAND_READ_DMA, lba, sectorCount);
|
||||
}
|
||||
|
||||
@@ -842,15 +842,15 @@ AHCIPort::ScsiUnmap(scsi_ccb* request, scsi_unmap_parameter_list* unmapBlocks)
|
||||
}
|
||||
|
||||
sata_request sreq;
|
||||
sreq.set_ata48_cmd(ATA_COMMAND_DATA_SET_MANAGEMENT, 0,
|
||||
sreq.SetATA48Command(ATA_COMMAND_DATA_SET_MANAGEMENT, 0,
|
||||
(lbaRangesSize + 511) / 512);
|
||||
sreq.SetFeature(1);
|
||||
sreq.set_data(lbaRanges, lbaRangesSize);
|
||||
sreq.SetData(lbaRanges, lbaRangesSize);
|
||||
|
||||
ExecuteSataRequest(&sreq);
|
||||
sreq.wait_for_completion();
|
||||
sreq.WaitForCompletion();
|
||||
|
||||
if ((sreq.completion_status() & ATA_ERR) != 0) {
|
||||
if ((sreq.CompletionStatus() & ATA_ERR) != 0) {
|
||||
TRACE("trim failed (%" B_PRIu32 " ranges)!", lbaRangeCount);
|
||||
request->subsys_status = SCSI_REQ_CMP_ERR;
|
||||
} else
|
||||
@@ -871,13 +871,13 @@ AHCIPort::ExecuteSataRequest(sata_request* request, bool isWrite)
|
||||
|
||||
int prdEntrys;
|
||||
|
||||
if (request->ccb() && request->ccb()->data_length) {
|
||||
if (request->CCB() && request->CCB()->data_length) {
|
||||
FillPrdTable(fPRDTable, &prdEntrys, PRD_TABLE_ENTRY_COUNT,
|
||||
request->ccb()->sg_list, request->ccb()->sg_count,
|
||||
request->ccb()->data_length);
|
||||
} else if (request->data() && request->size()) {
|
||||
request->CCB()->sg_list, request->CCB()->sg_count,
|
||||
request->CCB()->data_length);
|
||||
} else if (request->Data() && request->Size()) {
|
||||
FillPrdTable(fPRDTable, &prdEntrys, PRD_TABLE_ENTRY_COUNT,
|
||||
request->data(), request->size());
|
||||
request->Data(), request->Size());
|
||||
} else
|
||||
prdEntrys = 0;
|
||||
|
||||
@@ -885,14 +885,14 @@ AHCIPort::ExecuteSataRequest(sata_request* request, bool isWrite)
|
||||
|
||||
fCommandList->prdtl_flags_cfl = 0;
|
||||
fCommandList->cfl = 5; // 20 bytes, length in DWORDS
|
||||
memcpy((char*)fCommandTable->cfis, request->fis(), 20);
|
||||
memcpy((char*)fCommandTable->cfis, request->FIS(), 20);
|
||||
|
||||
fTestUnitReadyActive = request->is_test_unit_ready();
|
||||
if (request->is_atapi()) {
|
||||
fTestUnitReadyActive = request->IsTestUnitReady();
|
||||
if (request->IsATAPI()) {
|
||||
// ATAPI PACKET is a 12 or 16 byte SCSI command
|
||||
memset((char*)fCommandTable->acmd, 0, 32);
|
||||
memcpy((char*)fCommandTable->acmd, request->ccb()->cdb,
|
||||
request->ccb()->cdb_length);
|
||||
memcpy((char*)fCommandTable->acmd, request->CCB()->cdb,
|
||||
request->CCB()->cdb_length);
|
||||
fCommandList->a = 1;
|
||||
}
|
||||
|
||||
@@ -905,7 +905,7 @@ AHCIPort::ExecuteSataRequest(sata_request* request, bool isWrite)
|
||||
TRACE("ExecuteAtaRequest port %d: device is busy\n", fIndex);
|
||||
ResetPort();
|
||||
FinishTransfer();
|
||||
request->abort();
|
||||
request->Abort();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -949,11 +949,11 @@ AHCIPort::ExecuteSataRequest(sata_request* request, bool isWrite)
|
||||
|
||||
if (status == B_TIMED_OUT) {
|
||||
TRACE("ExecuteAtaRequest port %d: device timeout\n", fIndex);
|
||||
request->abort();
|
||||
request->Abort();
|
||||
return;
|
||||
}
|
||||
|
||||
request->finish(tfd, bytesTransfered);
|
||||
request->Finish(tfd, bytesTransfered);
|
||||
}
|
||||
|
||||
|
||||
@@ -989,7 +989,7 @@ AHCIPort::ScsiExecuteRequest(scsi_ccb* request)
|
||||
return;
|
||||
}
|
||||
|
||||
sreq->set_atapi_cmd(request->data_length);
|
||||
sreq->SetATAPICommand(request->data_length);
|
||||
// uint8* data = (uint8*) sreq->ccb()->cdb;
|
||||
// for (int i = 0; i < 16; i += 8) {
|
||||
// TRACE(" %02x %02x %02x %02x %02x %02x %02x %02x\n", data[i], data[i+1], data[i+2], data[i+3], data[i+4], data[i+5], data[i+6], data[i+7]);
|
||||
|
||||
@@ -25,7 +25,7 @@ sata_request::sata_request()
|
||||
}
|
||||
|
||||
|
||||
sata_request::sata_request(scsi_ccb *ccb)
|
||||
sata_request::sata_request(scsi_ccb* ccb)
|
||||
:
|
||||
fCcb(ccb),
|
||||
fIsATAPI(false),
|
||||
@@ -45,16 +45,16 @@ sata_request::~sata_request()
|
||||
|
||||
|
||||
void
|
||||
sata_request::set_data(void *data, size_t dataSize)
|
||||
sata_request::SetData(void* data, size_t dataSize)
|
||||
{
|
||||
if (fCcb) panic("wrong usage");
|
||||
fData = data;
|
||||
fDataSize = dataSize;
|
||||
ASSERT(fCcb == NULL);
|
||||
fData = data;
|
||||
fDataSize = dataSize;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
sata_request::set_ata_cmd(uint8 command)
|
||||
sata_request::SetATACommand(uint8 command)
|
||||
{
|
||||
memset(fFis, 0, sizeof(fFis));
|
||||
fFis[0] = FIS_TYPE_REGISTER_HOST_TO_DEVICE;
|
||||
@@ -65,9 +65,9 @@ sata_request::set_ata_cmd(uint8 command)
|
||||
|
||||
|
||||
void
|
||||
sata_request::set_ata28_cmd(uint8 command, uint32 lba, uint8 sectorCount)
|
||||
sata_request::SetATA28Command(uint8 command, uint32 lba, uint8 sectorCount)
|
||||
{
|
||||
set_ata_cmd(command);
|
||||
SetATACommand(command);
|
||||
fFis[4] = lba & 0xff;
|
||||
fFis[5] = (lba >> 8) & 0xff;
|
||||
fFis[6] = (lba >> 16) & 0xff;
|
||||
@@ -78,9 +78,9 @@ sata_request::set_ata28_cmd(uint8 command, uint32 lba, uint8 sectorCount)
|
||||
|
||||
|
||||
void
|
||||
sata_request::set_ata48_cmd(uint8 command, uint64 lba, uint16 sectorCount)
|
||||
sata_request::SetATA48Command(uint8 command, uint64 lba, uint16 sectorCount)
|
||||
{
|
||||
set_ata_cmd(command);
|
||||
SetATACommand(command);
|
||||
fFis[4] = lba & 0xff;
|
||||
fFis[5] = (lba >> 8) & 0xff;
|
||||
fFis[6] = (lba >> 16) & 0xff;
|
||||
@@ -103,10 +103,10 @@ sata_request::SetFeature(uint16 feature)
|
||||
|
||||
|
||||
void
|
||||
sata_request::set_atapi_cmd(size_t transferLength)
|
||||
sata_request::SetATAPICommand(size_t transferLength)
|
||||
{
|
||||
fIsATAPI = true;
|
||||
set_ata_cmd(0xa0);
|
||||
SetATACommand(0xa0);
|
||||
if (1 /* isPIO */) {
|
||||
if (transferLength == 0)
|
||||
transferLength = 2;
|
||||
@@ -119,13 +119,13 @@ sata_request::set_atapi_cmd(size_t transferLength)
|
||||
|
||||
|
||||
void
|
||||
sata_request::finish(int tfd, size_t bytesTransfered)
|
||||
sata_request::Finish(int tfd, size_t bytesTransfered)
|
||||
{
|
||||
if (tfd & (ATA_ERR | ATA_DF)) {
|
||||
if ((tfd & (ATA_ERR | ATA_DF)) != 0) {
|
||||
uint8 status = tfd & 0xff;
|
||||
uint8 error = (tfd >> 8) & 0xff;
|
||||
|
||||
if (!is_test_unit_ready()) {
|
||||
if (!IsTestUnitReady()) {
|
||||
dprintf("ahci: sata_request::finish ATA command 0x%02x failed\n",
|
||||
fFis[2]);
|
||||
dprintf("ahci: sata_request::finish status 0x%02x, error 0x%02x\n",
|
||||
@@ -140,7 +140,7 @@ sata_request::finish(int tfd, size_t bytesTransfered)
|
||||
if (tfd & (ATA_ERR | ATA_DF)) {
|
||||
fCcb->subsys_status = SCSI_REQ_CMP_ERR;
|
||||
if (fIsATAPI) {
|
||||
if (!is_test_unit_ready()) {
|
||||
if (!IsTestUnitReady()) {
|
||||
dprintf("ahci: sata_request::finish ATAPI packet %02x %02x "
|
||||
"%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x "
|
||||
"%02x %02x %02x %02x (len %d)\n",
|
||||
@@ -181,10 +181,10 @@ sata_request::finish(int tfd, size_t bytesTransfered)
|
||||
|
||||
|
||||
void
|
||||
sata_request::abort()
|
||||
sata_request::Abort()
|
||||
{
|
||||
dprintf("ahci: sata_request::abort called for command 0x%02x\n", fFis[2]);
|
||||
if (fCcb) {
|
||||
if (fCcb != NULL) {
|
||||
fCcb->subsys_status = SCSI_REQ_ABORTED;
|
||||
gSCSI->finished(fCcb, 1);
|
||||
delete this;
|
||||
@@ -196,16 +196,16 @@ sata_request::abort()
|
||||
|
||||
|
||||
void
|
||||
sata_request::wait_for_completion()
|
||||
sata_request::WaitForCompletion()
|
||||
{
|
||||
if (fCcb) panic("wrong usage");
|
||||
ASSERT(fCcb == NULL);
|
||||
acquire_sem(fCompletionSem);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
sata_request::completion_status()
|
||||
sata_request::CompletionStatus()
|
||||
{
|
||||
if (fCcb) panic("wrong usage");
|
||||
ASSERT(fCcb == NULL);
|
||||
return fCompletionStatus;
|
||||
}
|
||||
|
||||
@@ -5,88 +5,91 @@
|
||||
#ifndef _SATA_REQUEST_H
|
||||
#define _SATA_REQUEST_H
|
||||
|
||||
|
||||
#include "ahci_defs.h"
|
||||
#include "scsi_cmds.h"
|
||||
|
||||
class sata_request
|
||||
{
|
||||
|
||||
class sata_request {
|
||||
public:
|
||||
sata_request();
|
||||
sata_request(scsi_ccb *ccb);
|
||||
~sata_request();
|
||||
sata_request();
|
||||
sata_request(scsi_ccb* ccb);
|
||||
~sata_request();
|
||||
|
||||
void set_data(void *data, size_t dataSize);
|
||||
void SetData(void* data, size_t dataSize);
|
||||
|
||||
void set_ata_cmd(uint8 command);
|
||||
void set_ata28_cmd(uint8 command, uint32 lba, uint8 sectorCount);
|
||||
void set_ata48_cmd(uint8 command, uint64 lba, uint16 sectorCount);
|
||||
void SetFeature(uint16 feature);
|
||||
void SetATACommand(uint8 command);
|
||||
void SetATA28Command(uint8 command, uint32 lba,
|
||||
uint8 sectorCount);
|
||||
void SetATA48Command(uint8 command, uint64 lba,
|
||||
uint16 sectorCount);
|
||||
void SetFeature(uint16 feature);
|
||||
|
||||
void set_atapi_cmd(size_t transferLength);
|
||||
bool is_atapi();
|
||||
bool is_test_unit_ready();
|
||||
void SetATAPICommand(size_t transferLength);
|
||||
bool IsATAPI();
|
||||
bool IsTestUnitReady();
|
||||
|
||||
scsi_ccb * ccb();
|
||||
const void * fis();
|
||||
void * data();
|
||||
int size();
|
||||
void finish(int tfd, size_t bytesTransfered);
|
||||
void abort();
|
||||
scsi_ccb* CCB();
|
||||
const void* FIS();
|
||||
void* Data();
|
||||
int Size();
|
||||
void Finish(int tfd, size_t bytesTransfered);
|
||||
void Abort();
|
||||
|
||||
void wait_for_completion();
|
||||
int completion_status();
|
||||
void WaitForCompletion();
|
||||
int CompletionStatus();
|
||||
|
||||
private:
|
||||
scsi_ccb * fCcb;
|
||||
uint8 fFis[20];
|
||||
bool fIsATAPI;
|
||||
sem_id fCompletionSem;
|
||||
int fCompletionStatus;
|
||||
void * fData;
|
||||
size_t fDataSize;
|
||||
scsi_ccb* fCcb;
|
||||
uint8 fFis[20];
|
||||
bool fIsATAPI;
|
||||
sem_id fCompletionSem;
|
||||
int fCompletionStatus;
|
||||
void* fData;
|
||||
size_t fDataSize;
|
||||
};
|
||||
|
||||
|
||||
inline scsi_ccb *
|
||||
sata_request::ccb()
|
||||
inline scsi_ccb*
|
||||
sata_request::CCB()
|
||||
{
|
||||
return fCcb;
|
||||
}
|
||||
|
||||
|
||||
inline const void *
|
||||
sata_request::fis()
|
||||
inline const void*
|
||||
sata_request::FIS()
|
||||
{
|
||||
return fFis;
|
||||
}
|
||||
|
||||
|
||||
inline bool
|
||||
sata_request::is_atapi()
|
||||
sata_request::IsATAPI()
|
||||
{
|
||||
return fIsATAPI;
|
||||
}
|
||||
|
||||
|
||||
inline bool
|
||||
sata_request::is_test_unit_ready()
|
||||
sata_request::IsTestUnitReady()
|
||||
{
|
||||
return fIsATAPI && fCcb != NULL && fCcb->cdb[0] == SCSI_OP_TEST_UNIT_READY;
|
||||
}
|
||||
|
||||
|
||||
inline void *
|
||||
sata_request::data()
|
||||
inline void*
|
||||
sata_request::Data()
|
||||
{
|
||||
return fData;
|
||||
}
|
||||
|
||||
|
||||
inline int
|
||||
sata_request::size()
|
||||
sata_request::Size()
|
||||
{
|
||||
return fDataSize;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
#endif /* _SATA_REQUEST_H */
|
||||
|
||||
Reference in New Issue
Block a user