525.47.06

This commit is contained in:
Russell Chou
2023-01-23 21:51:16 -08:00
parent 60c0a71321
commit 65bd98c238
155 changed files with 9044 additions and 4727 deletions

View File

@@ -75,46 +75,59 @@ static void GetNotifierTimeStamp(volatile const NvU32 *notif,
} while (1);
}
static void ResetNotifierLegacy(NvBool overlay, volatile void *in)
static void SetNotifierLegacy(NvBool overlay, volatile void *in, NvBool begun,
NvU64 timeStamp)
{
volatile NvU32 *notif = in;
if (overlay) {
notif[NV_DISP_NOTIFICATION_2_INFO16_3] =
notif[NV_DISP_NOTIFICATION_2_INFO16_3] = begun ?
DRF_DEF(_DISP, _NOTIFICATION_2__3, _STATUS, _BEGUN) :
DRF_DEF(_DISP, _NOTIFICATION_2__3, _STATUS, _NOT_BEGUN);
notif[NV_DISP_NOTIFICATION_2_TIME_STAMP_0] =
notif[NV_DISP_NOTIFICATION_2_TIME_STAMP_0] = begun ? NvU64_LO32(timeStamp) :
NVKMS_LIB_SYNC_NOTIFIER_TIMESTAMP_LO_INVALID;
notif[NV_DISP_NOTIFICATION_2_TIME_STAMP_1] = begun ? NvU64_HI32(timeStamp) :
NVKMS_LIB_SYNC_NOTIFIER_TIMESTAMP_HI_INVALID;
} else {
notif[NV_DISP_BASE_NOTIFIER_1__0] =
notif[NV_DISP_BASE_NOTIFIER_1__0] = begun ?
DRF_DEF(_DISP, _BASE_NOTIFIER_1__0, _STATUS, _BEGUN) :
DRF_DEF(_DISP, _BASE_NOTIFIER_1__0, _STATUS, _NOT_BEGUN);
}
}
static void ResetNotifierFourWord(volatile void *in)
static void SetNotifierFourWord(volatile void *in, NvBool begun,
NvU64 timeStamp)
{
volatile NvU32 *notif = in;
notif[NV_DISP_NOTIFICATION_2_INFO16_3] =
notif[NV_DISP_NOTIFICATION_2_INFO16_3] = begun ?
DRF_DEF(_DISP, _NOTIFICATION_2__3, _STATUS, _BEGUN) :
DRF_DEF(_DISP, _NOTIFICATION_2__3, _STATUS, _NOT_BEGUN);
notif[NV_DISP_NOTIFICATION_2_TIME_STAMP_0] =
notif[NV_DISP_NOTIFICATION_2_TIME_STAMP_0] = begun ? NvU64_LO32(timeStamp) :
NVKMS_LIB_SYNC_NOTIFIER_TIMESTAMP_LO_INVALID;
notif[NV_DISP_NOTIFICATION_2_TIME_STAMP_1] = begun ? NvU64_HI32(timeStamp) :
NVKMS_LIB_SYNC_NOTIFIER_TIMESTAMP_HI_INVALID;
}
static void ResetNotifierFourWordNVDisplay(volatile void *in)
static void SetNotifierFourWordNVDisplay(volatile void *in, NvBool begun,
NvU64 timeStamp)
{
volatile NvU32 *notif = in;
notif[NV_DISP_NOTIFIER__0] =
notif[NV_DISP_NOTIFIER__0] = begun ?
DRF_DEF(_DISP, _NOTIFIER__0, _STATUS, _BEGUN) :
DRF_DEF(_DISP, _NOTIFIER__0, _STATUS, _NOT_BEGUN);
notif[NV_DISP_NOTIFIER__2] =
notif[NV_DISP_NOTIFIER__2] = begun ? NvU64_LO32(timeStamp) :
NVKMS_LIB_SYNC_NOTIFIER_TIMESTAMP_LO_INVALID;
notif[NV_DISP_NOTIFIER__3] = begun ? NvU64_HI32(timeStamp) :
NVKMS_LIB_SYNC_NOTIFIER_TIMESTAMP_HI_INVALID;
}
void nvKmsResetNotifier(enum NvKmsNIsoFormat format, NvBool overlay,
NvU32 index, void *base)
static void SetNotifier(enum NvKmsNIsoFormat format, NvBool overlay,
NvU32 index, void *base, NvBool begun, NvU64 timeStamp)
{
const NvU32 sizeInBytes = nvKmsSizeOfNotifier(format, overlay);
void *notif =
@@ -122,17 +135,29 @@ void nvKmsResetNotifier(enum NvKmsNIsoFormat format, NvBool overlay,
switch (format) {
case NVKMS_NISO_FORMAT_LEGACY:
ResetNotifierLegacy(overlay, notif);
SetNotifierLegacy(overlay, notif, begun, timeStamp);
break;
case NVKMS_NISO_FORMAT_FOUR_WORD:
ResetNotifierFourWord(notif);
SetNotifierFourWord(notif, begun, timeStamp);
break;
case NVKMS_NISO_FORMAT_FOUR_WORD_NVDISPLAY:
ResetNotifierFourWordNVDisplay(notif);
SetNotifierFourWordNVDisplay(notif, begun, timeStamp);
break;
}
}
void nvKmsSetNotifier(enum NvKmsNIsoFormat format, NvBool overlay,
NvU32 index, void *base, NvU64 timeStamp)
{
SetNotifier(format, overlay, index, base, NV_TRUE, timeStamp);
}
void nvKmsResetNotifier(enum NvKmsNIsoFormat format, NvBool overlay,
NvU32 index, void *base)
{
SetNotifier(format, overlay, index, base, NV_FALSE, 0);
}
static void ParseNotifierLegacy(NvBool overlay, volatile const void *in,
struct nvKmsParsedNotifier *out)
{