[haiku-commits] BRANCH axeld-github.trim [642a048] src/add-ons/kernel/busses/scsi/ahci

  • From: axeld-github.trim <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 18 Sep 2013 23:15:39 +0200 (CEST)

added 1 changeset to branch 'refs/remotes/axeld-github/trim'
old head: b1f4172cb1c860f8b9403388d83edff95f7976aa
new head: 642a0489fa360a860d6de29b7f6f0a855f2e6e38
overview: https://github.com/axeld/haiku/compare/b1f4172...642a048

----------------------------------------------------------------------------

642a048: ahci: Minor cleanup.
  
  * Mostly utilized ATACommands.h

                                   [ Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Commit:      642a0489fa360a860d6de29b7f6f0a855f2e6e38
Author:      Axel Dörfler <axeld@xxxxxxxxxxxxxxxx>
Date:        Wed Sep 18 21:04:21 2013 UTC

----------------------------------------------------------------------------

2 files changed, 17 insertions(+), 8 deletions(-)
.../kernel/busses/scsi/ahci/ahci_port.cpp        | 20 +++++++++++++-------
.../kernel/busses/scsi/ahci/sata_request.cpp     |  5 ++++-

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp 
b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp
index f3de1bb..e0f1c39 100644
--- a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp
+++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp
@@ -13,6 +13,7 @@
 #include <ByteOrder.h>
 #include <KernelExport.h>
 
+#include <ATACommands.h>
 #include <ATAInfoBlock.h>
 
 #include "ahci_controller.h"
@@ -358,8 +359,8 @@ AHCIPort::InterruptErrorHandler(uint32 is)
        uint32 ci = fRegs->ci;
 
        if (!fTestUnitReadyActive) {
-               TRACE("AHCIPort::InterruptErrorHandler port %d, "
-                       "fCommandsActive 0x%08" B_PRIx32 ", is 0x%08" B_PRIx32 
", ci 0x%08" B_PRIx32 "\n", fIndex,
+               TRACE("AHCIPort::InterruptErrorHandler port %d, fCommandsActive 
0x%08"
+                       B_PRIx32 ", is 0x%08" B_PRIx32 ", ci 0x%08" B_PRIx32 
"\n", fIndex,
                        fCommandsActive, is, ci);
 
                TRACE("ssts 0x%08" B_PRIx32 "\n", fRegs->ssts);
@@ -563,7 +564,8 @@ AHCIPort::ScsiInquiry(scsi_ccb *request)
 
        sata_request sreq;
        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);
        sreq.wait_for_completion();
 
@@ -671,7 +673,8 @@ AHCIPort::ScsiSynchronizeCache(scsi_ccb *request)
                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);
 }
 
@@ -771,7 +774,9 @@ 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(isWrite ? 0x35 : 0x25, lba, sectorCount);
+               sreq->set_ata48_cmd(
+                       isWrite ? ATA_COMMAND_WRITE_DMA_EXT : 
ATA_COMMAND_READ_DMA_EXT,
+                       lba, sectorCount);
        } else {
                if (sectorCount > 256) {
                        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)
                        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);
@@ -799,6 +805,7 @@ AHCIPort::ScsiUnmap(scsi_ccb* request, 
scsi_unmap_parameter_list* unmapBlocks)
                return;
        }
 
+       sreq->set_ata_cmd(ATA_COMMAND_DATA_SET_MANAGEMENT);
        delete sreq;
 }
 
@@ -1074,7 +1081,6 @@ AHCIPort::ScsiExecuteRequest(scsi_ccb *request)
 uchar
 AHCIPort::ScsiAbortRequest(scsi_ccb *request)
 {
-
        return SCSI_REQ_CMP;
 }
 
diff --git a/src/add-ons/kernel/busses/scsi/ahci/sata_request.cpp 
b/src/add-ons/kernel/busses/scsi/ahci/sata_request.cpp
index 9bd871b..2f5a2d2 100644
--- a/src/add-ons/kernel/busses/scsi/ahci/sata_request.cpp
+++ b/src/add-ons/kernel/busses/scsi/ahci/sata_request.cpp
@@ -10,6 +10,9 @@
 #include "scsi_cmds.h"
 
 
+#define FIS_TYPE_REGISTER_HOST_TO_DEVICE 0x27
+
+
 sata_request::sata_request()
        :
        fCcb(NULL),
@@ -54,7 +57,7 @@ void
 sata_request::set_ata_cmd(uint8 command)
 {
        memset(fFis, 0, sizeof(fFis));
-       fFis[0] = 0x27;
+       fFis[0] = FIS_TYPE_REGISTER_HOST_TO_DEVICE;
        fFis[1] = 0x80;
        fFis[2] = command;
 }


Other related posts:

  • » [haiku-commits] BRANCH axeld-github.trim [642a048] src/add-ons/kernel/busses/scsi/ahci - axeld-github . trim