ahci: Minor cleanup.
* Mostly utilized ATACommands.h
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
#include <ByteOrder.h>
|
#include <ByteOrder.h>
|
||||||
#include <KernelExport.h>
|
#include <KernelExport.h>
|
||||||
|
|
||||||
|
#include <ATACommands.h>
|
||||||
#include <ATAInfoBlock.h>
|
#include <ATAInfoBlock.h>
|
||||||
|
|
||||||
#include "ahci_controller.h"
|
#include "ahci_controller.h"
|
||||||
@@ -358,8 +359,8 @@ AHCIPort::InterruptErrorHandler(uint32 is)
|
|||||||
uint32 ci = fRegs->ci;
|
uint32 ci = fRegs->ci;
|
||||||
|
|
||||||
if (!fTestUnitReadyActive) {
|
if (!fTestUnitReadyActive) {
|
||||||
TRACE("AHCIPort::InterruptErrorHandler port %d, "
|
TRACE("AHCIPort::InterruptErrorHandler port %d, fCommandsActive 0x%08"
|
||||||
"fCommandsActive 0x%08" B_PRIx32 ", is 0x%08" B_PRIx32 ", ci 0x%08" B_PRIx32 "\n", fIndex,
|
B_PRIx32 ", is 0x%08" B_PRIx32 ", ci 0x%08" B_PRIx32 "\n", fIndex,
|
||||||
fCommandsActive, is, ci);
|
fCommandsActive, is, ci);
|
||||||
|
|
||||||
TRACE("ssts 0x%08" B_PRIx32 "\n", fRegs->ssts);
|
TRACE("ssts 0x%08" B_PRIx32 "\n", fRegs->ssts);
|
||||||
@@ -563,7 +564,8 @@ AHCIPort::ScsiInquiry(scsi_ccb *request)
|
|||||||
|
|
||||||
sata_request sreq;
|
sata_request sreq;
|
||||||
sreq.set_data(&ataData, sizeof(ataData));
|
sreq.set_data(&ataData, sizeof(ataData));
|
||||||
sreq.set_ata_cmd(fIsATAPI ? 0xa1 : 0xec); // Identify (Packet) Device
|
sreq.set_ata_cmd(fIsATAPI
|
||||||
|
? ATA_COMMAND_IDENTIFY_PACKET_DEVICE : ATA_COMMAND_IDENTIFY_DEVICE);
|
||||||
ExecuteSataRequest(&sreq);
|
ExecuteSataRequest(&sreq);
|
||||||
sreq.wait_for_completion();
|
sreq.wait_for_completion();
|
||||||
|
|
||||||
@@ -671,7 +673,8 @@ AHCIPort::ScsiSynchronizeCache(scsi_ccb *request)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sreq->set_ata_cmd(fUse48BitCommands ? 0xea : 0xe7); // Flush Cache
|
sreq->set_ata_cmd(fUse48BitCommands
|
||||||
|
? ATA_COMMAND_FLUSH_CACHE_EXT : ATA_COMMAND_FLUSH_CACHE);
|
||||||
ExecuteSataRequest(sreq);
|
ExecuteSataRequest(sreq);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -771,7 +774,9 @@ 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(isWrite ? 0x35 : 0x25, lba, sectorCount);
|
sreq->set_ata48_cmd(
|
||||||
|
isWrite ? ATA_COMMAND_WRITE_DMA_EXT : ATA_COMMAND_READ_DMA_EXT,
|
||||||
|
lba, sectorCount);
|
||||||
} else {
|
} else {
|
||||||
if (sectorCount > 256) {
|
if (sectorCount > 256) {
|
||||||
panic("ahci: ScsiReadWrite length too large, %lu sectors",
|
panic("ahci: ScsiReadWrite length too large, %lu sectors",
|
||||||
@@ -779,7 +784,8 @@ 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 ? 0xca : 0xc8, lba, sectorCount);
|
sreq->set_ata28_cmd(isWrite
|
||||||
|
? ATA_COMMAND_WRITE_DMA : ATA_COMMAND_READ_DMA, lba, sectorCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
ExecuteSataRequest(sreq, isWrite);
|
ExecuteSataRequest(sreq, isWrite);
|
||||||
@@ -799,6 +805,7 @@ AHCIPort::ScsiUnmap(scsi_ccb* request, scsi_unmap_parameter_list* unmapBlocks)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sreq->set_ata_cmd(ATA_COMMAND_DATA_SET_MANAGEMENT);
|
||||||
delete sreq;
|
delete sreq;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1074,7 +1081,6 @@ AHCIPort::ScsiExecuteRequest(scsi_ccb *request)
|
|||||||
uchar
|
uchar
|
||||||
AHCIPort::ScsiAbortRequest(scsi_ccb *request)
|
AHCIPort::ScsiAbortRequest(scsi_ccb *request)
|
||||||
{
|
{
|
||||||
|
|
||||||
return SCSI_REQ_CMP;
|
return SCSI_REQ_CMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
#include "scsi_cmds.h"
|
#include "scsi_cmds.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define FIS_TYPE_REGISTER_HOST_TO_DEVICE 0x27
|
||||||
|
|
||||||
|
|
||||||
sata_request::sata_request()
|
sata_request::sata_request()
|
||||||
:
|
:
|
||||||
fCcb(NULL),
|
fCcb(NULL),
|
||||||
@@ -54,7 +57,7 @@ void
|
|||||||
sata_request::set_ata_cmd(uint8 command)
|
sata_request::set_ata_cmd(uint8 command)
|
||||||
{
|
{
|
||||||
memset(fFis, 0, sizeof(fFis));
|
memset(fFis, 0, sizeof(fFis));
|
||||||
fFis[0] = 0x27;
|
fFis[0] = FIS_TYPE_REGISTER_HOST_TO_DEVICE;
|
||||||
fFis[1] = 0x80;
|
fFis[1] = 0x80;
|
||||||
fFis[2] = command;
|
fFis[2] = command;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user