radeon_hd: Update DisplayPort aux for DCE6
* DCE6 requires a non-0 value for lpAuxRequest (0 is reserved)
This commit is contained in:
@@ -49,8 +49,8 @@ dp_aux_speak(uint32 hwPin, uint8* send, int sendBytes,
|
|||||||
union auxChannelTransaction args;
|
union auxChannelTransaction args;
|
||||||
memset(&args, 0, sizeof(args));
|
memset(&args, 0, sizeof(args));
|
||||||
|
|
||||||
args.v1.lpAuxRequest = 0;
|
args.v1.lpAuxRequest = B_HOST_TO_LENDIAN_INT16(0 + 4);
|
||||||
args.v1.lpDataOut = 16;
|
args.v1.lpDataOut = B_HOST_TO_LENDIAN_INT16(16 + 4);
|
||||||
args.v1.ucDataOutLen = 0;
|
args.v1.ucDataOutLen = 0;
|
||||||
args.v1.ucChannelID = hwPin;
|
args.v1.ucChannelID = hwPin;
|
||||||
args.v1.ucDelay = delay / 10;
|
args.v1.ucDelay = delay / 10;
|
||||||
@@ -58,7 +58,10 @@ dp_aux_speak(uint32 hwPin, uint8* send, int sendBytes,
|
|||||||
//if (ASIC_IS_DCE4(rdev))
|
//if (ASIC_IS_DCE4(rdev))
|
||||||
// args.v2.ucHPD_ID = chan->rec.hpd;
|
// args.v2.ucHPD_ID = chan->rec.hpd;
|
||||||
|
|
||||||
unsigned char* base = (unsigned char*)gAtomContext->scratch;
|
unsigned char* base = (unsigned char*)(gAtomContext->scratch + 1);
|
||||||
|
|
||||||
|
// TODO: This isn't correct for big endian systems!
|
||||||
|
// send needs to be swapped on big endian.
|
||||||
memcpy(base, send, sendBytes);
|
memcpy(base, send, sendBytes);
|
||||||
|
|
||||||
atom_execute_table(gAtomContext, index, (uint32*)&args);
|
atom_execute_table(gAtomContext, index, (uint32*)&args);
|
||||||
@@ -81,6 +84,8 @@ dp_aux_speak(uint32 hwPin, uint8* send, int sendBytes,
|
|||||||
if (recvLength > recvBytes)
|
if (recvLength > recvBytes)
|
||||||
recvLength = recvBytes;
|
recvLength = recvBytes;
|
||||||
|
|
||||||
|
// TODO: This isn't correct for big endian systems!
|
||||||
|
// recv needs to be swapped on big endian.
|
||||||
if (recv && recvBytes)
|
if (recv && recvBytes)
|
||||||
memcpy(recv, base + 16, recvLength);
|
memcpy(recv, base + 16, recvLength);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user