drm/msm/mdp5: Add DMA pipe planes for MDP5
authorjilai wang <jilaiw@codeaurora.org>
Tue, 7 Jul 2015 21:17:28 +0000 (17:17 -0400)
committerRob Clark <robdclark@gmail.com>
Sat, 15 Aug 2015 22:27:21 +0000 (18:27 -0400)
This change is to add planes which use DMA pipes for MDP5.

Signed-off-by: Jilai Wang <jilaiw@codeaurora.org>
[slight comment adjust to s/Construct public planes/Construct video
planes/ since DMA planes are public planes too, they just can't scale
or CSC]
Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c

index be5f5343b2a59d1e2ffd598035ddb42bc47f5dad..047cb0433ccbe5156c5ebd2734b66586e75c7e27 100644 (file)
@@ -349,9 +349,12 @@ static int modeset_init(struct mdp5_kms *mdp5_kms)
        static const enum mdp5_pipe crtcs[] = {
                        SSPP_RGB0, SSPP_RGB1, SSPP_RGB2, SSPP_RGB3,
        };
-       static const enum mdp5_pipe pub_planes[] = {
+       static const enum mdp5_pipe vig_planes[] = {
                        SSPP_VIG0, SSPP_VIG1, SSPP_VIG2, SSPP_VIG3,
        };
+       static const enum mdp5_pipe dma_planes[] = {
+                       SSPP_DMA0, SSPP_DMA1,
+       };
        struct drm_device *dev = mdp5_kms->dev;
        struct msm_drm_private *priv = dev->dev_private;
        const struct mdp5_cfg_hw *hw_cfg;
@@ -390,16 +393,30 @@ static int modeset_init(struct mdp5_kms *mdp5_kms)
                priv->crtcs[priv->num_crtcs++] = crtc;
        }
 
-       /* Construct public planes: */
+       /* Construct video planes: */
        for (i = 0; i < hw_cfg->pipe_vig.count; i++) {
                struct drm_plane *plane;
 
-               plane = mdp5_plane_init(dev, pub_planes[i], false,
+               plane = mdp5_plane_init(dev, vig_planes[i], false,
                        hw_cfg->pipe_vig.base[i], hw_cfg->pipe_vig.caps);
                if (IS_ERR(plane)) {
                        ret = PTR_ERR(plane);
                        dev_err(dev->dev, "failed to construct %s plane: %d\n",
-                                       pipe2name(pub_planes[i]), ret);
+                                       pipe2name(vig_planes[i]), ret);
+                       goto fail;
+               }
+       }
+
+       /* DMA planes */
+       for (i = 0; i < hw_cfg->pipe_dma.count; i++) {
+               struct drm_plane *plane;
+
+               plane = mdp5_plane_init(dev, dma_planes[i], false,
+                               hw_cfg->pipe_dma.base[i], hw_cfg->pipe_dma.caps);
+               if (IS_ERR(plane)) {
+                       ret = PTR_ERR(plane);
+                       dev_err(dev->dev, "failed to construct %s plane: %d\n",
+                                       pipe2name(dma_planes[i]), ret);
                        goto fail;
                }
        }