[UNIATA] Update to v0.46e5. CORE-14117
authorAmine Khaldi <amine.khaldi@reactos.org>
Mon, 25 Dec 2017 13:17:53 +0000 (14:17 +0100)
committerAmine Khaldi <amine.khaldi@reactos.org>
Mon, 25 Dec 2017 13:18:21 +0000 (14:18 +0100)
drivers/storage/ide/uniata/bm_devs.h
drivers/storage/ide/uniata/bm_devs_decl.h
drivers/storage/ide/uniata/id_ata.cpp
drivers/storage/ide/uniata/id_dma.cpp
drivers/storage/ide/uniata/uniata_ver.h

index ccf471f..89da4f1 100644 (file)
@@ -288,7 +288,7 @@ BUSMASTER_CONTROLLER_INFORMATION_BASE const BusMasterAdapters[] = {
     PCI_DEV_HW_SPEC_BM( 037f, 10de, 0x00, ATA_SA300, "nVidia nForce MCP55 S2",NV4OFF | NVQ | UNIATA_SATA  ),
     PCI_DEV_HW_SPEC_BM( 03ec, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP61", 0                             ),
     PCI_DEV_HW_SPEC_BM( 03e7, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S1",NV4OFF | NVQ | UNIATA_SATA  ),
-    PCI_DEV_HW_SPEC_BM( 03f6, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S2",NV4OFF | NVQ | UNIATA_SATA  ),
+    PCI_DEV_HW_SPEC_BM( 03f6, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S2",NVGEN        | UNIATA_SATA  ),
     PCI_DEV_HW_SPEC_BM( 03f7, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S3",NV4OFF | NVQ | UNIATA_SATA  ),
     PCI_DEV_HW_SPEC_BM( 0448, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP65", 0                             ),
     PCI_DEV_HW_SPEC_BM( 044c, 10de, 0x00, ATA_SA300, "nVidia nForce MCP65 A0", UNIATA_SATA | UNIATA_AHCI  ),
index 61f8c95..16070cd 100644 (file)
@@ -696,6 +696,7 @@ typedef struct _BUSMASTER_CONTROLLER_INFORMATION {
 
 #define NV4OFF          0x0100
 #define NVQ             0x0200
+#define NVGEN           0x0400
 
 #define VIANEW         5
 #define VIA33          4
index f823e4f..6f0f1da 100644 (file)
@@ -4616,7 +4616,7 @@ AtapiCheckInterrupt__(
         }
         break; }
     case ATA_NVIDIA_ID: {
-        if(!(ChipFlags & UNIATA_SATA))
+        if(!(ChipFlags & UNIATA_SATA) || (ChipFlags & NVGEN))
             break;
 
         KdPrint2((PRINT_PREFIX "NVIDIA\n"));
@@ -7987,6 +7987,7 @@ make_reset:
 
     // must be already selected, experimental for ROS BUG-9119
     //AtapiWritePort1(chan, IDX_IO1_o_DriveSelect, IDE_USE_LBA | (DeviceNumber ? IDE_DRIVE_2 : IDE_DRIVE_1) );
+    AtapiWritePort1(chan, IDX_IO2_o_Control , 0);
     AtapiWritePort1(chan, IDX_ATAPI_IO1_o_Feature /*IDX_IO1_o_Feature*/, FeatureReg);
     //AtapiWritePort1(chan, IDX_ATAPI_IO1_o_Unused0, 0);  // experimental for ROS BUG-9119
     //AtapiWritePort1(chan, IDX_ATAPI_IO1_o_Unused1, 0);  // experimental for ROS BUG-9119
@@ -8712,7 +8713,7 @@ invalid_cdb:
             statusByte = WaitOnBaseBusy(chan);
 
             //SelectDrive(chan, DeviceNumber);
-            if (cdb->MEDIA_REMOVAL.Prevent != FALSE) {
+            if (cdb->MEDIA_REMOVAL.Prevent == TRUE) {
                 //AtapiWritePort1(chan, IDX_IO1_o_Command,IDE_COMMAND_DOOR_LOCK);
                 statusByte = AtaCommand(deviceExtension, DeviceNumber, lChannel, IDE_COMMAND_DOOR_LOCK, 0, 0, 0, 0, 0, ATA_IMMEDIATE);
             } else {
@@ -9002,7 +9003,7 @@ IdeMediaStatus(
     chan = &(deviceExtension->chan[lChannel]);
     SelectDrive(chan, DeviceNumber);
 
-    if (EnableMSN != FALSE){
+    if (EnableMSN == TRUE){
 
         // If supported enable Media Status Notification support
         if ((chan->lun[DeviceNumber]->DeviceFlags & DFLAGS_REMOVABLE_DRIVE)) {
@@ -9028,7 +9029,7 @@ IdeMediaStatus(
             }
 
         }
-    } else { // end if EnableMSN != FALSE
+    } else { // end if EnableMSN == TRUE
 
         // disable if previously enabled
         if ((chan->lun[DeviceNumber]->DeviceFlags & DFLAGS_MEDIA_STATUS_ENABLED)) {
index d789616..eef324a 100644 (file)
@@ -152,6 +152,10 @@ AtapiDmaAlloc(
 
     if(!deviceExtension->Host64 && (WinVer_Id() > WinVer_NT)) {
         KdPrint2((PRINT_PREFIX "AtapiDmaAlloc: allocate tmp buffers below 4Gb\n"));
+        if(chan->DB_PRD) {
+            KdPrint2((PRINT_PREFIX "  already initialized %x\n", chan->DB_PRD));
+            return;
+        }
         chan->DB_PRD = MmAllocateContiguousMemory(sizeof(((PATA_REQ)NULL)->dma_tab), ph4gb);
         if(chan->DB_PRD) {
             chan->DB_PRD_PhAddr = AtapiVirtToPhysAddr(HwDeviceExtension, NULL, (PUCHAR)(chan->DB_PRD), &i, &ph_addru);
index 3a00321..2a6ad98 100644 (file)
@@ -1,10 +1,10 @@
-#define UNIATA_VER_STR         "46e3"
-#define UNIATA_VER_DOT         0.46.5.3
+#define UNIATA_VER_STR         "46e5"
+#define UNIATA_VER_DOT         0.46.5.5
 #define UNIATA_VER_MJ          0
 #define UNIATA_VER_MN          46
 #define UNIATA_VER_SUB_MJ      5
-#define UNIATA_VER_SUB_MN      3
-#define UNIATA_VER_DOT_COMMA   0,46,5,3
-#define UNIATA_VER_DOT_STR     "0.46.5.3"
+#define UNIATA_VER_SUB_MN      5
+#define UNIATA_VER_DOT_COMMA   0,46,5,5
+#define UNIATA_VER_DOT_STR     "0.46.5.5"
 #define UNIATA_VER_YEAR        2017
 #define UNIATA_VER_YEAR_STR    "2017"