11739a20eSAndy Ritger /*
21739a20eSAndy Ritger  * SPDX-FileCopyrightText: Copyright (c) 2013-2015 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
31739a20eSAndy Ritger  * SPDX-License-Identifier: MIT
41739a20eSAndy Ritger  *
51739a20eSAndy Ritger  * Permission is hereby granted, free of charge, to any person obtaining a
61739a20eSAndy Ritger  * copy of this software and associated documentation files (the "Software"),
71739a20eSAndy Ritger  * to deal in the Software without restriction, including without limitation
81739a20eSAndy Ritger  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
91739a20eSAndy Ritger  * and/or sell copies of the Software, and to permit persons to whom the
101739a20eSAndy Ritger  * Software is furnished to do so, subject to the following conditions:
111739a20eSAndy Ritger  *
121739a20eSAndy Ritger  * The above copyright notice and this permission notice shall be included in
131739a20eSAndy Ritger  * all copies or substantial portions of the Software.
141739a20eSAndy Ritger  *
151739a20eSAndy Ritger  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
161739a20eSAndy Ritger  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
171739a20eSAndy Ritger  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
181739a20eSAndy Ritger  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
191739a20eSAndy Ritger  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
201739a20eSAndy Ritger  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
211739a20eSAndy Ritger  * DEALINGS IN THE SOFTWARE.
221739a20eSAndy Ritger  */
231739a20eSAndy Ritger 
241739a20eSAndy Ritger #ifndef __NVKMS_H__
251739a20eSAndy Ritger #define __NVKMS_H__
261739a20eSAndy Ritger 
271739a20eSAndy Ritger #include "nvkms-types.h"
281739a20eSAndy Ritger #include "nvkms-modeset-types.h"
291739a20eSAndy Ritger #include "nvkms-api.h"
301739a20eSAndy Ritger 
311739a20eSAndy Ritger #ifdef __cplusplus
321739a20eSAndy Ritger extern "C" {
331739a20eSAndy Ritger #endif
341739a20eSAndy Ritger 
351739a20eSAndy Ritger extern NVEvoInfoStringRec dummyInfoString;
361739a20eSAndy Ritger 
371739a20eSAndy Ritger NVDevEvoPtr nvFindDevEvoByDeviceId(NvU32 deviceId);
381739a20eSAndy Ritger NvU8 nvGetGpuLogIndex(void);
391739a20eSAndy Ritger void nvEvoDetachConnector(NVConnectorEvoRec *pConnectorEvo, const NvU32 head,
401739a20eSAndy Ritger                           NVEvoModesetUpdateState *pModesetUpdateState);
411739a20eSAndy Ritger void nvEvoAttachConnector(NVConnectorEvoRec *pConnectorEvo,
421739a20eSAndy Ritger                           const NvU32 head,
431739a20eSAndy Ritger                           NVDPLibModesetStatePtr pDpLibModesetState,
441739a20eSAndy Ritger                           NVEvoModesetUpdateState *pModesetUpdateState);
451739a20eSAndy Ritger void nvEvoUpdateAndKickOff(const NVDispEvoRec *pDispEvo, NvBool sync,
461739a20eSAndy Ritger                            NVEvoUpdateState *updateState, NvBool releaseElv);
471739a20eSAndy Ritger void nvDoIMPUpdateEvo(NVDispEvoPtr pDispEvo,
481739a20eSAndy Ritger                       NVEvoUpdateState *updateState);
491739a20eSAndy Ritger void nvEvoArmLightweightSupervisor(NVDispEvoPtr pDispEvo,
501739a20eSAndy Ritger                                    const NvU32 head,
511739a20eSAndy Ritger                                    NvBool isVrr,
521739a20eSAndy Ritger                                    NvBool enable);
531739a20eSAndy Ritger 
541739a20eSAndy Ritger void nvSetViewPortsEvo(NVDispEvoPtr pDispEvo,
551739a20eSAndy Ritger                        const NvU32 head, NVEvoUpdateState *updateState);
561739a20eSAndy Ritger void nvSetViewPortPointInEvo(NVDispEvoPtr pDispEvo,
571739a20eSAndy Ritger                              const NvU32 head,
581739a20eSAndy Ritger                              const NvU16 x,
591739a20eSAndy Ritger                              NvU16 y,
601739a20eSAndy Ritger                              NVEvoUpdateState *updateState);
611739a20eSAndy Ritger void
621739a20eSAndy Ritger nvConstructNvModeTimingsFromHwModeTimings(const NVHwModeTimingsEvo *pTimings,
631739a20eSAndy Ritger                                           NvModeTimingsPtr pModeTimings);
641739a20eSAndy Ritger void nvEvoSetTimings(NVDispEvoPtr pDispEvo, const NvU32 head,
651739a20eSAndy Ritger                      NVEvoUpdateState *updateState);
661739a20eSAndy Ritger NvBool nvGetDfpProtocol(const NVDpyEvoRec *pDpyEvo,
671739a20eSAndy Ritger                         NVHwModeTimingsEvoPtr pTimings);
681739a20eSAndy Ritger void nvInitScalingUsageBounds(const NVDevEvoRec *pDevEvo,
691739a20eSAndy Ritger                               struct NvKmsScalingUsageBounds *pScaling);
701739a20eSAndy Ritger NvBool nvComputeScalingUsageBounds(const NVEvoScalerCaps *pScalerCaps,
711739a20eSAndy Ritger                                    const NvU32 inWidth, const NvU32 inHeight,
721739a20eSAndy Ritger                                    const NvU32 outWidth, const NvU32 outHeight,
731739a20eSAndy Ritger                                    NVEvoScalerTaps hTaps, NVEvoScalerTaps vTaps,
741739a20eSAndy Ritger                                    struct NvKmsScalingUsageBounds *out);
751739a20eSAndy Ritger NvBool nvAssignScalerTaps(const NVDevEvoRec *pDevEvo,
761739a20eSAndy Ritger                           const NVEvoScalerCaps *pScalerCaps,
771739a20eSAndy Ritger                           const NvU32 inWidth, const NvU32 inHeight,
781739a20eSAndy Ritger                           const NvU32 outWidth, const NvU32 outHeight,
791739a20eSAndy Ritger                           NvBool doubleScan,
801739a20eSAndy Ritger                           NVEvoScalerTaps *hTapsOut, NVEvoScalerTaps *vTapsOut);
811739a20eSAndy Ritger NvBool nvValidateHwModeTimingsViewPort(const NVDevEvoRec *pDevEvo,
821739a20eSAndy Ritger                                        const NVEvoScalerCaps *pScalerCaps,
831739a20eSAndy Ritger                                        NVHwModeTimingsEvoPtr pTimings,
841739a20eSAndy Ritger                                        NVEvoInfoStringPtr pInfoString);
851739a20eSAndy Ritger void nvAssignDefaultUsageBounds(const NVDispEvoRec *pDispEvo,
861739a20eSAndy Ritger                                 NVHwModeViewPortEvo *pViewPort);
871739a20eSAndy Ritger struct NvKmsUsageBounds nvUnionUsageBounds(const struct NvKmsUsageBounds *a,
881739a20eSAndy Ritger                                            const struct NvKmsUsageBounds *b);
891739a20eSAndy Ritger NvBool UsageBoundsEqual(const struct NvKmsUsageBounds *a,
901739a20eSAndy Ritger                         const struct NvKmsUsageBounds *b);
911739a20eSAndy Ritger NvU64 nvEvoGetFormatsWithEqualOrLowerUsageBound(
921739a20eSAndy Ritger     const enum NvKmsSurfaceMemoryFormat format,
931739a20eSAndy Ritger     const NvU64 supportedFormatsCapMask);
941739a20eSAndy Ritger void nvCancelLowerDispBandwidthTimer(NVDevEvoPtr pDevEvo);
951739a20eSAndy Ritger void nvScheduleLowerDispBandwidthTimer(NVDevEvoPtr pDevEvo);
961739a20eSAndy Ritger void nvAssertAllDpysAreInactive(NVDevEvoPtr pDevEvo);
971739a20eSAndy Ritger void nvEvoLockStatePreModeset(NVDevEvoPtr pDevEvo, NvU32 *dispNeedsEarlyUpdate,
981739a20eSAndy Ritger                               NVEvoUpdateState *updateState);
991739a20eSAndy Ritger void nvEvoLockStatePostModeset(NVDevEvoPtr pDevEvo, const NvBool doRasterLock);
1001739a20eSAndy Ritger NvBool nvSetUsageBoundsEvo(
1011739a20eSAndy Ritger     NVDevEvoPtr pDevEvo,
1021739a20eSAndy Ritger     NvU32 sd,
1031739a20eSAndy Ritger     NvU32 head,
1041739a20eSAndy Ritger     const struct NvKmsUsageBounds *pUsage,
1051739a20eSAndy Ritger     NVEvoUpdateState *updateState);
1061739a20eSAndy Ritger void nvEnableMidFrameAndDWCFWatermark(NVDevEvoPtr pDevEvo,
1071739a20eSAndy Ritger                                       NvU32 sd,
1081739a20eSAndy Ritger                                       NvU32 head,
1091739a20eSAndy Ritger                                       NvBool enable,
1101739a20eSAndy Ritger                                       NVEvoUpdateState *pUpdateState);
1111739a20eSAndy Ritger 
1121739a20eSAndy Ritger void nvEvoHeadSetControlOR(NVDispEvoPtr pDispEvo,
1131739a20eSAndy Ritger                            const NvU32 head, NVEvoUpdateState *pUpdateState);
1141739a20eSAndy Ritger 
1151739a20eSAndy Ritger void nvSetDitheringEvo(
1161739a20eSAndy Ritger     NVDispEvoPtr pDispEvo, const NvU32 head,
1171739a20eSAndy Ritger     enum NvKmsDpyAttributeRequestedDitheringValue configState,
1181739a20eSAndy Ritger     const enum NvKmsDpyAttributeRequestedDitheringDepthValue configDepth,
1191739a20eSAndy Ritger     const enum NvKmsDpyAttributeRequestedDitheringModeValue configMode,
1201739a20eSAndy Ritger     NVEvoUpdateState *pUpdateState);
1211739a20eSAndy Ritger 
1221739a20eSAndy Ritger NvBool nvEnableFrameLockEvo(NVDispEvoPtr pDispEvo);
1231739a20eSAndy Ritger NvBool nvDisableFrameLockEvo(NVDispEvoPtr pDispEvo);
1241739a20eSAndy Ritger NvBool nvQueryRasterLockEvo(const NVDpyEvoRec *pDpyEvo, NvS64 *val);
1251739a20eSAndy Ritger NvBool nvSetFlipLockEvo(NVDpyEvoPtr pDpyEvo, NvS64 value);
1261739a20eSAndy Ritger NvBool nvGetFlipLockEvo(const NVDpyEvoRec *pDpyEvo, NvS64 *pValue);
1271739a20eSAndy Ritger NvBool nvAllowFlipLockEvo(NVDispEvoPtr pDispEvo, NvS64 value);
1281739a20eSAndy Ritger NvBool nvSetStereoEvo(const NVDispEvoRec *pDispEvo,
1291739a20eSAndy Ritger                       const NvU32 head, NvBool enable);
1301739a20eSAndy Ritger NvBool nvGetStereoEvo(const NVDispEvoRec *pDispEvo, const NvU32 head);
1311739a20eSAndy Ritger NvBool nvAllocCoreChannelEvo(NVDevEvoPtr pDevEvo);
1321739a20eSAndy Ritger void nvFreeCoreChannelEvo(NVDevEvoPtr pDevEvo);
1331739a20eSAndy Ritger 
1341739a20eSAndy Ritger void nvEvoUpdateSliVideoBridge(NVDevEvoPtr pDevEvo);
1351739a20eSAndy Ritger 
1361739a20eSAndy Ritger void nvSetDVCEvo(NVDispEvoPtr pDispEvo,
1371739a20eSAndy Ritger                  const NvU32 head,
1381739a20eSAndy Ritger                  NvS32 dvc,
1391739a20eSAndy Ritger                  NVEvoUpdateState *updateState);
1401739a20eSAndy Ritger void nvSetImageSharpeningEvo(NVDispEvoRec *pDispEvo, const NvU32 head,
1411739a20eSAndy Ritger                              const NvU32 value, NVEvoUpdateState *updateState);
1421739a20eSAndy Ritger 
1431739a20eSAndy Ritger NvBool nvLayerSetPositionEvo(
1441739a20eSAndy Ritger     NVDevEvoPtr pDevEvo,
1451739a20eSAndy Ritger     const struct NvKmsSetLayerPositionRequest *pRequest);
1461739a20eSAndy Ritger 
1471739a20eSAndy Ritger NvBool nvConstructHwModeTimingsEvo(const NVDpyEvoRec *pDpyEvo,
1481739a20eSAndy Ritger                                    const struct NvKmsMode *pKmsMode,
1491739a20eSAndy Ritger                                    const struct NvKmsSize *pViewPortSizeIn,
1501739a20eSAndy Ritger                                    const struct NvKmsRect *pViewPortOut,
1511739a20eSAndy Ritger                                    NVHwModeTimingsEvoPtr pTimings,
1521739a20eSAndy Ritger                                    const struct NvKmsModeValidationParams
1531739a20eSAndy Ritger                                    *pParams,
1541739a20eSAndy Ritger                                    NVEvoInfoStringPtr pInfoString);
1551739a20eSAndy Ritger 
1561739a20eSAndy Ritger NvBool nvConstructHwModeTimingsImpCheckEvo(
1571739a20eSAndy Ritger     const NVConnectorEvoRec                *pConnectorEvo,
1581739a20eSAndy Ritger     NVHwModeTimingsEvoPtr                   pTimings,
1591739a20eSAndy Ritger     const struct NvKmsModeValidationParams *pParams,
1601739a20eSAndy Ritger     NVEvoInfoStringPtr                      pInfoString,
1611739a20eSAndy Ritger     const int                               head);
1621739a20eSAndy Ritger 
1631739a20eSAndy Ritger NvBool nvDowngradeHwModeTimingsDpPixelDepthEvo(
1641739a20eSAndy Ritger     NVHwModeTimingsEvoPtr pTimings,
1651739a20eSAndy Ritger     const enum NvKmsDpyAttributeCurrentColorSpaceValue colorSpace);
1661739a20eSAndy Ritger 
1671739a20eSAndy Ritger NvBool nvDPValidateModeEvo(NVDpyEvoPtr pDpyEvo,
1681739a20eSAndy Ritger                            NVHwModeTimingsEvoPtr pTimings,
1691739a20eSAndy Ritger                            const struct NvKmsModeValidationParams *pParams);
1701739a20eSAndy Ritger 
1711739a20eSAndy Ritger NvBool nvEvoUpdateHwModeTimingsViewPort(
1721739a20eSAndy Ritger     const NVDpyEvoRec *pDpyEvo,
1731739a20eSAndy Ritger     const struct NvKmsModeValidationParams *pModeValidationParams,
1741739a20eSAndy Ritger     const struct NvKmsSize *pViewPortSizeIn,
1751739a20eSAndy Ritger     const struct NvKmsRect *pViewPortOut,
1761739a20eSAndy Ritger     NVHwModeTimingsEvo *pTimings);
1771739a20eSAndy Ritger 
1781739a20eSAndy Ritger typedef struct _NVValidateImpOneDispHeadParamsRec
1791739a20eSAndy Ritger {
1801739a20eSAndy Ritger     const NVConnectorEvoRec *pConnectorEvo;
1811739a20eSAndy Ritger     const struct NvKmsUsageBounds *pUsage;
1821739a20eSAndy Ritger     NvU32                 activeRmId;
1831739a20eSAndy Ritger     NVHwModeTimingsEvoPtr pTimings;
1841739a20eSAndy Ritger } NVValidateImpOneDispHeadParamsRec;
1851739a20eSAndy Ritger 
1861739a20eSAndy Ritger NvBool nvValidateImpOneDisp(
1871739a20eSAndy Ritger     NVDispEvoPtr                            pDispEvo,
1881739a20eSAndy Ritger     const NVValidateImpOneDispHeadParamsRec timingsParams[NVKMS_MAX_HEADS_PER_DISP],
1891739a20eSAndy Ritger     NvBool                                  requireBootClocks,
1901739a20eSAndy Ritger     NVEvoReallocateBandwidthMode            reallocBandwidth,
1911739a20eSAndy Ritger     NvU32                                   *pMinIsoBandwidthKBPS,
1921739a20eSAndy Ritger     NvU32                                   *pMinDramFloorKBPS);
1931739a20eSAndy Ritger 
1941739a20eSAndy Ritger NvBool nvAllocateDisplayBandwidth(
1951739a20eSAndy Ritger     NVDispEvoPtr pDispEvo,
1961739a20eSAndy Ritger     NvU32 newIsoBandwidthKBPS,
1971739a20eSAndy Ritger     NvU32 newDramFloorKBPS);
1981739a20eSAndy Ritger 
1991739a20eSAndy Ritger NvBool nvValidateImpOneDispDowngrade(
2001739a20eSAndy Ritger     NVDispEvoPtr                            pDispEvo,
2011739a20eSAndy Ritger     const NVValidateImpOneDispHeadParamsRec timingsParams[NVKMS_MAX_HEADS_PER_DISP],
2021739a20eSAndy Ritger     NvBool                                  requireBootClocks,
2031739a20eSAndy Ritger     NVEvoReallocateBandwidthMode            reallocBandwidth,
2041739a20eSAndy Ritger     NvU32                                   downgradePossibleHeadsBitMask);
2051739a20eSAndy Ritger 
2061739a20eSAndy Ritger NvBool nvFrameLockServerPossibleEvo(const NVDpyEvoRec *pDpyEvo);
2071739a20eSAndy Ritger NvBool nvFrameLockClientPossibleEvo(const NVDpyEvoRec *pDpyEvo);
2081739a20eSAndy Ritger 
2091739a20eSAndy Ritger void nvEvoSetLut(NVDispEvoPtr pDispEvo, NvU32 head, NvBool kickoff,
2101739a20eSAndy Ritger                  const struct NvKmsSetLutCommonParams *pParams);
2111739a20eSAndy Ritger NvBool nvValidateSetLutCommonParams(
2121739a20eSAndy Ritger     const NVDevEvoRec *pDevEvo,
2131739a20eSAndy Ritger     const struct NvKmsSetLutCommonParams *pParams);
2141739a20eSAndy Ritger 
2151739a20eSAndy Ritger void nvChooseCurrentColorSpaceAndRangeEvo(
2161739a20eSAndy Ritger     const NVHwModeTimingsEvo *pTimings,
2171739a20eSAndy Ritger     const enum NvKmsDpyAttributeRequestedColorSpaceValue requestedColorSpace,
2181739a20eSAndy Ritger     const enum NvKmsDpyAttributeColorRangeValue requestedColorRange,
2191739a20eSAndy Ritger     enum NvKmsDpyAttributeCurrentColorSpaceValue *pCurrentColorSpace,
2201739a20eSAndy Ritger     enum NvKmsDpyAttributeColorRangeValue *pCurrentColorRange);
2211739a20eSAndy Ritger 
2221739a20eSAndy Ritger void nvUpdateCurrentHardwareColorSpaceAndRangeEvo(
2231739a20eSAndy Ritger     NVDispEvoPtr pDispEvo,
2241739a20eSAndy Ritger     const NvU32 head,
225*90eb1077SAndy Ritger     const enum NvKmsDpyAttributeCurrentColorSpaceValue colorSpace,
226*90eb1077SAndy Ritger     const enum NvKmsDpyAttributeColorRangeValue colorRange,
2271739a20eSAndy Ritger     NVEvoUpdateState *pUpdateState);
2281739a20eSAndy Ritger 
2291739a20eSAndy Ritger void nvSetColorSpaceAndRangeEvo(
2301739a20eSAndy Ritger     NVDispEvoPtr pDispEvo, const NvU32 head,
2311739a20eSAndy Ritger     const enum NvKmsDpyAttributeRequestedColorSpaceValue requestedColorSpace,
2321739a20eSAndy Ritger     const enum NvKmsDpyAttributeColorRangeValue requestedColorRange,
2331739a20eSAndy Ritger     NVEvoUpdateState *pUpdateState);
2341739a20eSAndy Ritger 
2351739a20eSAndy Ritger NvBool nvAssignSOREvo(NVConnectorEvoPtr pConnectorEvo, NvU32 sorExcludeMask);
2361739a20eSAndy Ritger void nvRestoreSORAssigmentsEvo(NVDevEvoRec *pDevEvo);
2371739a20eSAndy Ritger 
2381739a20eSAndy Ritger void nvSetSwapBarrierNotifyEvo(NVDispEvoPtr pDispEvo,
2391739a20eSAndy Ritger                                NvBool enable, NvBool isPre);
2401739a20eSAndy Ritger 
2411739a20eSAndy Ritger void nvUnbloatHwModeTimingsEvo(NVHwModeTimingsEvoPtr pTimings, NvU32 factor);
2421739a20eSAndy Ritger 
2431739a20eSAndy Ritger NvBool nvReadCRC32Evo(NVDispEvoPtr pDispEvo, NvU32 head,
2441739a20eSAndy Ritger                       CRC32NotifierCrcOut *crcOut /* out */);
2451739a20eSAndy Ritger 
2461739a20eSAndy Ritger NvBool nvFreeDevEvo(NVDevEvoPtr pDevEvo);
2471739a20eSAndy Ritger NVDevEvoPtr nvAllocDevEvo(const struct NvKmsAllocDeviceRequest *pRequest,
2481739a20eSAndy Ritger                           enum NvKmsAllocDeviceStatus *pStatus);
2491739a20eSAndy Ritger NvU32 nvGetActiveSorMask(const NVDispEvoRec *pDispEvo);
2501739a20eSAndy Ritger NvBool nvUpdateFlipLockEvoOneHead(NVDispEvoPtr pDispEvo, const NvU32 head,
2511739a20eSAndy Ritger                                   NvU32 *val, NvBool set,
2521739a20eSAndy Ritger                                   NvBool *needsEarlyUpdate,
2531739a20eSAndy Ritger                                   NVEvoUpdateState *updateState);
2541739a20eSAndy Ritger 
2551739a20eSAndy Ritger void nvEvoUpdateCurrentPalette(NVDispEvoPtr pDispEvo,
2561739a20eSAndy Ritger                                NvU32 head, NvBool kickOff);
2571739a20eSAndy Ritger 
2581739a20eSAndy Ritger NvBool nvEvoPollForNoMethodPending(NVDevEvoPtr pDevEvo,
2591739a20eSAndy Ritger                                    const NvU32 sd,
2601739a20eSAndy Ritger                                    NVEvoChannelPtr pChannel,
2611739a20eSAndy Ritger                                    NvU64 *pStartTime,
2621739a20eSAndy Ritger                                    const NvU32 timeout);
2631739a20eSAndy Ritger 
2641739a20eSAndy Ritger static inline void nvAssertSameSemaphoreSurface(
2651739a20eSAndy Ritger     const NVFlipChannelEvoHwState *pHwState)
2661739a20eSAndy Ritger {
2671739a20eSAndy Ritger 
2681739a20eSAndy Ritger     /*!
2691739a20eSAndy Ritger      * pHwState->syncObject contains separate fields to track the semaphore
2701739a20eSAndy Ritger      * surface used for acquire, and the semaphore surface used for release.
2711739a20eSAndy Ritger      * Prior to NvDisplay 4.0, display HW only supports using a single semaphore
2721739a20eSAndy Ritger      * surface for both acquire and release. As such, assert that the semaphore
2731739a20eSAndy Ritger      * surfaces in pHwState->syncObject are the same, and that we're also not
2741739a20eSAndy Ritger      * using syncpoints. This is enforced during flip validation.
2751739a20eSAndy Ritger      */
2761739a20eSAndy Ritger 
2771739a20eSAndy Ritger     nvAssert(pHwState->syncObject.u.semaphores.acquireSurface.pSurfaceEvo ==
2781739a20eSAndy Ritger              pHwState->syncObject.u.semaphores.releaseSurface.pSurfaceEvo);
2791739a20eSAndy Ritger 
2801739a20eSAndy Ritger     nvAssert(!pHwState->syncObject.usingSyncpt);
2811739a20eSAndy Ritger }
2821739a20eSAndy Ritger 
2831739a20eSAndy Ritger void nvDPSerializerHandleDPIRQ(NVDispEvoPtr pDispEvo,
2841739a20eSAndy Ritger                                NVConnectorEvoPtr pConnectorEvo);
2851739a20eSAndy Ritger 
2861739a20eSAndy Ritger void nvDPSerializerPreSetMode(NVDispEvoPtr pDispEvo,
2871739a20eSAndy Ritger                               NVConnectorEvoPtr pConnectorEvo);
2881739a20eSAndy Ritger 
2891739a20eSAndy Ritger void nvDPSerializerPostSetMode(NVDispEvoPtr pDispEvo,
2901739a20eSAndy Ritger                                NVConnectorEvoPtr pConnectorEvo);
2911739a20eSAndy Ritger 
2921739a20eSAndy Ritger NvBool nvFramelockSetControlUnsyncEvo(NVDispEvoPtr pDispEvo, const NvU32 headMask,
2931739a20eSAndy Ritger                                       NvBool server);
2941739a20eSAndy Ritger 
2951739a20eSAndy Ritger #ifdef __cplusplus
2961739a20eSAndy Ritger };
2971739a20eSAndy Ritger #endif
2981739a20eSAndy Ritger 
2991739a20eSAndy Ritger #endif /* __NVKMS_H__ */
300