<div dir="ltr">On Fri, Jun 26, 2015 at 11:34 AM, Derek Foreman <span dir="ltr"><<a href="mailto:derekf@osg.samsung.com" target="_blank">derekf@osg.samsung.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
> +static unsigned int drm_waitvblank_pipe(struct drm_output *output)<br>
> +{<br>
> +     if (output->pipe > 1)<br>
> +             return (output->pipe << DRM_VBLANK_HIGH_CRTC_SHIFT) &<br>
> +                             DRM_VBLANK_HIGH_CRTC_MASK;<br></blockquote><div><br></div><div>This does not seem right as the individual bits in the pipe number cannot really change things in any useful way. From the header file I see this:<br></div><div><pre>+    /* bits 1-6 are reserved for high crtcs */
+    DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
+#define DRM_VBLANK_HIGH_CRTC_SHIFT 1
<br></pre><pre>My best guess is that the intended code was something like:<br></pre><pre>  (1 << output->pipe - 2 + DRM_VBLANK_HIGH_CRTC_SHIFT) & DRM_VBLANK_HIGH_CRTC_MASK<br><br></pre><pre>Or is output->pipe always a power of 2?<br><br></pre></div></div></div></div>