https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3fb5ca3beee8a0310c4cc70fb9448206de29fe9c
commit 3fb5ca3beee8a0310c4cc70fb9448206de29fe9c Author: Thomas Faber <thomas.fa...@reactos.org> AuthorDate: Tue Jun 25 09:05:43 2019 +0200 Commit: Thomas Faber <thomas.fa...@reactos.org> CommitDate: Tue Jun 25 09:26:09 2019 +0200 [UNIATA] Update to version 0.47a. CORE-15930 --- drivers/storage/ide/uniata/atacmd_map.h | 2 +- drivers/storage/ide/uniata/bsmaster.h | 1 + drivers/storage/ide/uniata/id_ata.cpp | 2 +- drivers/storage/ide/uniata/id_sata.cpp | 12 ++++++------ drivers/storage/ide/uniata/id_sata.h | 2 +- drivers/storage/ide/uniata/todo.txt | 2 +- drivers/storage/ide/uniata/uniata_ver.h | 10 +++++----- 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/drivers/storage/ide/uniata/atacmd_map.h b/drivers/storage/ide/uniata/atacmd_map.h index 2b62e372589..d2adb7eece4 100644 --- a/drivers/storage/ide/uniata/atacmd_map.h +++ b/drivers/storage/ide/uniata/atacmd_map.h @@ -1,5 +1,5 @@ -// Build Version 0.46e8 +// Build Version 0.47a UCHAR const AtaCommands48[256] = { diff --git a/drivers/storage/ide/uniata/bsmaster.h b/drivers/storage/ide/uniata/bsmaster.h index ac055b3be28..ed42cc7ba97 100644 --- a/drivers/storage/ide/uniata/bsmaster.h +++ b/drivers/storage/ide/uniata/bsmaster.h @@ -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 diff --git a/drivers/storage/ide/uniata/id_ata.cpp b/drivers/storage/ide/uniata/id_ata.cpp index 4c8e15944e4..0a0c586a7ce 100644 --- a/drivers/storage/ide/uniata/id_ata.cpp +++ b/drivers/storage/ide/uniata/id_ata.cpp @@ -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( diff --git a/drivers/storage/ide/uniata/id_sata.cpp b/drivers/storage/ide/uniata/id_sata.cpp index 32c4c9008d5..2c67131983c 100644 --- a/drivers/storage/ide/uniata/id_sata.cpp +++ b/drivers/storage/ide/uniata/id_sata.cpp @@ -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")); } diff --git a/drivers/storage/ide/uniata/id_sata.h b/drivers/storage/ide/uniata/id_sata.h index 692d6bdf6a4..4e742197f89 100644 --- a/drivers/storage/ide/uniata/id_sata.h +++ b/drivers/storage/ide/uniata/id_sata.h @@ -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() diff --git a/drivers/storage/ide/uniata/todo.txt b/drivers/storage/ide/uniata/todo.txt index ad16c0fc1e5..677b348d438 100644 --- a/drivers/storage/ide/uniata/todo.txt +++ b/drivers/storage/ide/uniata/todo.txt @@ -254,4 +254,4 @@ 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 diff --git a/drivers/storage/ide/uniata/uniata_ver.h b/drivers/storage/ide/uniata/uniata_ver.h index 28a985f1e4b..2ff884e01af 100644 --- a/drivers/storage/ide/uniata/uniata_ver.h +++ b/drivers/storage/ide/uniata/uniata_ver.h @@ -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"