1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>drm_vblank_pre_modeset</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux DRM Developer's Guide"><link rel="up" href="drm-vertical-blank.html#idp1127382092" title="Vertical Blanking and Interrupt Handling Functions Reference"><link rel="prev" href="API-drm-crtc-vblank-on.html" title="drm_crtc_vblank_on"><link rel="next" href="API-drm-vblank-post-modeset.html" title="drm_vblank_post_modeset"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">drm_vblank_pre_modeset</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-drm-crtc-vblank-on.html">Prev</a>&#160;</td><th width="60%" align="center">Vertical Blanking and Interrupt Handling Functions Reference</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-drm-vblank-post-modeset.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-drm-vblank-pre-modeset"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>drm_vblank_pre_modeset &#8212; 
2     account for vblanks across mode sets
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">drm_vblank_pre_modeset </b>(</code></td><td>struct drm_device * <var class="pdparam">dev</var>, </td></tr><tr><td>&#160;</td><td>int <var class="pdparam">crtc</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1"><a name="idp1127600100"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>dev</code></em></span></dt><dd><p>
4     DRM device
5    </p></dd><dt><span class="term"><em class="parameter"><code>crtc</code></em></span></dt><dd><p>
6     CRTC in question
7    </p></dd></dl></div></div><div class="refsect1"><a name="idp1127602708"></a><h2>Description</h2><p>
8   Account for vblank events across mode setting events, which will likely
9   reset the hardware frame counter.
10   </p><p>
11
12   This is done by grabbing a temporary vblank reference to ensure that the
13   vblank interrupt keeps running across the modeset sequence. With this the
14   software-side vblank frame counting will ensure that there are no jumps or
15   discontinuities.
16   </p><p>
17
18   Unfortunately this approach is racy and also doesn't work when the vblank
19   interrupt stops running, e.g. across system suspend resume. It is therefore
20   highly recommended that drivers use the newer <code class="function">drm_vblank_off</code> and
21   <code class="function">drm_vblank_on</code> instead. <code class="function">drm_vblank_pre_modeset</code> only works correctly when
22   using <span class="quote">&#8220;<span class="quote">cooked</span>&#8221;</span> software vblank frame counters and not relying on any hardware
23   counters.
24   </p><p>
25
26   Drivers must call <code class="function">drm_vblank_post_modeset</code> when re-enabling the same crtc
27   again.
28</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-drm-crtc-vblank-on.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="drm-vertical-blank.html#idp1127382092">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-drm-vblank-post-modeset.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">drm_crtc_vblank_on</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span class="phrase">drm_vblank_post_modeset</span></td></tr></table></div></body></html>
29