@@ -2787,13 +2787,13 @@ bool ConnectorImpl::isHeadShutDownNeeded(Group * target, // Group
27872787 // In case of mode transition (DSC <-> non-DSC), if the link config is same as previous mode, we need to shut down the head
27882788 // since VBID[6] needs to be updated accordingly
27892789 //
2790- if ((bForceHeadShutdownOnModeTransition &&
2790+ if ((bForceHeadShutdownOnModeTransition &&
27912791 ((modesetInfo.bEnableDsc && targetImpl->lastModesetInfo .bEnableDsc ) &&
27922792 (modesetInfo.bitsPerComponent != targetImpl->lastModesetInfo .bitsPerComponent ))) ||
2793- ((lowestSelected.getTotalDataRate () == activeLinkConfig.getTotalDataRate ()) &&
2794- (modesetInfo.bEnableDsc != targetImpl->lastModesetInfo .bEnableDsc )))
2793+ ((lowestSelected.getTotalDataRate () == activeLinkConfig.getTotalDataRate ()) &&
2794+ (modesetInfo.bEnableDsc != targetImpl->lastModesetInfo .bEnableDsc )))
27952795 {
2796- return true ;
2796+ return true ;
27972797 }
27982798
27992799 // For dual DP while changing link config, we need to shut
@@ -5358,9 +5358,9 @@ bool ConnectorImpl::getValidLowestLinkConfig
53585358 {
53595359 //
53605360 // If highest link rate is UHBR 128b132b and current selected config is 8b10b,
5361- // FEC should not be enabled if DSC is not enabled since
5362- // 1. This function will be called only for SST and that too when preferred
5363- // link config is not set.
5361+ // FEC should not be enabled if DSC is not enabled since
5362+ // 1. This function will be called only for SST and that too when preferred
5363+ // link config is not set.
53645364 // 2. for SST and in 8b10b mode, FEC is enabled only when DSC is enabled
53655365 //
53665366 selectedConfig.enableFEC (false );
@@ -5655,8 +5655,9 @@ bool ConnectorImpl::validateLinkConfiguration(const LinkConfiguration & lConfig)
56555655bool ConnectorImpl::train (const LinkConfiguration & lConfig, bool force,
56565656 LinkTrainingType trainType)
56575657{
5658- LinkTrainingType preferredTrainingType = trainType;
5659- bool result = true ;
5658+ LinkTrainingType preferredTrainingType = trainType;
5659+ bool result = true ;
5660+ NvBool bSkipSettingStreamMode = false ;
56605661
56615662 // Validate link config against caps
56625663 if (!force && !validateLinkConfiguration (lConfig))
@@ -5693,10 +5694,16 @@ bool ConnectorImpl::train(const LinkConfiguration & lConfig, bool force,
56935694 }
56945695
56955696 //
5696- // Don't set the stream if we're shutting off the link
5697- // or forcing the config
5697+ // Don't set the stream if we're:
5698+ // - forcing the config
5699+ // - Skipping LT and the flag to skip stream mode setting is true
5700+ // - shutting off the link
56985701 //
5699- if (!force && lConfig.lanes != 0 )
5702+ bSkipSettingStreamMode = force ||
5703+ (bSkipLt && this ->bSkipResetMSTMBeforeLt ) ||
5704+ (lConfig.lanes == 0 );
5705+
5706+ if (!bSkipSettingStreamMode)
57005707 {
57015708 if (isLinkActive ())
57025709 {
@@ -7009,6 +7016,8 @@ void ConnectorImpl::notifyLongPulseInternal(bool statusConnected)
70097016 {
70107017 bDelayAfterD3 = true ;
70117018 }
7019+ // Do not reset MST_EN before LT for Sony SDM27Q10S in SST mode
7020+ this ->bSkipResetMSTMBeforeLt = tmpEdid.WARFlags .bSkipResetMSTMBeforeLt ;
70127021
70137022 // Panels use Legacy address range for interrupt reporting
70147023 if (tmpEdid.WARFlags .useLegacyAddress )
@@ -8294,6 +8303,7 @@ void ConnectorImpl::configInit()
82948303 bDP2XPreferNonDSCForLowPClk = false ;
82958304 bDisableDscMaxBppLimit = false ;
82968305 bForceHeadShutdownOnModeTransition = false ;
8306+ bSkipResetMSTMBeforeLt = false ;
82978307}
82988308
82998309bool ConnectorImpl::dpUpdateDscStream (Group *target, NvU32 dscBpp)
0 commit comments