545.23.06

This commit is contained in:
Andy Ritger
2023-10-17 09:25:29 -07:00
parent f59818b751
commit b5bf85a8e3
917 changed files with 132480 additions and 110015 deletions

View File

@@ -76,6 +76,13 @@ namespace DisplayPort
DP_TRANSPORT_MODE_MULTI_STREAM = 2,
} DP_TRANSPORT_MODE;
// Information required during compound query attach for MST
typedef struct _CompoundQueryAttachMSTInfo
{
ModesetInfo localModesetInfo;
LinkConfiguration lc;
} CompoundQueryAttachMSTInfo;
struct ConnectorImpl : public Connector, DiscoveryManager::DiscoveryManagerEventSink, Timer::TimerCallback, MessageManager::MessageReceiver::MessageReceiverEventSink
{
// DPCD HAL Layer - We should use this in place of direct register accesses
@@ -93,12 +100,14 @@ namespace DisplayPort
unsigned cachedSourceOUI;
char cachedSourceModelName[NV_DPCD_SOURCE_DEV_ID_STRING__SIZE + 1];
NvU8 cachedSourceChipRevision;
bool bOuiCached;
unsigned ouiId; // Sink ouiId
char modelName[NV_DPCD_SOURCE_DEV_ID_STRING__SIZE + 1]; // Device Model-name
bool bIgnoreSrcOuiHandshake; // Skip writing source OUI
LinkPolicy linkPolicy;
LinkPolicy linkPolicy;
bool linkGuessed; // True when link was "guessed" during HPD in TMDS mode
bool isLinkQuiesced; // True when link was set to quiet mode by TMDS modeset
@@ -176,11 +185,14 @@ namespace DisplayPort
LinkedList<GroupImpl> addStreamMSTIntransitionGroups;
List inactiveGroups;
LinkedList<Device> dscEnabledDevices;
// Compound query
bool compoundQueryActive;
bool compoundQueryResult;
unsigned compoundQueryCount;
unsigned compoundQueryLocalLinkPBN;
bool compoundQueryForceEnableFEC;
unsigned freeSlots, maximumSlots;
@@ -334,13 +346,8 @@ namespace DisplayPort
//
bool bPowerDownPhyBeforeD3;
//
// Reset the MSTM_CTRL registers on Synaptics branch device irrespective of
// IRQ VECTOR register having stale message. Synaptics device needs to reset
// the topology before issue of new LAM message if previous LAM was not finished
// bug 3928070
//
bool bForceClearPendingMsg;
Group *perHeadAttachedGroup[NV_MAX_HEADS];
NvU32 inTransitionHeadMask;
void sharedInit();
ConnectorImpl(MainLink * main, AuxBus * auxBus, Timer * timer, Connector::EventSink * sink);
@@ -386,6 +393,7 @@ namespace DisplayPort
}
void populateAllDpConfigs();
virtual LinkRates* importDpLinkRates();
//
// Suspend resume API
@@ -403,7 +411,7 @@ namespace DisplayPort
virtual Device * enumDevices(Device * previousDevice) ;
virtual void beginCompoundQuery() ;
virtual void beginCompoundQuery(const bool bForceEnableFEC = false) ;
virtual bool compoundQueryAttach(Group * target,
unsigned twoChannelAudioHz, // if you need 192khz stereo specify 192000 here
unsigned eightChannelAudioHz, // Same setting for multi channel audio.
@@ -413,14 +421,56 @@ namespace DisplayPort
unsigned rasterHeight,
unsigned rasterBlankStartX,
unsigned rasterBlankEndX,
unsigned depth);
unsigned depth,
DP_IMP_ERROR *errorStatus = NULL);
virtual bool compoundQueryAttach(Group * target,
const DpModesetParams &modesetParams, // Modeset info
DscParams *pDscParams = NULL); // DSC parameters
DscParams *pDscParams = NULL, // DSC parameters
DP_IMP_ERROR *pErrorCode = NULL); // Error Status code
virtual bool endCompoundQuery();
virtual bool dpLinkIsModePossible(const DpLinkIsModePossibleParams &params);
virtual bool compoundQueryAttachMST(Group * target,
const DpModesetParams &modesetParams, // Modeset info
DscParams *pDscParams = NULL, // DSC parameters
DP_IMP_ERROR *pErrorCode = NULL); // Error Status code
virtual bool compoundQueryAttachMSTIsDscPossible
(
Group * target,
const DpModesetParams &modesetParams, // Modeset info
DscParams *pDscParams = NULL // DSC parameters
);
// Calculate and Configure SW state based on DSC
virtual bool compoundQueryAttachMSTDsc
(
Group * target,
const DpModesetParams &modesetParams, // Modeset info
CompoundQueryAttachMSTInfo * info, // local info to update for later use
DscParams *pDscParams = NULL, // DSC parameters
DP_IMP_ERROR *pErrorCode = NULL // Error Status code
);
// General part of CQA MST for DSC/non-DSC
virtual bool compoundQueryAttachMSTGeneric
(
Group * target,
const DpModesetParams &modesetParams, // Modeset info
CompoundQueryAttachMSTInfo * info, // local info with updates for DSC
DscParams *pDscParams = NULL, // DSC parameters
DP_IMP_ERROR *pErrorCode = NULL // Error Status code
);
virtual bool compoundQueryAttachSST(Group * target,
const DpModesetParams &modesetParams, // Modeset info
DscParams *pDscParams = NULL, // DSC parameters
DP_IMP_ERROR *pErrorCode = NULL); // Error Status code
//
// Timer callback tags.
// (we pass the address of these variables as context to ::expired)
@@ -458,6 +508,11 @@ namespace DisplayPort
virtual bool notifyAttachBegin(Group * target, // Group of panels we're attaching to this head
const DpModesetParams &modesetParams);
bool needToEnableFEC(const DpPreModesetParams &params);
virtual void dpPreModeset(const DpPreModesetParams &modesetParams);
virtual void dpPostModeset(void);
virtual bool isHeadShutDownNeeded(Group * target, // Group of panels we're attaching to this head
unsigned headIndex,
unsigned twoChannelAudioHz, // if you need 192khz stereo specify 192000 here
@@ -559,6 +614,7 @@ namespace DisplayPort
void handleHdmiLinkStatusChanged();
void sortActiveGroups(bool ascending);
void configInit();
void handlePanelReplayError();
virtual DeviceImpl* findDeviceInList(const Address & address);
virtual void disconnectDeviceList();
@@ -584,6 +640,7 @@ namespace DisplayPort
virtual void setDp11ProtocolForced();
virtual void resetDp11ProtocolForced();
virtual bool isDp11ProtocolForced();
bool isAcpiInitDone();
virtual void notifyAcpiInitDone();
Group * createFirmwareGroup();
@@ -609,6 +666,8 @@ namespace DisplayPort
virtual bool readPsrState(vesaPsrState *psrState);
virtual bool updatePsrLinkState(bool bTrainLink);
virtual bool readPrSinkDebugInfo(panelReplaySinkDebugInfo *prDbgInfo);
// for dp test utility. pBuffer is the request buffer of type DP_STATUS_REQUEST_xxxx
DP_TESTMESSAGE_STATUS sendDPTestMessage(void *pBuffer,
NvU32 requestSize,