mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-01-31 05:29:47 +00:00
530.41.03
This commit is contained in:
@@ -215,6 +215,10 @@ namespace DisplayPort
|
||||
|
||||
virtual NvBool isDSCSupported() = 0;
|
||||
|
||||
virtual NvBool isDSCDecompressionSupported() = 0;
|
||||
|
||||
virtual NvBool isDSCPassThroughSupported() = 0;
|
||||
|
||||
virtual DscCaps getDscCaps() = 0;
|
||||
|
||||
//
|
||||
|
||||
@@ -449,6 +449,7 @@ namespace DisplayPort
|
||||
bool getFECSupport();
|
||||
NvBool isDSCPassThroughSupported();
|
||||
NvBool isDSCSupported();
|
||||
NvBool isDSCDecompressionSupported();
|
||||
NvBool isDSCPossible();
|
||||
bool isFECSupported();
|
||||
bool readAndParseDSCCaps();
|
||||
|
||||
@@ -5546,7 +5546,8 @@ void ConnectorImpl::notifyLongPulse(bool statusConnected)
|
||||
|
||||
if (existingDev && existingDev->isFakedMuxDevice() && !bIsMuxOnDgpu)
|
||||
{
|
||||
DP_LOG((" NotifyLongPulse ignored as mux is not pointing to dGPU and there is a faked device"));
|
||||
DP_LOG((" NotifyLongPulse ignored as mux is not pointing to dGPU and there is a faked device. Marking detect complete"));
|
||||
sink->notifyDetectComplete();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -6520,6 +6521,7 @@ void ConnectorImpl::createFakeMuxDevice(const NvU8 *buffer, NvU32 bufferSize)
|
||||
|
||||
// Initialize DSC state
|
||||
newDev->dscCaps.bDSCSupported = true;
|
||||
newDev->dscCaps.bDSCDecompressionSupported = true;
|
||||
newDev->parseDscCaps(buffer, bufferSize);
|
||||
dpMemCopy(newDev->rawDscCaps, buffer, DP_MIN(bufferSize, 16));
|
||||
newDev->bDSCPossible = true;
|
||||
|
||||
@@ -1560,7 +1560,11 @@ NvBool DeviceImpl::getDSCSupport()
|
||||
{
|
||||
if (FLD_TEST_DRF(_DPCD14, _DSC_SUPPORT, _DSC_SUPPORT, _YES, byte))
|
||||
{
|
||||
dscCaps.bDSCSupported = true;
|
||||
dscCaps.bDSCDecompressionSupported = true;
|
||||
}
|
||||
if (FLD_TEST_DRF(_DPCD20, _DSC_SUPPORT, _PASS_THROUGH_SUPPORT, _YES, byte))
|
||||
{
|
||||
dscCaps.bDSCPassThroughSupported = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1569,6 +1573,11 @@ NvBool DeviceImpl::getDSCSupport()
|
||||
DP_LOG(("DP-DEV> DSC Support AUX READ failed for %s!", address.toString(sb)));
|
||||
}
|
||||
|
||||
if (dscCaps.bDSCDecompressionSupported || dscCaps.bDSCPassThroughSupported)
|
||||
{
|
||||
dscCaps.bDSCSupported = true;
|
||||
}
|
||||
|
||||
return dscCaps.bDSCSupported;
|
||||
}
|
||||
|
||||
@@ -1687,6 +1696,11 @@ NvBool DeviceImpl::isDSCSupported()
|
||||
return dscCaps.bDSCSupported;
|
||||
}
|
||||
|
||||
NvBool DeviceImpl::isDSCDecompressionSupported()
|
||||
{
|
||||
return dscCaps.bDSCDecompressionSupported;
|
||||
}
|
||||
|
||||
NvBool DeviceImpl::isDSCPassThroughSupported()
|
||||
{
|
||||
return dscCaps.bDSCPassThroughSupported;
|
||||
@@ -2027,7 +2041,7 @@ void DeviceImpl::setDscDecompressionDevice(bool bDscCapBasedOnParent)
|
||||
this->devDoingDscDecompression = this;
|
||||
this->bDSCPossible = true;
|
||||
}
|
||||
else if (this->parent->isDSCSupported())
|
||||
else if (this->parent->isDSCDecompressionSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of DSC capable sink devices
|
||||
@@ -2040,12 +2054,15 @@ void DeviceImpl::setDscDecompressionDevice(bool bDscCapBasedOnParent)
|
||||
}
|
||||
else
|
||||
{
|
||||
// This condition takes care of branch device capable of DSC.
|
||||
this->devDoingDscDecompression = this;
|
||||
this->bDSCPossible = true;
|
||||
if (this->isDSCDecompressionSupported())
|
||||
{
|
||||
// This condition takes care of branch device capable of DSC decoding.
|
||||
this->devDoingDscDecompression = this;
|
||||
this->bDSCPossible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (this->parent && this->parent->isDSCSupported())
|
||||
else if (this->parent && this->parent->isDSCDecompressionSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of sink devices not capable of DSC
|
||||
@@ -2058,7 +2075,7 @@ void DeviceImpl::setDscDecompressionDevice(bool bDscCapBasedOnParent)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this->isDSCSupported())
|
||||
if (this->isDSCDecompressionSupported())
|
||||
{
|
||||
this->bDSCPossible = true;
|
||||
this->devDoingDscDecompression = this;
|
||||
|
||||
@@ -240,6 +240,7 @@ typedef enum
|
||||
typedef struct DscCaps
|
||||
{
|
||||
NvBool bDSCSupported;
|
||||
NvBool bDSCDecompressionSupported;
|
||||
NvBool bDSCPassThroughSupported;
|
||||
unsigned versionMajor, versionMinor;
|
||||
unsigned rcBufferBlockSize;
|
||||
|
||||
@@ -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 r530_99
|
||||
#define NV_BUILD_BRANCH r531_37
|
||||
#endif
|
||||
#ifndef NV_PUBLIC_BRANCH
|
||||
#define NV_PUBLIC_BRANCH r530_99
|
||||
#define NV_PUBLIC_BRANCH r531_37
|
||||
#endif
|
||||
|
||||
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS)
|
||||
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r530/r530_99-89"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32484765)
|
||||
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r530/r531_37-121"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32603126)
|
||||
#define NV_BUILD_TYPE "Official"
|
||||
#define NV_BUILD_NAME "rel/gpu_drv/r530/r530_99-89"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32484765)
|
||||
#define NV_BUILD_NAME "rel/gpu_drv/r530/r531_37-121"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32603126)
|
||||
|
||||
#else /* Windows builds */
|
||||
#define NV_BUILD_BRANCH_VERSION "r530_99-8"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32470325)
|
||||
#define NV_BUILD_BRANCH_VERSION "r531_37-1"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32601466)
|
||||
#define NV_BUILD_TYPE "Official"
|
||||
#define NV_BUILD_NAME "531.08"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32470325)
|
||||
#define NV_BUILD_NAME "531.40"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32601466)
|
||||
#define NV_BUILD_BRANCH_BASE_VERSION R530
|
||||
#endif
|
||||
// End buildmeister python edited section
|
||||
|
||||
@@ -448,6 +448,7 @@ static const PNPVendorId PNPVendorIds[] =
|
||||
{ "SEA", _VENDOR_NAME_ENTRY("Segate") },
|
||||
{ "SEC", _VENDOR_NAME_ENTRY("Seiko/Epson") },
|
||||
{ "SEN", _VENDOR_NAME_ENTRY("Sencore") },
|
||||
{ "SFL", _VENDOR_NAME_ENTRY("Shiftall Inc") },
|
||||
{ "SGT", _VENDOR_NAME_ENTRY("Stargate Technology/AT&T") },
|
||||
{ "SGX", _VENDOR_NAME_ENTRY("SGI") },
|
||||
{ "SHP", _VENDOR_NAME_ENTRY("Sharp") },
|
||||
|
||||
@@ -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 "530.30.02"
|
||||
#define NV_VERSION_STRING "530.41.03"
|
||||
|
||||
#else
|
||||
|
||||
|
||||
@@ -2103,8 +2103,8 @@ NvU32 NvTiming_EDIDValidationMask(NvU8 *pEdid, NvU32 length, NvBool bIsStrongVal
|
||||
|
||||
// validate DTD blocks
|
||||
pDTD = (DETAILEDTIMINGDESCRIPTOR *)&pExt[((EIA861EXTENSION *)pExt)->offset];
|
||||
while (pDTD->wDTPixelClock != 0 &&
|
||||
(NvU8 *)pDTD - pExt < (int)sizeof(EIA861EXTENSION))
|
||||
while ((pDTD->wDTPixelClock != 0) &&
|
||||
(((NvU8 *)pDTD - pExt + sizeof(DETAILEDTIMINGDESCRIPTOR)) < ((NvU8)sizeof(EIA861EXTENSION) - 1)))
|
||||
{
|
||||
if (parseEdidDetailedTimingDescriptor((NvU8 *)pDTD, NULL) != NVT_STATUS_SUCCESS)
|
||||
{
|
||||
@@ -2351,8 +2351,8 @@ NvU32 NvTiming_EDIDStrongValidationMask(NvU8 *pEdid, NvU32 length)
|
||||
|
||||
// validate DTD blocks
|
||||
pDTD = (DETAILEDTIMINGDESCRIPTOR *)&pExt[((EIA861EXTENSION *)pExt)->offset];
|
||||
while (pDTD->wDTPixelClock != 0 &&
|
||||
(NvU8 *)pDTD - pExt < (int)sizeof(EIA861EXTENSION))
|
||||
while ((pDTD->wDTPixelClock != 0) &&
|
||||
(((NvU8 *)pDTD - pExt + sizeof(DETAILEDTIMINGDESCRIPTOR)) < ((NvU8)sizeof(EIA861EXTENSION) -1)))
|
||||
{
|
||||
if (parseEdidDetailedTimingDescriptor((NvU8 *)pDTD, NULL) != NVT_STATUS_SUCCESS)
|
||||
ret |= NVT_EDID_VALIDATION_ERR_MASK(NVT_EDID_VALIDATION_ERR_EXT_DTD);
|
||||
|
||||
@@ -397,7 +397,7 @@ void parse861ExtDetailedTiming(NvU8 *pEdidExt,
|
||||
// Get all detailed timings in CEA ext block
|
||||
pDTD = (DETAILEDTIMINGDESCRIPTOR *)&pEdidExt[pEIA861->offset];
|
||||
|
||||
while((NvU8 *)pDTD < (pEdidExt + sizeof(EDIDV1STRUC)) && // Check that we're not going beyond this extension block.
|
||||
while((NvU8 *)pDTD + sizeof(DETAILEDTIMINGDESCRIPTOR) < (pEdidExt + sizeof(EDIDV1STRUC) - 1) &&
|
||||
pDTD->wDTPixelClock != 0)
|
||||
{
|
||||
NVMISC_MEMSET(&newTiming, 0, sizeof(newTiming));
|
||||
@@ -1237,6 +1237,12 @@ NVT_STATUS get861ExtInfo(NvU8 *p, NvU32 size, NVT_EDID_CEA861_INFO *p861info)
|
||||
return NVT_STATUS_ERR;
|
||||
}
|
||||
|
||||
// DTD offset sanity check
|
||||
if (p[2] >= 1 && p[2] <= 3)
|
||||
{
|
||||
return NVT_STATUS_ERR;
|
||||
}
|
||||
|
||||
// don't do anything further if p861info is NULL
|
||||
if (p861info == NULL)
|
||||
{
|
||||
@@ -1300,6 +1306,11 @@ NVT_STATUS parseCta861DataBlockInfo(NvU8 *p,
|
||||
tag = NVT_CEA861_GET_SHORT_DESCRIPTOR_TAG(p[i]);
|
||||
payload = NVT_CEA861_GET_SHORT_DESCRIPTOR_SIZE(p[i]);
|
||||
|
||||
/*don't allow data colleciton totally size larger than [127 - 5 (tag, revision, offset, describing native video format, checksum)]*/
|
||||
if ((i + payload > size) || (i + payload > 122))
|
||||
{
|
||||
return NVT_STATUS_ERR;
|
||||
}
|
||||
// move the pointer to the payload section or extended Tag Code
|
||||
i++;
|
||||
|
||||
|
||||
@@ -3253,13 +3253,26 @@ _nvswitch_ctrl_get_board_part_number
|
||||
NVSWITCH_GET_BOARD_PART_NUMBER_VECTOR *p
|
||||
)
|
||||
{
|
||||
if (!nvswitch_is_inforom_supported(device))
|
||||
if (IS_RTLSIM(device) || IS_EMULATION(device) || IS_FMODEL(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "InfoROM is not supported\n");
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"%s: Skipping retrieval of board part number on FSF\n",
|
||||
__FUNCTION__);
|
||||
|
||||
return device->hal.nvswitch_ctrl_get_board_part_number(device, p);
|
||||
nvswitch_os_memset(p, 0, sizeof(NVSWITCH_GET_BOARD_PART_NUMBER_VECTOR));
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!nvswitch_is_inforom_supported(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "InfoROM is not supported\n");
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
return device->hal.nvswitch_ctrl_get_board_part_number(device, p);
|
||||
}
|
||||
}
|
||||
|
||||
static NvlStatus
|
||||
|
||||
@@ -136,6 +136,9 @@ typedef struct NV2080_CTRL_INTERNAL_MEMSYS_GET_STATIC_CONFIG_PARAMS {
|
||||
|
||||
/*! Ampere PLC bug */
|
||||
NvBool bDisablePlcForCertainOffsetsBug3046774;
|
||||
|
||||
/*! FB override Start KB */
|
||||
NV_DECLARE_ALIGNED(NvU64 fbOverrideStartKb, 8);
|
||||
} NV2080_CTRL_INTERNAL_MEMSYS_GET_STATIC_CONFIG_PARAMS;
|
||||
|
||||
/*!
|
||||
|
||||
Reference in New Issue
Block a user