[UNIATA] Update to version 0.47a. CORE-15930
authorThomas Faber <thomas.faber@reactos.org>
Tue, 25 Jun 2019 07:05:43 +0000 (09:05 +0200)
committerThomas Faber <thomas.faber@reactos.org>
Tue, 25 Jun 2019 07:26:09 +0000 (09:26 +0200)
drivers/storage/ide/uniata/atacmd_map.h
drivers/storage/ide/uniata/bsmaster.h
drivers/storage/ide/uniata/id_ata.cpp
drivers/storage/ide/uniata/id_sata.cpp
drivers/storage/ide/uniata/id_sata.h
drivers/storage/ide/uniata/todo.txt
drivers/storage/ide/uniata/uniata_ver.h

index 2b62e37..d2adb7e 100644 (file)
@@ -1,5 +1,5 @@
 
-// Build Version 0.46e8
+// Build Version 0.47a
 
 
 UCHAR const AtaCommands48[256] = {
index ac055b3..ed42cc7 100644 (file)
@@ -709,6 +709,7 @@ typedef struct _IDE_AHCI_PORT_REGISTERS {
 #define         ATA_AHCI_P_CMD_HPCP     0x00040000
 #define         ATA_AHCI_P_CMD_ISP      0x00080000
 #define         ATA_AHCI_P_CMD_CPD      0x00100000
+#define         ATA_AHCI_P_CMD_ESP      0x00200000
 #define         ATA_AHCI_P_CMD_ATAPI    0x01000000
 #define         ATA_AHCI_P_CMD_DLAE     0x02000000
 #define         ATA_AHCI_P_CMD_ALPE     0x04000000
index 4c8e159..0a0c586 100644 (file)
@@ -11281,7 +11281,7 @@ AtapiRegCheckDevValue(
             val = AtapiRegCheckDevLunValue(
                 HwDeviceExtension, namex, chan, dev, Name, val);
         }
-        if(!(HwFlags & (UNIATA_AHCI | UNIATA_AHCI))) {
+        if(!(HwFlags & (UNIATA_SATA | UNIATA_AHCI))) {
             swprintf(namev, L"\\PATA");
             swprintf(namex, L"Parameters%s", namev);
             val = AtapiRegCheckDevLunValue(
index 32c4c90..2c67131 100644 (file)
@@ -1077,7 +1077,7 @@ UniataAhciDetect(
     v_Mj = ((version >> 20) & 0xf0) + ((version >> 16) & 0x0f);
     v_Mn = ((version >> 4) & 0xf0) + (version & 0x0f);
 
-    KdPrint2((PRINT_PREFIX "  AHCI version %#x.%02x controller with %d ports (mask %#x) detected\n",
+    KdPrint2((PRINT_PREFIX "  AHCI version %x.%02x controller with %d ports (mask %#x) detected\n",
                  v_Mj, v_Mn,
                  NumberChannels, PI));
     KdPrint(("  AHCI SATA Gen %d\n", (((CAP & AHCI_CAP_ISS_MASK) >> 20)) ));
@@ -2237,22 +2237,22 @@ UniataAhciBeginTransaction(
     if(CMD0 != CMD) {
         KdPrint2(("  send CMD %#x, entries %#x\n", CMD, AHCI_CL->prd_length));
         UniataAhciWriteChannelPort4(chan, IDX_AHCI_P_CMD, CMD);
-        UniataAhciReadChannelPort4(chan, IDX_AHCI_P_CMD); /* flush */
+        CMD0 = UniataAhciReadChannelPort4(chan, IDX_AHCI_P_CMD); /* flush */
     }
 
     /* issue command to controller */
-    //UniataAhciWriteChannelPort4(chan, IDX_AHCI_P_ACT, 0x01 << tag);
+    //UniataAhciWriteChannelPort4(chan, IDX_AHCI_P_ACT, 0x01 << tag); // Used for NCQ
     KdPrint2(("  Set CI\n"));
     UniataAhciWriteChannelPort4(chan, IDX_AHCI_P_CI, 0x01 << tag);
     chan->AhciPrevCI |= 0x01 << tag;
 
-    CMD0 = CMD;
+    //CMD0 = CMD;
     CMD |= ATA_AHCI_P_CMD_ST |
           ((chan->ChannelCtrlFlags & CTRFLAGS_AHCI_PM) ? ATA_AHCI_P_CMD_PMA : 0);
     if(CMD != CMD0) {
-      KdPrint2(("  Send CMD START\n"));
+      KdPrint2(("  Send CMD START (%#x != %#x)\n", CMD, CMD0));
       UniataAhciWriteChannelPort4(chan, IDX_AHCI_P_CMD, CMD);
-      UniataAhciReadChannelPort4(chan, IDX_AHCI_P_CMD); /* flush */
+      CMD0 = UniataAhciReadChannelPort4(chan, IDX_AHCI_P_CMD); /* flush */
     } else {
       KdPrint2(("  No CMD START, already active\n"));
     }
index 692d6bd..4e74219 100644 (file)
@@ -292,7 +292,7 @@ UniataAhciReadChannelPort4(
     IN ULONG io_port_ndx
     )
 {
-    ULONG v = AtapiReadPortEx4(NULL, (ULONGIO_PTR)&((chan)->BaseIoAHCI_Port), io_port_ndx);
+    volatile ULONG v = AtapiReadPortEx4(NULL, (ULONGIO_PTR)&((chan)->BaseIoAHCI_Port), io_port_ndx);
     KdPrint3((PRINT_PREFIX "ReadChannelPort4 ch%d[%x] = %x\n", chan->lChannel, io_port_ndx, v));
     return v;
 } // end UniataAhciReadChannelPort4()
index ad16c0f..677b348 100644 (file)
 158.implement .INF generator
 159.fix bug with invalid INF section under XP+                         (43e2)
 160.add INF handler for SCSI\NET\VEN_UNIATA&PROD_MANAGEMENT_PORT
-161.
+161.
\ No newline at end of file
index 28a985f..2ff884e 100644 (file)
@@ -1,10 +1,10 @@
-#define UNIATA_VER_STR         "47"
-#define UNIATA_VER_DOT         0.47.0.0
+#define UNIATA_VER_STR         "47a"
+#define UNIATA_VER_DOT         0.47.1.0
 #define UNIATA_VER_MJ          0
 #define UNIATA_VER_MN          47
-#define UNIATA_VER_SUB_MJ      0
+#define UNIATA_VER_SUB_MJ      1
 #define UNIATA_VER_SUB_MN      0
-#define UNIATA_VER_DOT_COMMA   0,47,0,0
-#define UNIATA_VER_DOT_STR     "0.47.0.0"
+#define UNIATA_VER_DOT_COMMA   0,47,1,0
+#define UNIATA_VER_DOT_STR     "0.47.1.0"
 #define UNIATA_VER_YEAR        2019
 #define UNIATA_VER_YEAR_STR    "2019"