drm/exynos: kill pipe field from drivers contexts
authorAndrzej Hajda <a.hajda@samsung.com>
Wed, 15 Mar 2017 14:41:06 +0000 (15:41 +0100)
committerInki Dae <inki.dae@samsung.com>
Thu, 1 Jun 2017 07:21:34 +0000 (16:21 +0900)
Since possible_crtcs are set by Exynos core helper pipe fields have no
raison d'etre. The only place it was used, as a hack, is
fimd_clear_channels, to avoid calling drm_crtc_handle_vblank, but DRM core
has already other protection mechanism (vblank->enabled), so it could be
safely removed.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos5433_drm_decon.c
drivers/gpu/drm/exynos/exynos7_drm_decon.c
drivers/gpu/drm/exynos/exynos_drm_fimd.c
drivers/gpu/drm/exynos/exynos_drm_vidi.c
drivers/gpu/drm/exynos/exynos_mixer.c

index 8a3aa8ef940adae86e555e29c8c31873720f5370..21ab839ea29a2b96c94ae90d51f554d2af85fba1 100644 (file)
@@ -64,7 +64,6 @@ struct decon_context {
        void __iomem                    *addr;
        struct regmap                   *sysreg;
        struct clk                      *clks[ARRAY_SIZE(decon_clks_name)];
-       int                             pipe;
        unsigned long                   flags;
        unsigned long                   out_type;
        int                             first_win;
@@ -592,7 +591,6 @@ static int decon_bind(struct device *dev, struct device *master, void *data)
        int ret;
 
        ctx->drm_dev = drm_dev;
-       ctx->pipe = drm_dev->mode_config.num_crtc;
        drm_dev->max_vblank_count = 0xffffffff;
 
        for (win = ctx->first_win; win < WINDOWS_NR; win++) {
index 4320b3bbc4c00274686dad4ddbb569c50c04be10..1ffb0b13fbdcce300a41f926de129e4fae7766c9 100644 (file)
@@ -55,7 +55,6 @@ struct decon_context {
        unsigned long                   irq_flags;
        bool                            i80_if;
        bool                            suspended;
-       int                             pipe;
        wait_queue_head_t               wait_vsync_queue;
        atomic_t                        wait_vsync_event;
 
@@ -131,7 +130,6 @@ static int decon_ctx_initialize(struct decon_context *ctx,
                        struct drm_device *drm_dev)
 {
        ctx->drm_dev = drm_dev;
-       ctx->pipe = drm_dev->mode_config.num_crtc;
 
        decon_clear_channels(ctx->crtc);
 
@@ -605,7 +603,7 @@ static irqreturn_t decon_irq_handler(int irq, void *dev_id)
                writel(clear_bit, ctx->regs + VIDINTCON1);
 
        /* check the crtc is detached already from encoder */
-       if (ctx->pipe < 0 || !ctx->drm_dev)
+       if (!ctx->drm_dev)
                goto out;
 
        if (!ctx->i80_if) {
index 969145fd8083b997770b4ba6dce8ca8f3aae6606..6d073e2e7453788e689ed8c7e2e26b028d9a7442 100644 (file)
@@ -179,7 +179,6 @@ struct fimd_context {
        u32                             i80ifcon;
        bool                            i80_if;
        bool                            suspended;
-       int                             pipe;
        wait_queue_head_t               wait_vsync_queue;
        atomic_t                        wait_vsync_event;
        atomic_t                        win_updated;
@@ -354,18 +353,13 @@ static void fimd_clear_channels(struct exynos_drm_crtc *crtc)
 
        /* Wait for vsync, as disable channel takes effect at next vsync */
        if (ch_enabled) {
-               int pipe = ctx->pipe;
-
-               /* ensure that vblank interrupt won't be reported to core */
                ctx->suspended = false;
-               ctx->pipe = -1;
 
                fimd_enable_vblank(ctx->crtc);
                fimd_wait_for_vblank(ctx->crtc);
                fimd_disable_vblank(ctx->crtc);
 
                ctx->suspended = true;
-               ctx->pipe = pipe;
        }
 
        clk_disable_unprepare(ctx->lcd_clk);
@@ -899,7 +893,7 @@ static void fimd_te_handler(struct exynos_drm_crtc *crtc)
        u32 trg_type = ctx->driver_data->trg_type;
 
        /* Checks the crtc is detached already from encoder */
-       if (ctx->pipe < 0 || !ctx->drm_dev)
+       if (!ctx->drm_dev)
                return;
 
        if (trg_type == I80_HW_TRG)
@@ -957,7 +951,7 @@ static irqreturn_t fimd_irq_handler(int irq, void *dev_id)
                writel(clear_bit, ctx->regs + VIDINTCON1);
 
        /* check the crtc is detached already from encoder */
-       if (ctx->pipe < 0 || !ctx->drm_dev)
+       if (!ctx->drm_dev)
                goto out;
 
        if (!ctx->i80_if)
@@ -987,7 +981,6 @@ static int fimd_bind(struct device *dev, struct device *master, void *data)
        int ret;
 
        ctx->drm_dev = drm_dev;
-       ctx->pipe = drm_dev->mode_config.num_crtc;
 
        for (i = 0; i < WINDOWS_NR; i++) {
                ctx->configs[i].pixel_formats = fimd_formats;
index 92ebeaf50cdba26efb4ace6e9a2b386012bcd224..cb8a728425371856dc9ef6c0b533574cc2038f96 100644 (file)
@@ -51,7 +51,6 @@ struct vidi_context {
        bool                            suspended;
        struct timer_list               timer;
        struct mutex                    lock;
-       int                             pipe;
 };
 
 static inline struct vidi_context *encoder_to_vidi(struct drm_encoder *e)
@@ -153,15 +152,6 @@ static void vidi_disable(struct exynos_drm_crtc *crtc)
        mutex_unlock(&ctx->lock);
 }
 
-static int vidi_ctx_initialize(struct vidi_context *ctx,
-                       struct drm_device *drm_dev)
-{
-       ctx->drm_dev = drm_dev;
-       ctx->pipe = drm_dev->mode_config.num_crtc;
-
-       return 0;
-}
-
 static const struct exynos_drm_crtc_ops vidi_crtc_ops = {
        .enable = vidi_enable,
        .disable = vidi_disable,
@@ -175,9 +165,6 @@ static void vidi_fake_vblank_timer(unsigned long arg)
 {
        struct vidi_context *ctx = (void *)arg;
 
-       if (ctx->pipe < 0)
-               return;
-
        if (drm_crtc_handle_vblank(&ctx->crtc->base))
                mod_timer(&ctx->timer,
                        jiffies + msecs_to_jiffies(VIDI_REFRESH_TIME) - 1);
@@ -397,7 +384,7 @@ static int vidi_bind(struct device *dev, struct device *master, void *data)
        unsigned int i;
        int pipe, ret;
 
-       vidi_ctx_initialize(ctx, drm_dev);
+       ctx->drm_dev = drm_dev;
 
        plane_config.pixel_formats = formats;
        plane_config.num_pixel_formats = ARRAY_SIZE(formats);
index 3722b5ffabd10f6fb8140125962c6615c385f2e0..1cd84cb8d3fb980daa6e4142e2e7b42e24e0433f 100644 (file)
@@ -99,7 +99,6 @@ struct mixer_context {
        struct drm_device       *drm_dev;
        struct exynos_drm_crtc  *crtc;
        struct exynos_drm_plane planes[MIXER_WIN_NR];
-       int                     pipe;
        unsigned long           flags;
 
        struct mixer_resources  mixer_res;
@@ -900,7 +899,6 @@ static int mixer_initialize(struct mixer_context *mixer_ctx,
        priv = drm_dev->dev_private;
 
        mixer_ctx->drm_dev = drm_dev;
-       mixer_ctx->pipe = drm_dev->mode_config.num_crtc;
 
        /* acquire resources: regs, irqs, clocks */
        ret = mixer_resources_init(mixer_ctx);