mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-02-08 17:19:59 +00:00
525.47.06
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user