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;
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 */