mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-01-30 21:19:49 +00:00
515.65.01
This commit is contained in:
@@ -122,6 +122,8 @@ namespace DisplayPort
|
||||
ConnectorType connectorType;
|
||||
Address address;
|
||||
GUID guid;
|
||||
GUID guid2;
|
||||
bool bVirtualPeerDevice;
|
||||
NvU8 peerDevice;
|
||||
NvU8 dpcdRevisionMajor;
|
||||
NvU8 dpcdRevisionMinor;
|
||||
@@ -357,6 +359,29 @@ namespace DisplayPort
|
||||
return hal->setIgnoreMSATimingParamters(msaTimingParamIgnoreEn);
|
||||
}
|
||||
|
||||
bool isVirtualPeerDevice()
|
||||
{
|
||||
return bVirtualPeerDevice;
|
||||
}
|
||||
|
||||
bool isBranchDevice()
|
||||
{
|
||||
return !isVideoSink() && !isAudioSink();
|
||||
}
|
||||
|
||||
bool isAtLeastVersion(unsigned major, unsigned minor)
|
||||
{
|
||||
if (dpcdRevisionMajor > major)
|
||||
return true;
|
||||
|
||||
if (dpcdRevisionMajor < major)
|
||||
return false;
|
||||
|
||||
return dpcdRevisionMinor >= minor;
|
||||
}
|
||||
|
||||
virtual void queryGUID2();
|
||||
|
||||
virtual bool getSDPExtnForColorimetrySupported();
|
||||
|
||||
virtual bool isPowerSuspended();
|
||||
@@ -447,6 +472,7 @@ namespace DisplayPort
|
||||
unsigned getDscPeakThroughputModel();
|
||||
unsigned getDscMaxSliceWidth();
|
||||
unsigned getDscDecoderColorDepthSupportMask();
|
||||
void setDscDecompressionDevice(bool bDscCapBasedOnParent);
|
||||
};
|
||||
class DeviceHDCPDetection : public Object, MessageManager::Message::MessageEventSink, Timer::TimerCallback
|
||||
{
|
||||
|
||||
@@ -624,132 +624,36 @@ create:
|
||||
if (existingDev && existingDev->complianceDeviceEdidReadTest)
|
||||
existingDev->lazyExitNow = true;
|
||||
|
||||
if(newDev->isBranchDevice() && newDev->isAtLeastVersion(1,4))
|
||||
{
|
||||
//
|
||||
// GUID_2 will be non-zero for a virtual peer device and 0 for others.
|
||||
// This will help identify if a device is virtual peer device or not.
|
||||
//
|
||||
newDev->queryGUID2();
|
||||
}
|
||||
|
||||
// Read panel DSC support only if GPU supports DSC
|
||||
bool bGpuDscSupported;
|
||||
main->getDscCaps(&bGpuDscSupported);
|
||||
if (bGpuDscSupported && newDev->getDSCSupport())
|
||||
if (bGpuDscSupported)
|
||||
{
|
||||
// Read and parse DSC caps only if panel supports DSC
|
||||
newDev->readAndParseDSCCaps();
|
||||
|
||||
// Read and Parse Branch Specific DSC Caps
|
||||
if (!newDev->isVideoSink() && !newDev->isAudioSink())
|
||||
if (newDev->getDSCSupport())
|
||||
{
|
||||
newDev->readAndParseBranchSpecificDSCCaps();
|
||||
}
|
||||
}
|
||||
// Read and parse DSC caps only if panel supports DSC
|
||||
newDev->readAndParseDSCCaps();
|
||||
|
||||
// Decide if DSC stream can be sent to new device
|
||||
newDev->bDSCPossible = false;
|
||||
newDev->devDoingDscDecompression = NULL;
|
||||
if (bGpuDscSupported && !processedEdid.WARFlags.bIgnoreDscCap)
|
||||
{
|
||||
if (newDev->multistream)
|
||||
{
|
||||
if ((newDev->peerDevice == Dongle) &&
|
||||
(newDev->dpcdRevisionMajor != 0) &&
|
||||
!bDscCapBasedOnParent)
|
||||
// Read and Parse Branch Specific DSC Caps
|
||||
if (!newDev->isVideoSink() && !newDev->isAudioSink())
|
||||
{
|
||||
// For Peer Type 4 device with LAM DPCD rev != 0.0, check only the device's own DSC capability.
|
||||
if (newDev->isDSCSupported())
|
||||
{
|
||||
newDev->bDSCPossible = true;
|
||||
newDev->devDoingDscDecompression = newDev;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this->bDscMstEnablePassThrough)
|
||||
{
|
||||
//
|
||||
// Check the device's own and its parent's DSC capability.
|
||||
// - Sink device will do DSC cecompression when
|
||||
// 1. Sink device is capable of DSC decompression and parent
|
||||
// supports DSC pass through.
|
||||
//
|
||||
// - Sink device's parent will do DSC decompression
|
||||
// 1. If sink device supports DSC decompression but it's parent does not support
|
||||
// DSC Pass through, but supports DSC decompression.
|
||||
// 2. If the device does not support DSC decompression, but parent supports it.
|
||||
//
|
||||
if (newDev->isDSCSupported())
|
||||
{
|
||||
if (newDev->videoSink && newDev->parent)
|
||||
{
|
||||
if (newDev->parent->isDSCPassThroughSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of DSC capable sink devices
|
||||
// connected behind a DSC Pass through capable branch
|
||||
//
|
||||
newDev->devDoingDscDecompression = newDev;
|
||||
newDev->bDSCPossible = true;
|
||||
}
|
||||
else if (newDev->parent->isDSCSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of DSC capable sink devices
|
||||
// connected behind a branch device that is not capable
|
||||
// of DSC pass through but can do DSC decompression.
|
||||
//
|
||||
newDev->bDSCPossible = true;
|
||||
newDev->devDoingDscDecompression = newDev->parent;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// This condition takes care of branch device capable of DSC.
|
||||
newDev->devDoingDscDecompression = newDev;
|
||||
newDev->bDSCPossible = true;
|
||||
}
|
||||
}
|
||||
else if (newDev->parent && newDev->parent->isDSCSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of sink devices not capable of DSC
|
||||
// but parent is capable of DSC decompression.
|
||||
//
|
||||
newDev->bDSCPossible = true;
|
||||
newDev->devDoingDscDecompression = newDev->parent;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// Revert to old code if DSC Pass through support is not requested.
|
||||
// This code will be deleted once DSC Pass through support will be enabled
|
||||
// by default which will be done when 2Head1OR MST (GR-133) will be in production.
|
||||
//
|
||||
// Check the device's own and its parent's DSC capability. Parent of the device can do
|
||||
// DSC decompression and send uncompressed stream to downstream device
|
||||
//
|
||||
if (newDev->isDSCSupported() || (newDev->parent && newDev->parent->isDSCSupported()))
|
||||
{
|
||||
newDev->bDSCPossible = true;
|
||||
}
|
||||
|
||||
// For multistream device, determine who will do the DSC decompression
|
||||
if (newDev->bDSCPossible)
|
||||
{
|
||||
if(!newDev->isDSCSupported())
|
||||
{
|
||||
newDev->devDoingDscDecompression = newDev->parent;
|
||||
}
|
||||
else
|
||||
{
|
||||
newDev->devDoingDscDecompression = newDev;
|
||||
}
|
||||
}
|
||||
}
|
||||
newDev->readAndParseBranchSpecificDSCCaps();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
if (!processedEdid.WARFlags.bIgnoreDscCap)
|
||||
{
|
||||
if (newDev->isDSCSupported())
|
||||
{
|
||||
newDev->bDSCPossible = true;
|
||||
newDev->devDoingDscDecompression = newDev;
|
||||
}
|
||||
// Check if DSC is possible for the device and if so, set DSC Decompression device.
|
||||
newDev->setDscDecompressionDevice(this->bDscCapBasedOnParent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1953,8 +1857,9 @@ void ConnectorImpl::fireEvents()
|
||||
void ConnectorImpl::fireEventsInternal()
|
||||
{
|
||||
ListElement * next;
|
||||
Address::StringBuffer sb;
|
||||
Address::StringBuffer sb, sb1;
|
||||
DP_USED(sb);
|
||||
DP_USED(sb1);
|
||||
for (ListElement * e = deviceList.begin(); e != deviceList.end(); e = next)
|
||||
{
|
||||
next = e->next;
|
||||
@@ -2096,7 +2001,7 @@ void ConnectorImpl::fireEventsInternal()
|
||||
DP_LOG(("DPCONN> New device %s | Native DSC Capability - %s | DSC Decompression Device - %s",
|
||||
dev->address.toString(sb),
|
||||
(dev->isDSCSupported() ? "Capable" : "Not Capable"),
|
||||
(dev->devDoingDscDecompression) ? dev->devDoingDscDecompression->address.toString(sb):"NA"));
|
||||
(dev->devDoingDscDecompression) ? dev->devDoingDscDecompression->address.toString(sb1):"NA"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -81,6 +81,7 @@ DeviceImpl::DeviceImpl(DPCDHAL * hal, ConnectorImpl * connector, DeviceImpl * pa
|
||||
activeGroup(0),
|
||||
connector(connector),
|
||||
address(),
|
||||
bVirtualPeerDevice(false),
|
||||
plugged(false),
|
||||
friendlyAux(this),
|
||||
isHDCPCap(False),
|
||||
@@ -1445,6 +1446,8 @@ NvBool DeviceImpl::getDSCSupport()
|
||||
NvU8 byte = 0;
|
||||
unsigned size = 0;
|
||||
unsigned nakReason = NakUndefined;
|
||||
Address::StringBuffer sb;
|
||||
DP_USED(sb);
|
||||
|
||||
dscCaps.bDSCSupported = false;
|
||||
|
||||
@@ -1462,6 +1465,11 @@ NvBool DeviceImpl::getDSCSupport()
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
DP_LOG(("DP-DEV> DSC Support AUX READ failed for %s!", address.toString(sb)));
|
||||
}
|
||||
|
||||
return dscCaps.bDSCSupported;
|
||||
}
|
||||
|
||||
@@ -1737,16 +1745,40 @@ bool DeviceImpl::readAndParseDSCCaps()
|
||||
|
||||
unsigned sizeCompleted = 0;
|
||||
unsigned nakReason = NakUndefined;
|
||||
Address::StringBuffer sb;
|
||||
DP_USED(sb);
|
||||
|
||||
if(AuxBus::success != this->getDpcdData(NV_DPCD14_DSC_SUPPORT,
|
||||
&rawDscCaps[0], sizeof(rawDscCaps), &sizeCompleted, &nakReason))
|
||||
{
|
||||
DP_LOG(("DP-DEV> Error querying DSC Caps on %s!", this->address.toString(sb)));
|
||||
return false;
|
||||
}
|
||||
|
||||
return parseDscCaps(&rawDscCaps[0], sizeof(rawDscCaps));
|
||||
}
|
||||
|
||||
void DeviceImpl::queryGUID2()
|
||||
{
|
||||
unsigned sizeCompleted = 0;
|
||||
unsigned nakReason = NakUndefined;
|
||||
Address::StringBuffer sb;
|
||||
DP_USED(sb);
|
||||
|
||||
if(AuxBus::success == this->getDpcdData(NV_DPCD20_GUID_2,
|
||||
&this->guid2.data[0], DPCD_GUID_SIZE, &sizeCompleted, &nakReason))
|
||||
{
|
||||
if (!(this->guid2.isGuidZero()))
|
||||
{
|
||||
this->bVirtualPeerDevice = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DP_LOG(("DP-DEV> Error querying GUID2 on %s!", this->address.toString(sb)));
|
||||
}
|
||||
}
|
||||
|
||||
bool DeviceImpl::readAndParseBranchSpecificDSCCaps()
|
||||
{
|
||||
unsigned sizeCompleted = 0;
|
||||
@@ -1785,7 +1817,7 @@ bool DeviceImpl::getDscEnable(bool *pEnable)
|
||||
|
||||
if (status != AuxBus::success)
|
||||
{
|
||||
DP_LOG(("DP> Error querying DSC Enable State!"));
|
||||
DP_LOG(("DP-DEV> Error querying DSC Enable State!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1793,13 +1825,110 @@ bool DeviceImpl::getDscEnable(bool *pEnable)
|
||||
return true;
|
||||
}
|
||||
|
||||
void DeviceImpl::setDscDecompressionDevice(bool bDscCapBasedOnParent)
|
||||
{
|
||||
// Decide if DSC stream can be sent to new device
|
||||
this->bDSCPossible = false;
|
||||
this->devDoingDscDecompression = NULL;
|
||||
|
||||
if (this->multistream)
|
||||
{
|
||||
if ((this->peerDevice == Dongle) &&
|
||||
(this->dpcdRevisionMajor != 0) &&
|
||||
!bDscCapBasedOnParent)
|
||||
{
|
||||
// For Peer Type 4 device with LAM DPCD rev != 0.0, check only the device's own DSC capability.
|
||||
if (this->isDSCSupported())
|
||||
{
|
||||
this->bDSCPossible = true;
|
||||
this->devDoingDscDecompression = this;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// Check the device's own and its parent's DSC capability.
|
||||
// - Sink device will do DSC cecompression when
|
||||
// 1. Sink device is capable of DSC decompression
|
||||
// 2. Sink is on a logical port (8-15)
|
||||
//
|
||||
// OR
|
||||
//
|
||||
// 1. Sink device is capable of DSC decompression
|
||||
// 2. Parent of sink is a Virtual Peer device
|
||||
// 3. Parent of sink supports DSC Pass through
|
||||
//
|
||||
// - Sink device's parent will do DSC decompression
|
||||
// 1. Above conditions are not true.
|
||||
// 2. Parent of sink supports DSC decompression.
|
||||
//
|
||||
if (this->isDSCSupported())
|
||||
{
|
||||
if (this->isVideoSink() && this->getParent() != NULL)
|
||||
{
|
||||
if (this->isLogical())
|
||||
{
|
||||
this->devDoingDscDecompression = this;
|
||||
this->bDSCPossible = true;
|
||||
}
|
||||
else if (this->parent->isVirtualPeerDevice() &&
|
||||
this->parent->isDSCPassThroughSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of DSC capable sink devices
|
||||
// connected behind a DSC Pass through capable branch
|
||||
//
|
||||
this->devDoingDscDecompression = this;
|
||||
this->bDSCPossible = true;
|
||||
}
|
||||
else if (this->parent->isDSCSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of DSC capable sink devices
|
||||
// connected behind a branch device that is not capable
|
||||
// of DSC pass through but can do DSC decompression.
|
||||
//
|
||||
this->bDSCPossible = true;
|
||||
this->devDoingDscDecompression = this->parent;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// This condition takes care of branch device capable of DSC.
|
||||
this->devDoingDscDecompression = this;
|
||||
this->bDSCPossible = true;
|
||||
}
|
||||
}
|
||||
else if (this->parent && this->parent->isDSCSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of sink devices not capable of DSC
|
||||
// but parent is capable of DSC decompression.
|
||||
//
|
||||
this->bDSCPossible = true;
|
||||
this->devDoingDscDecompression = this->parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this->isDSCSupported())
|
||||
{
|
||||
this->bDSCPossible = true;
|
||||
this->devDoingDscDecompression = this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool DeviceImpl::setDscEnable(bool enable)
|
||||
{
|
||||
NvU8 byte = 0;
|
||||
NvU8 dscEnableByte = 0;
|
||||
NvU8 dscPassthroughByte = 0;
|
||||
unsigned size = 0;
|
||||
unsigned nakReason = NakUndefined;
|
||||
bool bCurrDscEnable = false;
|
||||
bool bDscPassThrough = false;
|
||||
bool bDscPassThroughUpdated = true;
|
||||
Address::StringBuffer buffer;
|
||||
DP_USED(buffer);
|
||||
|
||||
@@ -1809,12 +1938,13 @@ bool DeviceImpl::setDscEnable(bool enable)
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((this->devDoingDscDecompression == this) && this->parent != NULL && this->connector->bDscMstEnablePassThrough)
|
||||
if ((this->devDoingDscDecompression == this) && !this->isLogical() && this->parent != NULL && this->connector->bDscMstEnablePassThrough)
|
||||
{
|
||||
//
|
||||
// If the device has a parent, that means the sink is on a MST link and
|
||||
// and on a MST link if DSC is possible on the path and devDoingDscDecompression
|
||||
// is the sink itself, then the parent should be DSC Pass through capable..
|
||||
// is the sink itself and sink is not on a logical port, then the parent should be
|
||||
// DSC Pass through capable.
|
||||
//
|
||||
bDscPassThrough = true;
|
||||
}
|
||||
@@ -1829,7 +1959,7 @@ bool DeviceImpl::setDscEnable(bool enable)
|
||||
//
|
||||
if (!getDscEnable(&bCurrDscEnable))
|
||||
{
|
||||
DP_LOG(("DP> Not able to get DSC Enable State!"));
|
||||
DP_LOG(("DP-DEV> Not able to get DSC Enable State!"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1838,66 +1968,59 @@ bool DeviceImpl::setDscEnable(bool enable)
|
||||
{
|
||||
if(bDscPassThrough)
|
||||
{
|
||||
byte = FLD_SET_DRF(_DPCD20, _DSC_PASS_THROUGH, _ENABLE, _YES, byte);
|
||||
dscPassthroughByte = FLD_SET_DRF(_DPCD20, _DSC_PASS_THROUGH, _ENABLE, _YES, dscPassthroughByte);
|
||||
DP_LOG(("DP-DEV> Enabling DSC Pass through on branch device - %s",
|
||||
this->parent->getTopologyAddress().toString(buffer)));
|
||||
}
|
||||
|
||||
if (!bCurrDscEnable)
|
||||
{
|
||||
dscEnableByte = FLD_SET_DRF(_DPCD14, _DSC_ENABLE, _SINK, _YES, dscEnableByte);
|
||||
DP_LOG(("DP-DEV> Enabling DSC decompression on device - %s",
|
||||
this->devDoingDscDecompression->getTopologyAddress().toString(buffer)));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!bCurrDscEnable)
|
||||
{
|
||||
byte = FLD_SET_DRF(_DPCD14, _DSC_ENABLE, _SINK, _YES, byte);
|
||||
DP_LOG(("DP-DEV> Enabling DSC decompression on device - %s",
|
||||
this->devDoingDscDecompression->getTopologyAddress().toString(buffer)));
|
||||
}
|
||||
else
|
||||
{
|
||||
DP_LOG(("DP-DEV> DSC decompression is already enabled on device - %s",
|
||||
this->devDoingDscDecompression->getTopologyAddress().toString(buffer)));
|
||||
return true;
|
||||
}
|
||||
DP_LOG(("DP-DEV> DSC decompression is already enabled on device - %s",
|
||||
this->devDoingDscDecompression->getTopologyAddress().toString(buffer)));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(bDscPassThrough)
|
||||
{
|
||||
byte = FLD_SET_DRF(_DPCD20, _DSC_PASS_THROUGH, _ENABLE, _NO, byte);
|
||||
dscPassthroughByte = FLD_SET_DRF(_DPCD20, _DSC_PASS_THROUGH, _ENABLE, _NO, dscPassthroughByte);
|
||||
DP_LOG(("DP-DEV> Disabling DSC Pass through on branch device - %s",
|
||||
this->parent->getTopologyAddress().toString(buffer)));
|
||||
}
|
||||
|
||||
if (bCurrDscEnable)
|
||||
{
|
||||
dscEnableByte = FLD_SET_DRF(_DPCD14, _DSC_ENABLE, _SINK, _NO, dscEnableByte);
|
||||
DP_LOG(("DP-DEV> Disabling DSC decompression on device - %s",
|
||||
this->devDoingDscDecompression->getTopologyAddress().toString(buffer)));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bCurrDscEnable)
|
||||
{
|
||||
byte = FLD_SET_DRF(_DPCD14, _DSC_ENABLE, _SINK, _NO, byte);
|
||||
DP_LOG(("DP-DEV> Disabling DSC decompression on device - %s",
|
||||
this->devDoingDscDecompression->getTopologyAddress().toString(buffer)));
|
||||
}
|
||||
else
|
||||
{
|
||||
DP_LOG(("DP-DEV> DSC decompression is already disabled on device - %s",
|
||||
this->devDoingDscDecompression->getTopologyAddress().toString(buffer)));
|
||||
return true;
|
||||
}
|
||||
DP_LOG(("DP-DEV> DSC decompression is already disabled on device - %s",
|
||||
this->devDoingDscDecompression->getTopologyAddress().toString(buffer)));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (bDscPassThrough)
|
||||
{
|
||||
//
|
||||
// When sink is DSC decompression capable and parent is DSC pass through capable
|
||||
// source needs to only enable DSC pass through on the parent branch and parent
|
||||
// branch will take care of enabling DSC decompression on the sink.
|
||||
//
|
||||
return (!this->parent->setDpcdData(NV_DPCD20_DSC_PASS_THROUGH,
|
||||
&byte, sizeof byte, &size, &nakReason));
|
||||
}
|
||||
else
|
||||
{
|
||||
return (!this->devDoingDscDecompression->setDpcdData(NV_DPCD14_DSC_ENABLE,
|
||||
&byte, sizeof byte, &size, &nakReason));
|
||||
if(this->parent->setDpcdData(NV_DPCD20_DSC_PASS_THROUGH,
|
||||
&dscPassthroughByte, sizeof dscPassthroughByte, &size, &nakReason))
|
||||
{
|
||||
DP_LOG(("DP-DEV> Setting DSC Passthrough state on parent branch failed"));
|
||||
bDscPassThroughUpdated = false;
|
||||
}
|
||||
}
|
||||
|
||||
return (!this->devDoingDscDecompression->setDpcdData(NV_DPCD14_DSC_ENABLE,
|
||||
&dscEnableByte, sizeof dscEnableByte, &size, &nakReason)) && bDscPassThroughUpdated;
|
||||
}
|
||||
|
||||
unsigned DeviceImpl::getDscVersionMajor()
|
||||
|
||||
@@ -651,9 +651,19 @@ void DiscoveryManager::BranchDetection::handleLinkAddressDownReply()
|
||||
if (child[i].isInputPort)
|
||||
{
|
||||
parentDevice.peerDevice = child[i].peerDeviceType;
|
||||
parentDevice.dpcdRevisionMajor = child[i].dpcdRevisionMajor;
|
||||
parentDevice.dpcdRevisionMinor = child[i].dpcdRevisionMinor;
|
||||
parentDevice.portMap.inputMap |= (1 << child[i].portNumber);
|
||||
if (address == Address(0))
|
||||
{
|
||||
//
|
||||
// For immediate branch device, we will have already read DPCD version
|
||||
// in notifyHPD. So we can just use that to populate here.
|
||||
// For the remaining devices, LAM to parent branch will report the child
|
||||
// DPCD version in reply and we are populating it in
|
||||
// BranchDetection::detectCompleted.
|
||||
//
|
||||
parentDevice.dpcdRevisionMajor = parent->hal->getRevisionMajor();
|
||||
parentDevice.dpcdRevisionMinor = parent->hal->getRevisionMinor();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,8 +82,6 @@ ParseResponseStatus LinkAddressMessage::parseResponseAck(EncodedMessage * messag
|
||||
else
|
||||
{
|
||||
reader->readOrDefault(6 /*zeroes*/, 0x0);
|
||||
reply.res[i].dpcdRevisionMajor = 1;
|
||||
reply.res[i].dpcdRevisionMinor = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
#define NV_DPCD20_DSC_PASS_THROUGH_ENABLE_NO (0x00000000) /* R-XUV */
|
||||
#define NV_DPCD20_DSC_PASS_THROUGH_ENABLE_YES (0x00000001) /* R-XUV */
|
||||
|
||||
#define NV_DPCD20_GUID_2 (0x00000040) /* R-XUR */
|
||||
|
||||
// PANEL REPLAY RELATED DPCD
|
||||
#define NV_DPCD20_PANEL_REPLAY_CAPABILITY (0x000000B0)
|
||||
#define NV_DPCD20_PANEL_REPLAY_CAPABILITY_SUPPORTED 0:0
|
||||
|
||||
@@ -36,25 +36,25 @@
|
||||
// and then checked back in. You cannot make changes to these sections without
|
||||
// corresponding changes to the buildmeister script
|
||||
#ifndef NV_BUILD_BRANCH
|
||||
#define NV_BUILD_BRANCH r515_00
|
||||
#define NV_BUILD_BRANCH r516_87
|
||||
#endif
|
||||
#ifndef NV_PUBLIC_BRANCH
|
||||
#define NV_PUBLIC_BRANCH r515_00
|
||||
#define NV_PUBLIC_BRANCH r516_87
|
||||
#endif
|
||||
|
||||
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS)
|
||||
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r515/r515_00-269"
|
||||
#define NV_BUILD_CHANGELIST_NUM (31485447)
|
||||
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r515/r516_87-317"
|
||||
#define NV_BUILD_CHANGELIST_NUM (31589401)
|
||||
#define NV_BUILD_TYPE "Official"
|
||||
#define NV_BUILD_NAME "rel/gpu_drv/r515/r515_00-269"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (31485447)
|
||||
#define NV_BUILD_NAME "rel/gpu_drv/r515/r516_87-317"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (31589401)
|
||||
|
||||
#else /* Windows builds */
|
||||
#define NV_BUILD_BRANCH_VERSION "r515_00-210"
|
||||
#define NV_BUILD_CHANGELIST_NUM (31485447)
|
||||
#define NV_BUILD_BRANCH_VERSION "r516_87-1"
|
||||
#define NV_BUILD_CHANGELIST_NUM (31588177)
|
||||
#define NV_BUILD_TYPE "Official"
|
||||
#define NV_BUILD_NAME "516.56"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (31485447)
|
||||
#define NV_BUILD_NAME "516.90"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (31588177)
|
||||
#define NV_BUILD_BRANCH_BASE_VERSION R515
|
||||
#endif
|
||||
// End buildmeister python edited section
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) || defined(NV_VMWARE) || defined(NV_QNX) || defined(NV_INTEGRITY) || \
|
||||
(defined(RMCFG_FEATURE_PLATFORM_GSP) && RMCFG_FEATURE_PLATFORM_GSP == 1)
|
||||
|
||||
#define NV_VERSION_STRING "515.57"
|
||||
#define NV_VERSION_STRING "515.65.01"
|
||||
|
||||
#else
|
||||
|
||||
|
||||
@@ -3424,7 +3424,7 @@ nvlink_lib_ctrl_get_device_link_states
|
||||
NvU32 i = 0;
|
||||
|
||||
nvlink_link **links = (nvlink_link **)nvlink_malloc(
|
||||
sizeof(nvlink_link *) * NVLINK_MAX_NVLINK_ENDPOINTS);
|
||||
sizeof(nvlink_link *) * NVLINK_MAX_SYSTEM_LINK_NUM);
|
||||
if (links == NULL)
|
||||
{
|
||||
return NVL_NO_MEM;
|
||||
|
||||
Reference in New Issue
Block a user