mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-03-04 04:39:49 +00:00
525.47.04
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -245,6 +245,7 @@ namespace DisplayPort
|
||||
public:
|
||||
virtual bool getOuiSupported() = 0;
|
||||
virtual AuxRetry::status setOuiSource(unsigned ouiId, const char * model, size_t modelNameLength, NvU8 chipRevision) = 0;
|
||||
virtual bool getOuiSource(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision) = 0;
|
||||
virtual bool getOuiSink(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -89,6 +89,11 @@ namespace DisplayPort
|
||||
Timer * timer; // OS provided timer services
|
||||
Connector::EventSink * sink; // Event Sink
|
||||
|
||||
// Cached Source OUI for restoring eDP OUI when powering up
|
||||
unsigned cachedSourceOUI;
|
||||
char cachedSourceModelName[NV_DPCD_SOURCE_DEV_ID_STRING__SIZE + 1];
|
||||
NvU8 cachedSourceChipRevision;
|
||||
|
||||
unsigned ouiId; // Sink ouiId
|
||||
char modelName[NV_DPCD_SOURCE_DEV_ID_STRING__SIZE + 1]; // Device Model-name
|
||||
bool bIgnoreSrcOuiHandshake; // Skip writing source OUI
|
||||
@@ -294,6 +299,8 @@ namespace DisplayPort
|
||||
bool bEnableFastLT;
|
||||
NvU32 maxLinkRateFromRegkey;
|
||||
|
||||
bool bEnableOuiRestoring;
|
||||
|
||||
//
|
||||
// Latency(ms) to apply between link-train and FEC enable for bug
|
||||
// 2561206.
|
||||
@@ -322,6 +329,12 @@ namespace DisplayPort
|
||||
//
|
||||
bool bDscCapBasedOnParent;
|
||||
|
||||
//
|
||||
// MST device connnected to dock may issue IRQ for link lost.
|
||||
// Send PowerDown path msg to suppress that.
|
||||
//
|
||||
bool bPowerDownPhyBeforeD3;
|
||||
|
||||
void sharedInit();
|
||||
ConnectorImpl(MainLink * main, AuxBus * auxBus, Timer * timer, Connector::EventSink * sink);
|
||||
|
||||
|
||||
@@ -385,6 +385,11 @@ namespace DisplayPort
|
||||
void pbnRequired(const ModesetInfo & modesetInfo, unsigned & base_pbn, unsigned & slots, unsigned & slots_pbn)
|
||||
{
|
||||
base_pbn = pbnForMode(modesetInfo);
|
||||
if (bEnableFEC)
|
||||
{
|
||||
// IF FEC is enabled, we need to consider 3% overhead as per DP1.4 spec.
|
||||
base_pbn = (NvU32)(divide_ceil(base_pbn * 100, 97));
|
||||
}
|
||||
slots = slotsForPBN(base_pbn);
|
||||
slots_pbn = PBNForSlots(slots);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -59,6 +59,12 @@
|
||||
|
||||
#define NV_DP_REGKEY_FORCE_EDP_ILR "DP_BYPASS_EDP_ILR_REV_CHECK"
|
||||
|
||||
// Regkey to enable OUI caching/restoring in release branch.
|
||||
#define NV_DP_REGKEY_ENABLE_OUI_RESTORING "DP_ENABLE_OUI_RESTORING"
|
||||
|
||||
// Message to power down video stream before power down link (set D3)
|
||||
#define NV_DP_REGKEY_POWER_DOWN_PHY "DP_POWER_DOWN_PHY"
|
||||
|
||||
//
|
||||
// DSC capability of downstream device should be decided based on device's own
|
||||
// and its parent's DSC capability.
|
||||
@@ -96,6 +102,8 @@ struct DP_REGKEY_DATABASE
|
||||
bool bOptLinkKeptAliveSst;
|
||||
bool bBypassEDPRevCheck;
|
||||
bool bDscMstCapBug3143315;
|
||||
bool bEnableOuiRestoring;
|
||||
bool bPowerDownPhyBeforeD3;
|
||||
};
|
||||
|
||||
#endif //INCLUDED_DP_REGKEYDATABASE_H
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -863,6 +863,42 @@ struct DPCDHALImpl : DPCDHAL
|
||||
return bus.write(NV_DPCD_SOURCE_IEEE_OUI, &ouiBuffer[0], sizeof ouiBuffer);
|
||||
}
|
||||
|
||||
virtual bool getOuiSource(unsigned &ouiId, char * modelName,
|
||||
size_t modelNameBufferSize, NvU8 & chipRevision)
|
||||
{
|
||||
NvU8 ouiBuffer[16];
|
||||
int address = NV_DPCD_SOURCE_IEEE_OUI;
|
||||
|
||||
if (caps.revisionMajor <= 0)
|
||||
DP_ASSERT(0 && "Something is wrong, revision major should be > 0");
|
||||
|
||||
// If buffer size is larger than dev_id size, the extras are not used.
|
||||
// If buffer size is smaller, than we can only get certain bytes.
|
||||
if (modelNameBufferSize > NV_DPCD_SOURCE_DEV_ID_STRING__SIZE)
|
||||
{
|
||||
modelNameBufferSize = NV_DPCD_SOURCE_DEV_ID_STRING__SIZE;
|
||||
}
|
||||
|
||||
if (AuxRetry::ack != bus.read(address, &ouiBuffer[0], sizeof ouiBuffer))
|
||||
{
|
||||
*modelName = 0;
|
||||
ouiId = 0;
|
||||
chipRevision = 0;
|
||||
return false;
|
||||
}
|
||||
// The first 3 bytes are IEEE_OUI. 2 hex digits per register.
|
||||
ouiId = ouiBuffer[0] | (ouiBuffer[1] << 8) | (ouiBuffer[2] << 16);
|
||||
|
||||
// Next 6 bytes are Device Identification String, copy as much as we can (limited buffer case).
|
||||
unsigned int i;
|
||||
for (i = 0; i < modelNameBufferSize; i++)
|
||||
modelName[i] = ouiBuffer[3+i];
|
||||
|
||||
chipRevision = ouiBuffer[9];
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool getOuiSink(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision)
|
||||
{
|
||||
NvU8 ouiBuffer[16];
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -188,6 +188,8 @@ void ConnectorImpl::applyRegkeyOverrides(const DP_REGKEY_DATABASE& dpRegkeyDatab
|
||||
this->bDisableSSC = dpRegkeyDatabase.bSscDisabled;
|
||||
this->bEnableFastLT = dpRegkeyDatabase.bFastLinkTrainingEnabled;
|
||||
this->bDscMstCapBug3143315 = dpRegkeyDatabase.bDscMstCapBug3143315;
|
||||
this->bEnableOuiRestoring = dpRegkeyDatabase.bEnableOuiRestoring;
|
||||
this->bPowerDownPhyBeforeD3 = dpRegkeyDatabase.bPowerDownPhyBeforeD3;
|
||||
}
|
||||
|
||||
void ConnectorImpl::setPolicyModesetOrderMitigation(bool enabled)
|
||||
@@ -704,6 +706,13 @@ create:
|
||||
|
||||
newDev->applyOUIOverrides();
|
||||
|
||||
if (main->isEDP() && this->bEnableOuiRestoring)
|
||||
{
|
||||
// Save Source OUI information for eDP.
|
||||
hal->getOuiSource(cachedSourceOUI, &cachedSourceModelName[0],
|
||||
sizeof(cachedSourceModelName), cachedSourceChipRevision);
|
||||
}
|
||||
|
||||
fireEvents();
|
||||
}
|
||||
|
||||
@@ -1178,7 +1187,7 @@ bool ConnectorImpl::compoundQueryAttach(Group * target,
|
||||
this->isFECSupported() && // If GPU supports FEC
|
||||
pDscParams && // If client sent DSC info
|
||||
pDscParams->bCheckWithDsc && // If client wants to check with DSC
|
||||
(dev && dev->isDSCPossible()) && // Either device or it's parent supports DSC
|
||||
(dev && dev->devDoingDscDecompression) && // Either device or it's parent supports DSC
|
||||
bFecCapable && // If path up to dsc decoding device supports FEC
|
||||
(modesetParams.modesetInfo.bitsPerComponent != 6)) // DSC doesn't support bpc = 6
|
||||
{
|
||||
@@ -1239,9 +1248,13 @@ bool ConnectorImpl::compoundQueryAttach(Group * target,
|
||||
(modesetParams.colorFormat == dpColorFormat_YCbCr444 && !dev->parent->dscCaps.dscDecoderColorFormatCaps.bYCbCr444) ||
|
||||
(modesetParams.colorFormat == dpColorFormat_YCbCr422 && !dev->parent->dscCaps.dscDecoderColorFormatCaps.bYCbCrSimple422))
|
||||
{
|
||||
if (pDscParams->forceDsc == DSC_FORCE_ENABLE)
|
||||
if ((pDscParams->forceDsc == DSC_FORCE_ENABLE) ||
|
||||
(modesetParams.modesetInfo.mode == DSC_DUAL))
|
||||
{
|
||||
// If DSC is force enabled then return failure here
|
||||
//
|
||||
// If DSC is force enabled or DSC_DUAL mode is requested,
|
||||
// then return failure here
|
||||
//
|
||||
compoundQueryResult = false;
|
||||
pDscParams->bEnableDsc = false;
|
||||
return false;
|
||||
@@ -1270,9 +1283,24 @@ bool ConnectorImpl::compoundQueryAttach(Group * target,
|
||||
(NvU32*)(PPS),
|
||||
(NvU32*)(&bitsPerPixelX16))) != NVT_STATUS_SUCCESS)
|
||||
{
|
||||
if (pDscParams->forceDsc == DSC_FORCE_ENABLE)
|
||||
//
|
||||
// If generating PPS failed
|
||||
// AND
|
||||
// (DSC is force enabled
|
||||
// OR
|
||||
// the requested DSC mode = DUAL)
|
||||
//then
|
||||
// return failure here
|
||||
// Else
|
||||
// we will check if non DSC path is possible.
|
||||
//
|
||||
// If dsc mode = DUAL failed to generate PPS and if we pursue
|
||||
// non DSC path, DD will still follow 2Head1OR modeset path with
|
||||
// DSC disabled, eventually leading to HW hang. Bug 3632901
|
||||
//
|
||||
if ((pDscParams->forceDsc == DSC_FORCE_ENABLE) ||
|
||||
(modesetParams.modesetInfo.mode == DSC_DUAL))
|
||||
{
|
||||
// If DSC is force enabled then return failure here
|
||||
compoundQueryResult = false;
|
||||
pDscParams->bEnableDsc = false;
|
||||
return false;
|
||||
@@ -2667,6 +2695,21 @@ bool ConnectorImpl::notifyAttachBegin(Group * target, // Gr
|
||||
this->bFECEnable |= bEnableFEC;
|
||||
highestAssessedLC.enableFEC(this->bFECEnable);
|
||||
|
||||
if (main->isEDP() && this->bEnableOuiRestoring)
|
||||
{
|
||||
// Power-up eDP and restore eDP OUI if it's powered off now.
|
||||
bool bPanelPowerOn;
|
||||
main->getEdpPowerData(&bPanelPowerOn, NULL);
|
||||
if (!bPanelPowerOn)
|
||||
{
|
||||
main->configurePowerState(true);
|
||||
hal->setOuiSource(cachedSourceOUI,
|
||||
&cachedSourceModelName[0],
|
||||
6 /* string length of ieeeOuiDevId */,
|
||||
cachedSourceChipRevision);
|
||||
}
|
||||
}
|
||||
|
||||
// if failed, we're guaranteed that assessed link rate didn't meet the mode requirements
|
||||
// isZombie() will catch this
|
||||
bLinkTrainingStatus = trainLinkOptimized(getMaxLinkConfig());
|
||||
@@ -3248,6 +3291,22 @@ void ConnectorImpl::powerdownLink(bool bPowerdownPanel)
|
||||
powerOff.lanes = 0;
|
||||
// Inform Sink about Main Link Power Down.
|
||||
|
||||
if (linkUseMultistream() && bPowerDownPhyBeforeD3)
|
||||
{
|
||||
PowerDownPhyMessage powerDownPhyMsg;
|
||||
NakData nack;
|
||||
|
||||
for (Device * i = enumDevices(0); i; i=enumDevices(i))
|
||||
{
|
||||
if (i->isPlugged() && i->isVideoSink())
|
||||
{
|
||||
Address devAddress = ((DeviceImpl*)i)->address;
|
||||
powerDownPhyMsg.set(devAddress.parent(), devAddress.tail(), NV_TRUE);
|
||||
this->messageManager->send(&powerDownPhyMsg, nack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// 1> If it is eDP and the power is not on, we don't need to put it into D3 here
|
||||
// 2> If FEC is enabled then we have to put panel in D3 after powering down mainlink
|
||||
|
||||
@@ -920,23 +920,31 @@ void DeviceImpl::applyOUIOverrides()
|
||||
if ((buffer[3] == 0x53) && (buffer[4] == 0x59) && (buffer[5] == 0x4E) && (buffer[6] == 0x41))
|
||||
{
|
||||
// For Synaptic VMM5331 and VMM5320, it only support MSA-Over-MST for DP after Firmware 5.4.5
|
||||
if (buffer[7] == 0x53 &&
|
||||
(buffer[8] == 0x31 || buffer[8] == 0x20))
|
||||
if (buffer[7] == 0x53)
|
||||
{
|
||||
this->bSdpExtCapable = False;
|
||||
//
|
||||
// This flag will be checked only in DSC Pass through cases (MST).
|
||||
// All Synaptics VMM53XX chips which support pass through can only support
|
||||
// color formats that are listed in 0x69h even in pass through mode.
|
||||
//
|
||||
this->bDscPassThroughColorFormatWar = true;
|
||||
|
||||
//
|
||||
// Check firmware version
|
||||
// 0x50A: FW/SW Major Revision.
|
||||
// 0x50B: FW/SW Minor Revision.
|
||||
// 0x50C: Build Number.
|
||||
//
|
||||
if ((buffer[10] >= 0x06) ||
|
||||
((buffer[10] == 0x05) && (buffer[11] >= 0x05)) ||
|
||||
((buffer[10] == 0x05) && (buffer[11] == 0x04) && (buffer[12] >= 0x05)))
|
||||
|
||||
if ((buffer[8] == 0x31) || (buffer[8] == 0x20))
|
||||
{
|
||||
this->bSdpExtCapable = True;
|
||||
this->bSdpExtCapable = False;
|
||||
|
||||
//
|
||||
// Check firmware version
|
||||
// 0x50A: FW/SW Major Revision.
|
||||
// 0x50B: FW/SW Minor Revision.
|
||||
// 0x50C: Build Number.
|
||||
//
|
||||
if ((buffer[10] >= 0x06) ||
|
||||
((buffer[10] == 0x05) && (buffer[11] >= 0x05)) ||
|
||||
((buffer[10] == 0x05) && (buffer[11] == 0x04) && (buffer[12] >= 0x05)))
|
||||
{
|
||||
this->bSdpExtCapable = True;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,9 @@ const struct
|
||||
{NV_DP_REGKEY_KEEP_OPT_LINK_ALIVE_MST, &dpRegkeyDatabase.bOptLinkKeptAliveMst, DP_REG_VAL_BOOL},
|
||||
{NV_DP_REGKEY_KEEP_OPT_LINK_ALIVE_SST, &dpRegkeyDatabase.bOptLinkKeptAliveSst, DP_REG_VAL_BOOL},
|
||||
{NV_DP_REGKEY_FORCE_EDP_ILR, &dpRegkeyDatabase.bBypassEDPRevCheck, DP_REG_VAL_BOOL},
|
||||
{NV_DP_DSC_MST_CAP_BUG_3143315, &dpRegkeyDatabase.bDscMstCapBug3143315, DP_REG_VAL_BOOL}
|
||||
{NV_DP_DSC_MST_CAP_BUG_3143315, &dpRegkeyDatabase.bDscMstCapBug3143315, DP_REG_VAL_BOOL},
|
||||
{NV_DP_REGKEY_ENABLE_OUI_RESTORING, &dpRegkeyDatabase.bEnableOuiRestoring, DP_REG_VAL_BOOL},
|
||||
{NV_DP_REGKEY_POWER_DOWN_PHY, &dpRegkeyDatabase.bPowerDownPhyBeforeD3, DP_REG_VAL_BOOL}
|
||||
};
|
||||
|
||||
EvoMainLink::EvoMainLink(EvoInterface * provider, Timer * timer) :
|
||||
|
||||
@@ -852,21 +852,16 @@ bool DisplayPort::isModePossibleMSTWithFEC
|
||||
|
||||
unsigned DisplayPort::pbnForMode(const ModesetInfo & modesetInfo)
|
||||
{
|
||||
// When DSC is enabled consider depth will multiplied by 16
|
||||
unsigned dsc_factor = modesetInfo.bEnableDsc ? 16 : 1;
|
||||
|
||||
//
|
||||
// Calculate PBN in terms of 54/64 mbyte/sec
|
||||
// round up by .6% for spread de-rate. Note: if we're not spreading our link
|
||||
// this MUST still be counted. It's also to allow downstream links to be spread.
|
||||
//
|
||||
unsigned pbnForMode = (NvU32)(divide_ceil(modesetInfo.pixelClockHz * modesetInfo.depth * 1006 * 64 / 8,
|
||||
(NvU64)54000000 *1000));
|
||||
|
||||
if(modesetInfo.bEnableDsc)
|
||||
{
|
||||
//
|
||||
// When DSC is enabled consider depth will multiplied by 16 and also 3% FEC Overhead
|
||||
// as per DP1.4 spec
|
||||
pbnForMode = (NvU32)(divide_ceil(pbnForMode * 100, 97 * DSC_DEPTH_FACTOR));
|
||||
}
|
||||
(NvU64)54000000 * 1000 * dsc_factor));
|
||||
|
||||
return pbnForMode;
|
||||
}
|
||||
|
||||
@@ -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 r526_91
|
||||
#define NV_BUILD_BRANCH VK526_25
|
||||
#endif
|
||||
#ifndef NV_PUBLIC_BRANCH
|
||||
#define NV_PUBLIC_BRANCH r526_91
|
||||
#define NV_PUBLIC_BRANCH VK526_25
|
||||
#endif
|
||||
|
||||
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS)
|
||||
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r525/r526_91-183"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32139144)
|
||||
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r525/VK526_25-147"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32211804)
|
||||
#define NV_BUILD_TYPE "Official"
|
||||
#define NV_BUILD_NAME "rel/gpu_drv/r525/r526_91-183"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32139144)
|
||||
#define NV_BUILD_NAME "rel/gpu_drv/r525/VK526_25-147"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32211804)
|
||||
|
||||
#else /* Windows builds */
|
||||
#define NV_BUILD_BRANCH_VERSION "r526_91-9"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32103636)
|
||||
#define NV_BUILD_BRANCH_VERSION "VK526_25-7"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32211804)
|
||||
#define NV_BUILD_TYPE "Official"
|
||||
#define NV_BUILD_NAME "527.27"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32103636)
|
||||
#define NV_BUILD_NAME "527.86"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32211804)
|
||||
#define NV_BUILD_BRANCH_BASE_VERSION R525
|
||||
#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 "525.60.13"
|
||||
#define NV_VERSION_STRING "525.47.04"
|
||||
|
||||
#else
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*******************************************************************************
|
||||
Copyright (c) 2019-2022 NVidia Corporation
|
||||
Copyright (c) 2019-2020 NVidia Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
|
||||
@@ -70,7 +70,18 @@ enum
|
||||
/*!
|
||||
* Set NPORT TPROD state
|
||||
*/
|
||||
RM_SOE_CORE_CMD_SET_NPORT_TPROD_STATE
|
||||
RM_SOE_CORE_CMD_SET_NPORT_TPROD_STATE,
|
||||
|
||||
/*!
|
||||
* Read VRs
|
||||
* Needed to be in sync with chips_a defines
|
||||
*/
|
||||
RM_SOE_CORE_CMD_GET_VOLTAGE_VALUES,
|
||||
|
||||
/*!
|
||||
* Init PLM2 protected registers
|
||||
*/
|
||||
RM_SOE_CORE_CMD_INIT_L2_STATE
|
||||
};
|
||||
|
||||
// Timeout for SOE reset callback function
|
||||
@@ -132,6 +143,11 @@ typedef struct
|
||||
NvU32 nport;
|
||||
} RM_SOE_CORE_CMD_NPORT_TPROD_STATE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU8 cmdType;
|
||||
} RM_SOE_CORE_CMD_L2_STATE;
|
||||
|
||||
typedef union
|
||||
{
|
||||
NvU8 cmdType;
|
||||
@@ -141,5 +157,6 @@ typedef union
|
||||
RM_SOE_CORE_CMD_NPORT_RESET nportReset;
|
||||
RM_SOE_CORE_CMD_NPORT_STATE nportState;
|
||||
RM_SOE_CORE_CMD_NPORT_TPROD_STATE nportTprodState;
|
||||
RM_SOE_CORE_CMD_L2_STATE l2State;
|
||||
} RM_SOE_CORE_CMD;
|
||||
#endif // _SOECORE_H_
|
||||
|
||||
@@ -119,6 +119,7 @@
|
||||
_op(NvlStatus, nvswitch_deassert_link_reset, (nvswitch_device *device, nvlink_link *link), _arch) \
|
||||
_op(NvBool, nvswitch_is_soe_supported, (nvswitch_device *device), _arch) \
|
||||
_op(NvlStatus, nvswitch_init_soe, (nvswitch_device *device), _arch) \
|
||||
_op(void, nvswitch_soe_init_l2_state, (nvswitch_device *device), _arch) \
|
||||
_op(NvBool, nvswitch_is_inforom_supported, (nvswitch_device *device), _arch) \
|
||||
_op(NvBool, nvswitch_is_spi_supported, (nvswitch_device *device), _arch) \
|
||||
_op(NvBool, nvswitch_is_smbpbi_supported, (nvswitch_device *device), _arch) \
|
||||
|
||||
@@ -62,4 +62,5 @@ void nvswitch_soe_unregister_events_lr10(nvswitch_device *device);
|
||||
void nvswitch_therm_soe_callback_lr10(nvswitch_device *device, union RM_FLCN_MSG *pMsg,
|
||||
void *pParams, NvU32 seqDesc, NV_STATUS status);
|
||||
NvlStatus nvswitch_soe_register_event_callbacks_lr10(nvswitch_device *device);
|
||||
void nvswitch_soe_init_l2_state_lr10(nvswitch_device *device);
|
||||
#endif //_SOE_LR10_H_
|
||||
|
||||
@@ -42,5 +42,6 @@ void nvswitch_soe_unregister_events_ls10(nvswitch_device *device);
|
||||
NvlStatus nvswitch_soe_register_event_callbacks_ls10(nvswitch_device *device);
|
||||
NvlStatus nvswitch_soe_restore_nport_state_ls10(nvswitch_device *device, NvU32 nport);
|
||||
NvlStatus nvswitch_soe_issue_nport_reset_ls10(nvswitch_device *device, NvU32 nport);
|
||||
void nvswitch_soe_init_l2_state_ls10(nvswitch_device *device);
|
||||
|
||||
#endif //_SOE_LS10_H_
|
||||
|
||||
@@ -272,8 +272,8 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0xa6b0001d, 0x240cf409, 0x001da03e, 0x0049190f, 0x009ff711, 0x00f802f8, 0xb50294b6, 0x00f804b9,
|
||||
0xb602af92, 0xb9bc0294, 0xf400f8f9, 0x82f9d430, 0x301590b4, 0xc1b027e1, 0x0ad1b00b, 0x94b6f4bd,
|
||||
0x0c91b002, 0x900149fe, 0x9fa04499, 0x20079990, 0x0b99929f, 0x95b29fa0, 0xa0049992, 0x9297b29f,
|
||||
0x9fa00499, 0x0005dcdf, 0x90ffbf00, 0x4efe1499, 0xa0a6b201, 0x34ee909f, 0xb4b20209, 0x14bde9a0,
|
||||
0x34bd84bd, 0x001eef3e, 0x277e6ab2, 0x49bf001a, 0x4bfea2b2, 0x014cfe01, 0x9044bb90, 0x95f94bcc,
|
||||
0x9fa00499, 0x0005dcdf, 0x90ffbf00, 0x4efe1499, 0xa0a6b201, 0x34ee909f, 0xb4b20209, 0x84bde9a0,
|
||||
0x14bd34bd, 0x001eef3e, 0x277e6ab2, 0x49bf001a, 0x4bfea2b2, 0x014cfe01, 0x9044bb90, 0x95f94bcc,
|
||||
0xb31100b4, 0x008e0209, 0x9e0309b3, 0x010db300, 0x499800a8, 0xb27cb201, 0xfe5bb22a, 0xdd90014d,
|
||||
0x3295f938, 0x0be0b40c, 0xa53ed4bd, 0x5fbf001e, 0xf9a6e9bf, 0x34381bf4, 0xe89827b0, 0x987fbf01,
|
||||
0xb03302e9, 0xb0b40a00, 0x90b9bc0c, 0x1bf4f9a6, 0x1444df1e, 0xf9180000, 0x0094330c, 0x90f1b206,
|
||||
@@ -569,7 +569,7 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0x328908f4, 0xfbfa324f, 0xbf02f971, 0xbcb0b2b9, 0xb9a6b0c9, 0xe41708f4, 0xbcffffd9, 0xfba6f09b,
|
||||
0x980b08f4, 0xf9a60109, 0xf8050df4, 0xb2dc7202, 0x28d77eed, 0xb201fb00, 0x05ab98b9, 0xdeb2cfb2,
|
||||
0xfd729cb2, 0x0042a97e, 0xf0fc00f8, 0xf9fc30f4, 0xbf62f9f0, 0x08e1b0b9, 0xd4b2a5b2, 0xa630c9bc,
|
||||
0x1d08f439, 0xa6f0d3bc, 0x1508f4f3, 0xa601b998, 0x0d0cf4f9, 0x010124bd, 0x763efc06, 0x02f80043,
|
||||
0x1d08f439, 0xa6f0d3bc, 0x1508f4f3, 0xa601b998, 0x0d0cf4f9, 0x24bd0101, 0x763efc06, 0x02f80043,
|
||||
0x853e0101, 0x42bc0043, 0x0096b192, 0x060df401, 0x90010049, 0x96ff0399, 0x0b947e04, 0xb23bb200,
|
||||
0xdd0c725a, 0x00001200, 0x7e3030bc, 0x320028d7, 0x00a433a1, 0x08b0b434, 0xb209c0b4, 0x1200da2d,
|
||||
0x20bc0000, 0x01004e20, 0x0021367e, 0x0a00a033, 0x853e02f8, 0x00da0043, 0xbd000012, 0x01004cb4,
|
||||
@@ -2269,8 +2269,8 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xb32dc4cc, 0x58018cca, 0x7c52cad0, 0x4a5277fe, 0xa1f0af45, 0xc2521354, 0x427cca67, 0x3b102336,
|
||||
0x705ea2e7, 0x0577e70f, 0xcf75f41f, 0xfe6e071a, 0xcdd28e1e, 0x6000ae0f, 0x492dfb26, 0x422cf074,
|
||||
0xb32dc4cc, 0x58018cca, 0x7c52cad0, 0x4a5277fe, 0x62f5c2c4, 0xc41c2f31, 0x9af0cbcc, 0xb7efe098,
|
||||
0x705ea2e7, 0x0577e70f, 0xcf75f41f, 0xfe6e071a, 0x5f24a73a, 0x55cea6d1, 0x59205a69, 0x18a31f2d,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
@@ -272,8 +272,8 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0xa6b0001d, 0x240cf409, 0x001da03e, 0x0049190f, 0x009ff711, 0x00f802f8, 0xb50294b6, 0x00f804b9,
|
||||
0xb602af92, 0xb9bc0294, 0xf400f8f9, 0x82f9d430, 0x301590b4, 0xc1b027e1, 0x0ad1b00b, 0x94b6f4bd,
|
||||
0x0c91b002, 0x900149fe, 0x9fa04499, 0x20079990, 0x0b99929f, 0x95b29fa0, 0xa0049992, 0x9297b29f,
|
||||
0x9fa00499, 0x0005dcdf, 0x90ffbf00, 0x4efe1499, 0xa0a6b201, 0x34ee909f, 0xb4b20209, 0x14bde9a0,
|
||||
0x34bd84bd, 0x001eef3e, 0x277e6ab2, 0x49bf001a, 0x4bfea2b2, 0x014cfe01, 0x9044bb90, 0x95f94bcc,
|
||||
0x9fa00499, 0x0005dcdf, 0x90ffbf00, 0x4efe1499, 0xa0a6b201, 0x34ee909f, 0xb4b20209, 0x84bde9a0,
|
||||
0x14bd34bd, 0x001eef3e, 0x277e6ab2, 0x49bf001a, 0x4bfea2b2, 0x014cfe01, 0x9044bb90, 0x95f94bcc,
|
||||
0xb31100b4, 0x008e0209, 0x9e0309b3, 0x010db300, 0x499800a8, 0xb27cb201, 0xfe5bb22a, 0xdd90014d,
|
||||
0x3295f938, 0x0be0b40c, 0xa53ed4bd, 0x5fbf001e, 0xf9a6e9bf, 0x34381bf4, 0xe89827b0, 0x987fbf01,
|
||||
0xb03302e9, 0xb0b40a00, 0x90b9bc0c, 0x1bf4f9a6, 0x1444df1e, 0xf9180000, 0x0094330c, 0x90f1b206,
|
||||
@@ -569,7 +569,7 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0x328908f4, 0xfbfa324f, 0xbf02f971, 0xbcb0b2b9, 0xb9a6b0c9, 0xe41708f4, 0xbcffffd9, 0xfba6f09b,
|
||||
0x980b08f4, 0xf9a60109, 0xf8050df4, 0xb2dc7202, 0x28d77eed, 0xb201fb00, 0x05ab98b9, 0xdeb2cfb2,
|
||||
0xfd729cb2, 0x0042a97e, 0xf0fc00f8, 0xf9fc30f4, 0xbf62f9f0, 0x08e1b0b9, 0xd4b2a5b2, 0xa630c9bc,
|
||||
0x1d08f439, 0xa6f0d3bc, 0x1508f4f3, 0xa601b998, 0x0d0cf4f9, 0x010124bd, 0x763efc06, 0x02f80043,
|
||||
0x1d08f439, 0xa6f0d3bc, 0x1508f4f3, 0xa601b998, 0x0d0cf4f9, 0x24bd0101, 0x763efc06, 0x02f80043,
|
||||
0x853e0101, 0x42bc0043, 0x0096b192, 0x060df401, 0x90010049, 0x96ff0399, 0x0b947e04, 0xb23bb200,
|
||||
0xdd0c725a, 0x00001200, 0x7e3030bc, 0x320028d7, 0x00a433a1, 0x08b0b434, 0xb209c0b4, 0x1200da2d,
|
||||
0x20bc0000, 0x01004e20, 0x0021367e, 0x0a00a033, 0x853e02f8, 0x00da0043, 0xbd000012, 0x01004cb4,
|
||||
@@ -2269,8 +2269,8 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xb32dc4cc, 0x58018cca, 0x7c52cad0, 0x4a5277fe, 0xa1f0af45, 0xc2521354, 0x427cca67, 0x3b102336,
|
||||
0x705ea2e7, 0x0577e70f, 0xcf75f41f, 0xfe6e071a, 0xcdd28e1e, 0x6000ae0f, 0x492dfb26, 0x422cf074,
|
||||
0xb32dc4cc, 0x58018cca, 0x7c52cad0, 0x4a5277fe, 0x62f5c2c4, 0xc41c2f31, 0x9af0cbcc, 0xb7efe098,
|
||||
0x705ea2e7, 0x0577e70f, 0xcf75f41f, 0xfe6e071a, 0x5f24a73a, 0x55cea6d1, 0x59205a69, 0x18a31f2d,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
@@ -493,7 +493,7 @@ _nvswitch_inforom_read_file
|
||||
nvswitch_os_memset(pDmaBuf, 0, transferSize);
|
||||
|
||||
cmdSeqDesc = 0;
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_750MSEC_IN_NS, &timeout);
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_4SEC_IN_NS, &timeout);
|
||||
status = flcnQueueCmdPostBlocking(device, pFlcn, (PRM_FLCN_CMD)&soeCmd, NULL, NULL,
|
||||
SOE_RM_CMDQ_LOG_ID, &cmdSeqDesc, &timeout);
|
||||
if (status != NV_OK)
|
||||
@@ -591,7 +591,8 @@ _nvswitch_inforom_write_file
|
||||
}
|
||||
|
||||
cmdSeqDesc = 0;
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_750MSEC_IN_NS, &timeout);
|
||||
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_4SEC_IN_NS, &timeout);
|
||||
status = flcnQueueCmdPostBlocking(device, pFlcn, (PRM_FLCN_CMD)&soeCmd, NULL, NULL,
|
||||
SOE_RM_CMDQ_LOG_ID, &cmdSeqDesc, &timeout);
|
||||
if (status != NV_OK)
|
||||
|
||||
@@ -6791,6 +6791,8 @@ nvswitch_post_init_device_setup_lr10
|
||||
NVSWITCH_PRINT(device, SETUP, "Skipping INFOROM init\n");
|
||||
}
|
||||
|
||||
nvswitch_soe_init_l2_state(device);
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -872,6 +872,17 @@ nvswitch_init_soe_lr10
|
||||
return status;
|
||||
}
|
||||
|
||||
void
|
||||
nvswitch_soe_init_l2_state_lr10
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
NVSWITCH_PRINT(device, WARN,
|
||||
"%s: Function not implemented on lr10\n",
|
||||
__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief SOE construct
|
||||
*
|
||||
|
||||
@@ -178,7 +178,7 @@ nvswitch_bbx_unload_ls10
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
|
||||
pFlcn = device->pSoe->pFlcn;
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_750MSEC_IN_NS, &timeout);
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_4SEC_IN_NS, &timeout);
|
||||
|
||||
nvswitch_os_memset(&bbxCmd, 0, sizeof(bbxCmd));
|
||||
bbxCmd.hdr.unitId = RM_SOE_UNIT_IFR;
|
||||
@@ -217,7 +217,7 @@ nvswitch_bbx_load_ls10
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
|
||||
pFlcn = device->pSoe->pFlcn;
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_750MSEC_IN_NS, &timeout);
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_4SEC_IN_NS, &timeout);
|
||||
|
||||
nvswitch_os_memset(&bbxCmd, 0, sizeof(bbxCmd));
|
||||
bbxCmd.hdr.unitId = RM_SOE_UNIT_IFR;
|
||||
|
||||
@@ -455,6 +455,8 @@ _nvswitch_initialize_nport_interrupts_ls10
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
NvU32 val;
|
||||
|
||||
val =
|
||||
@@ -462,6 +464,7 @@ _nvswitch_initialize_nport_interrupts_ls10
|
||||
DRF_NUM(_NPORT, _ERR_CONTROL_COMMON_NPORT, _FATALENABLE, 1) |
|
||||
DRF_NUM(_NPORT, _ERR_CONTROL_COMMON_NPORT, _NONFATALENABLE, 1);
|
||||
NVSWITCH_NPORT_BCAST_WR32_LS10(device, _NPORT, _ERR_CONTROL_COMMON_NPORT, val);
|
||||
#endif // 0
|
||||
|
||||
_nvswitch_initialize_route_interrupts(device);
|
||||
_nvswitch_initialize_ingress_interrupts(device);
|
||||
@@ -494,7 +497,10 @@ _nvswitch_initialize_nxbar_interrupts_ls10
|
||||
DRF_NUM(_NXBAR_TILE, _ERR_FATAL_INTR_EN, _INGRESS_SIDEBAND_PARITY_ERROR, 1) |
|
||||
DRF_NUM(_NXBAR_TILE, _ERR_FATAL_INTR_EN, _INGRESS_REDUCTION_PKT_ERROR, 1);
|
||||
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
NVSWITCH_BCAST_WR32_LS10(device, NXBAR, _NXBAR_TILE, _ERR_FATAL_INTR_EN, report_fatal);
|
||||
#endif // 0
|
||||
|
||||
chip_device->intr_mask.tile.fatal = report_fatal;
|
||||
chip_device->intr_mask.tile.nonfatal = 0;
|
||||
@@ -509,7 +515,10 @@ _nvswitch_initialize_nxbar_interrupts_ls10
|
||||
DRF_NUM(_NXBAR_TILEOUT, _ERR_FATAL_INTR_EN, _INGRESS_BURST_GT_9_DATA_VC, 1) |
|
||||
DRF_NUM(_NXBAR_TILEOUT, _ERR_FATAL_INTR_EN, _EGRESS_CDT_PARITY_ERROR, 1);
|
||||
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
NVSWITCH_BCAST_WR32_LS10(device, NXBAR, _NXBAR_TILEOUT, _ERR_FATAL_INTR_EN, report_fatal);
|
||||
#endif // 0
|
||||
|
||||
chip_device->intr_mask.tileout.fatal = report_fatal;
|
||||
chip_device->intr_mask.tileout.nonfatal = 0;
|
||||
|
||||
@@ -2841,14 +2841,21 @@ nvswitch_is_smbpbi_supported_ls10
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
NvU64 version;
|
||||
NvlStatus status;
|
||||
|
||||
if (!nvswitch_is_smbpbi_supported_lr10(device))
|
||||
{
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
//
|
||||
// Temporary driver WAR to disable SMBPBI on the LS10 NVSwitch driver.
|
||||
// This should be removed once 3875091 is resolved.
|
||||
//
|
||||
return NV_FALSE;
|
||||
|
||||
#if 0
|
||||
NvU64 version;
|
||||
NvlStatus status;
|
||||
|
||||
status = _nvswitch_get_bios_version(device, &version);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
@@ -2867,6 +2874,7 @@ nvswitch_is_smbpbi_supported_ls10
|
||||
"SMBPBI is not supported on NVSwitch BIOS version %llx.\n", version);
|
||||
return NV_FALSE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4216,6 +4224,8 @@ _nvswitch_init_nport_ecc_control_ls10
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
// Set ingress ECC error limits
|
||||
NVSWITCH_ENG_WR32(device, NPORT, _BCAST, 0, _INGRESS, _ERR_NCISOC_HDR_ECC_ERROR_COUNTER,
|
||||
DRF_NUM(_INGRESS, _ERR_NCISOC_HDR_ECC_ERROR_COUNTER, _ERROR_COUNT, 0x0));
|
||||
@@ -4274,6 +4284,7 @@ _nvswitch_init_nport_ecc_control_ls10
|
||||
|
||||
NVSWITCH_ENG_WR32(device, NPORT, _BCAST, 0, _SOURCETRACK, _ERR_ECC_CTRL,
|
||||
DRF_DEF(_SOURCETRACK, _ERR_ECC_CTRL, _CREQ_TCEN0_CRUMBSTORE_ECC_ENABLE, __PROD));
|
||||
#endif // 0
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
@@ -4306,6 +4317,8 @@ nvswitch_init_nport_ls10
|
||||
|
||||
_nvswitch_init_nport_ecc_control_ls10(device);
|
||||
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
if (DRF_VAL(_SWITCH_REGKEY, _ATO_CONTROL, _DISABLE, device->regkeys.ato_control) ==
|
||||
NV_SWITCH_REGKEY_ATO_CONTROL_DISABLE_TRUE)
|
||||
{
|
||||
@@ -4329,7 +4342,7 @@ nvswitch_init_nport_ls10
|
||||
DRF_NUM(_TSTATE, _ATO_TIMER_LIMIT, _LIMIT, timeout));
|
||||
}
|
||||
}
|
||||
|
||||
#endif // 0
|
||||
if (DRF_VAL(_SWITCH_REGKEY, _STO_CONTROL, _DISABLE, device->regkeys.sto_control) ==
|
||||
NV_SWITCH_REGKEY_STO_CONTROL_DISABLE_TRUE)
|
||||
{
|
||||
@@ -4366,17 +4379,7 @@ nvswitch_init_nxbar_ls10
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
NvlStatus status = NVL_SUCCESS;
|
||||
|
||||
status = nvswitch_apply_prod_nxbar_ls10(device);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: NXBAR PRODs failed\n",
|
||||
__FUNCTION__);
|
||||
return status;
|
||||
}
|
||||
|
||||
NVSWITCH_PRINT(device, WARN, "%s: Function not implemented\n", __FUNCTION__);
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -364,6 +364,57 @@ nvswitch_set_nport_tprod_state_ls10
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* @Brief : INIT L2 register state in SOE
|
||||
*
|
||||
* @param[in] device
|
||||
* @param[in] nport
|
||||
*/
|
||||
void
|
||||
nvswitch_soe_init_l2_state_ls10
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
FLCN *pFlcn;
|
||||
NvU32 cmdSeqDesc = 0;
|
||||
NV_STATUS status;
|
||||
RM_FLCN_CMD_SOE cmd;
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
RM_SOE_CORE_CMD_L2_STATE *pL2State;
|
||||
|
||||
if (!nvswitch_is_soe_supported(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO, "%s: SOE is not supported. skipping!\n",
|
||||
__FUNCTION__);
|
||||
return;
|
||||
}
|
||||
|
||||
pFlcn = device->pSoe->pFlcn;
|
||||
|
||||
nvswitch_os_memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.hdr.unitId = RM_SOE_UNIT_CORE;
|
||||
cmd.hdr.size = sizeof(cmd);
|
||||
|
||||
pL2State = &cmd.cmd.core.l2State;
|
||||
pL2State->cmdType = RM_SOE_CORE_CMD_INIT_L2_STATE;
|
||||
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_5MSEC_IN_NS, &timeout);
|
||||
status = flcnQueueCmdPostBlocking(device, pFlcn,
|
||||
(PRM_FLCN_CMD)&cmd,
|
||||
NULL, // pMsg
|
||||
NULL, // pPayload
|
||||
SOE_RM_CMDQ_LOG_ID,
|
||||
&cmdSeqDesc,
|
||||
&timeout);
|
||||
if (status != NV_OK)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to send INIT_L2_STATE command to SOE, status 0x%x\n",
|
||||
__FUNCTION__, status);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @Brief : Init sequence for SOE FSP RISCV image
|
||||
*
|
||||
|
||||
@@ -706,8 +706,8 @@ nvswitch_apply_prod_nxbar_ls10
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
|
||||
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
// .NXBAR PROD value application
|
||||
|
||||
NVSWITCH_ENG_WR32(device, TILEOUT, _BCAST, 0, _NXBAR_TILEOUT, _CTRL0,
|
||||
@@ -724,6 +724,7 @@ nvswitch_apply_prod_nxbar_ls10
|
||||
DRF_DEF(_NXBAR_TILEOUT, _ERR_FATAL_INTR_EN, _INGRESS_BURST_GT_9_DATA_VC, __PROD) |
|
||||
DRF_DEF(_NXBAR_TILEOUT, _ERR_FATAL_INTR_EN, _INGRESS_NON_BURSTY_PKT, __PROD) |
|
||||
DRF_DEF(_NXBAR_TILEOUT, _ERR_FATAL_INTR_EN, _INGRESS_NON_STICKY_PKT, __PROD));
|
||||
#endif // 0
|
||||
|
||||
NVSWITCH_ENG_WR32(device, TILEOUT, _BCAST, 0, _NXBAR_TILEOUT, _PRI_NXBAR_TILEOUT_CG,
|
||||
DRF_DEF(_NXBAR_TILEOUT, _PRI_NXBAR_TILEOUT_CG, _DI_DT_SKEW_VAL, __PROD) |
|
||||
@@ -742,7 +743,9 @@ nvswitch_apply_prod_nxbar_ls10
|
||||
|
||||
NVSWITCH_ENG_WR32(device, TILEOUT, _BCAST, 0, _NXBAR_TILEOUT, _PRI_NXBAR_TILEOUT_CG1,
|
||||
DRF_DEF(_NXBAR_TILEOUT, _PRI_NXBAR_TILEOUT_CG1, _MONITOR_CG_EN, __PROD));
|
||||
|
||||
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
NVSWITCH_ENG_WR32(device, TILE, _BCAST, 0, _NXBAR_TILE, _CTRL0,
|
||||
DRF_DEF(_NXBAR_TILE, _CTRL0, _MULTI_VALID_XFN_CTRL, _ENABLE) |
|
||||
DRF_DEF(_NXBAR_TILE, _CTRL0, _PARTIAL_RAM_WR_CTRL, _ENABLE) |
|
||||
@@ -760,7 +763,7 @@ nvswitch_apply_prod_nxbar_ls10
|
||||
DRF_DEF(_NXBAR_TILE, _ERR_FATAL_INTR_EN, _INGRESS_PKT_PARITY_ERROR, __PROD) |
|
||||
DRF_DEF(_NXBAR_TILE, _ERR_FATAL_INTR_EN, _INGRESS_REDUCTION_PKT_ERROR, __PROD) |
|
||||
DRF_DEF(_NXBAR_TILE, _ERR_FATAL_INTR_EN, _INGRESS_SIDEBAND_PARITY_ERROR, __PROD));
|
||||
|
||||
#endif // 0
|
||||
NVSWITCH_ENG_WR32(device, TILE, _BCAST, 0, _NXBAR_TILE, _PRI_NXBAR_TILE_CG,
|
||||
DRF_DEF(_NXBAR_TILE, _PRI_NXBAR_TILE_CG, _DI_DT_SKEW_VAL, __PROD) |
|
||||
DRF_DEF(_NXBAR_TILE, _PRI_NXBAR_TILE_CG, _HALT_CG_EN, __PROD) |
|
||||
@@ -801,7 +804,8 @@ nvswitch_nvs_top_prod_ls10
|
||||
NvU32 i;
|
||||
|
||||
// .NVS_TOP PROD application
|
||||
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
NVSWITCH_ENG_WR32(device, CLKS_P0, , 0, _CLOCK_NVSW_PRT, _NVLINK_UPHY0_PLL0_SLCG,
|
||||
DRF_DEF(_CLOCK_NVSW_PRT, _NVLINK_UPHY0_PLL0_SLCG, _CFGSM, __PROD));
|
||||
|
||||
@@ -813,7 +817,7 @@ nvswitch_nvs_top_prod_ls10
|
||||
|
||||
NVSWITCH_ENG_WR32(device, CLKS_P0, , 3, _CLOCK_NVSW_PRT, _NVLINK_UPHY0_PLL0_SLCG,
|
||||
DRF_DEF(_CLOCK_NVSW_PRT, _NVLINK_UPHY0_PLL0_SLCG, _CFGSM, __PROD));
|
||||
|
||||
#endif // 0
|
||||
NVSWITCH_ENG_WR32(device, GIN, , 0, _CTRL, _PRI_CTRL_CG1,
|
||||
DRF_DEF(_CTRL, _PRI_CTRL_CG1, _SLCG_CTRLPRI, __PROD) |
|
||||
DRF_DEF(_CTRL, _PRI_CTRL_CG1, _SLCG_MSIX, __PROD));
|
||||
@@ -855,16 +859,21 @@ nvswitch_nvs_top_prod_ls10
|
||||
NVSWITCH_ENG_WR32(device, PTIMER, , 0, _PTIMER, _PRI_TMR_CG1,
|
||||
DRF_DEF(_PTIMER, _PRI_TMR_CG1, _MONITOR_CG_EN, __PROD) |
|
||||
DRF_DEF(_PTIMER, _PRI_TMR_CG1, _SLCG, __PROD));
|
||||
|
||||
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
NVSWITCH_ENG_WR32(device, SAW, , 0, _NVLSAW, _CTRL_CLOCK_GATING,
|
||||
DRF_DEF(_NVLSAW, _CTRL_CLOCK_GATING, _CG1_SLCG_PCIE, __PROD) |
|
||||
DRF_DEF(_NVLSAW, _CTRL_CLOCK_GATING, _CG1_SLCG_SAW, __PROD));
|
||||
|
||||
#endif // 0
|
||||
NVSWITCH_ENG_WR32(device, SAW, , 0, _NVLSAW, _GLBLLATENCYTIMERCTRL,
|
||||
DRF_DEF(_NVLSAW, _GLBLLATENCYTIMERCTRL, _ENABLE, __PROD));
|
||||
|
||||
// Moving this L2 register access to SOE. Refer bug #3747687
|
||||
#if 0
|
||||
NVSWITCH_ENG_WR32(device, SAW, , 0, _NVLSAW, _PCIE_PRI_CLOCK_GATING,
|
||||
DRF_DEF(_NVLSAW, _PCIE_PRI_CLOCK_GATING, _CG1_SLCG, __PROD));
|
||||
#endif // 0
|
||||
|
||||
NVSWITCH_REG_WR32(device, _PSE, _CG1,
|
||||
DRF_DEF(_PSE, _CG1, _SLCG, __PROD));
|
||||
|
||||
|
||||
@@ -743,6 +743,15 @@ nvswitch_init_soe
|
||||
return device->hal.nvswitch_init_soe(device);
|
||||
}
|
||||
|
||||
void
|
||||
nvswitch_soe_init_l2_state
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
device->hal.nvswitch_soe_init_l2_state(device);
|
||||
}
|
||||
|
||||
static NvlStatus
|
||||
_nvswitch_construct_soe
|
||||
(
|
||||
|
||||
@@ -39,7 +39,8 @@ extern "C" {
|
||||
#define NVA084_NOTIFIERS_EVENT_VGPU_PLUGIN_TASK_CRASHED (2)
|
||||
#define NVA084_NOTIFIERS_EVENT_GUEST_DRIVER_LOADED (3)
|
||||
#define NVA084_NOTIFIERS_EVENT_GUEST_DRIVER_UNLOADED (4)
|
||||
#define NVA084_NOTIFIERS_MAXCOUNT (5)
|
||||
#define NVA084_NOTIFIERS_EVENT_PRINT_ERROR_MESSAGE (5)
|
||||
#define NVA084_NOTIFIERS_MAXCOUNT (6)
|
||||
|
||||
#define NVA084_NOTIFICATION_STATUS_IN_PROGRESS (0x8000)
|
||||
#define NVA084_NOTIFICATION_STATUS_BAD_ARGUMENT (0x4000)
|
||||
|
||||
Reference in New Issue
Block a user