mirror of
https://github.com/reactos/reactos.git
synced 2024-08-08 12:18:13 +00:00
[UNIATA]
Nathan Lineback <~lineback~AT~toastytech~DOT~com~>: - Apply the Linux fix to UniATA. Bug #6500. svn path=/trunk/; revision=54130
This commit is contained in:
parent
78208f96bf
commit
38ed2303d8
|
@ -855,6 +855,32 @@ for_ugly_chips:
|
|||
ULONG IoSize = 0;
|
||||
ULONG BaseMemAddress = 0;
|
||||
|
||||
/*
|
||||
* vt6420/1 has problems talking to some drives. The following
|
||||
* is based on the fix from Joseph Chan <JosephChan@via.com.tw>.
|
||||
*
|
||||
* When host issues HOLD, device may send up to 20DW of data
|
||||
* before acknowledging it with HOLDA and the host should be
|
||||
* able to buffer them in FIFO. Unfortunately, some WD drives
|
||||
* send upto 40DW before acknowledging HOLD and, in the
|
||||
* default configuration, this ends up overflowing vt6421's
|
||||
* FIFO, making the controller abort the transaction with
|
||||
* R_ERR.
|
||||
*
|
||||
* Rx52[2] is the internal 128DW FIFO Flow control watermark
|
||||
* adjusting mechanism enable bit and the default value 0
|
||||
* means host will issue HOLD to device when the left FIFO
|
||||
* size goes below 32DW. Setting it to 1 makes the watermark
|
||||
* 64DW.
|
||||
*
|
||||
* http://www.reactos.org/bugzilla/show_bug.cgi?id=6500
|
||||
*/
|
||||
|
||||
if(DeviceID == 0x3149 || DeviceID == 0x3249) { //vt6420 or vt6421
|
||||
KdPrint2((PRINT_PREFIX "VIA 642x FIFO\n"));
|
||||
ChangePciConfig1(0x52, a | (1 << 2));
|
||||
}
|
||||
|
||||
switch(DeviceID) {
|
||||
case 0x3149: // VIA 6420
|
||||
KdPrint2((PRINT_PREFIX "VIA 6420\n"));
|
||||
|
|
Loading…
Reference in a new issue