ahci: Minor coding style cleanup.

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