]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
drm: xlnx: pl_disp: Pass interlaced field info to frmbuf DMA
authorSatish Kumar Nagireddy <satish.nagireddy.nagireddy@xilinx.com>
Thu, 27 Sep 2018 17:23:33 +0000 (10:23 -0700)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 1 Oct 2018 13:01:51 +0000 (15:01 +0200)
This patch passes interlaced field information to frmbuf DMA
based on framebuffer flag.

Signed-off-by: Satish Kumar Nagireddy <satish.nagireddy.nagireddy@xilinx.com>
Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/gpu/drm/xlnx/xlnx_pl_disp.c

index d8c8d7e00467bee0ab7f6ba89803117682e96781..28f5779ac6a28e7e6f785a77e7c0a5f0f2171c67 100644 (file)
@@ -63,6 +63,7 @@ struct xlnx_dma_chan {
  * @drm: core drm object
  * @fmt: drm color format
  * @vtc_bridge: vtc_bridge structure
+ * @fid: field id
  */
 struct xlnx_pl_disp {
        struct device *dev;
@@ -76,6 +77,7 @@ struct xlnx_pl_disp {
        struct drm_device *drm;
        u32 fmt;
        struct xlnx_bridge *vtc_bridge;
+       u32 fid;
 };
 
 /*
@@ -178,6 +180,17 @@ static void xlnx_pl_disp_plane_enable(struct drm_plane *plane)
        desc->callback = xlnx_pl_disp->callback;
        desc->callback_param = xlnx_pl_disp->callback_param;
 
+       if (plane->state->fb->flags == DRM_MODE_FB_ALTERNATE_TOP ||
+           plane->state->fb->flags == DRM_MODE_FB_ALTERNATE_BOTTOM) {
+               if (plane->state->fb->flags == DRM_MODE_FB_ALTERNATE_TOP)
+                       xlnx_pl_disp->fid = 1;
+               else
+                       xlnx_pl_disp->fid = 0;
+
+               xilinx_xdma_set_fid(xlnx_dma_chan->dma_chan, desc,
+                                   xlnx_pl_disp->fid);
+       }
+
        dmaengine_submit(desc);
        dma_async_issue_pending(xlnx_dma_chan->dma_chan);
 }