diff options
Diffstat (limited to 'drivers/gpu/drm')
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos7_drm_decon.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_drv.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_fimd.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_iommu.c | 11 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_iommu.h | 11 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_mixer.c | 3 |
7 files changed, 10 insertions, 31 deletions
diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index ba43437014ce..b2794f815b3c 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c | |||
| @@ -463,7 +463,6 @@ static struct exynos_drm_crtc_ops decon_crtc_ops = { | |||
| 463 | .win_commit = decon_win_commit, | 463 | .win_commit = decon_win_commit, |
| 464 | .win_disable = decon_win_disable, | 464 | .win_disable = decon_win_disable, |
| 465 | .te_handler = decon_te_irq_handler, | 465 | .te_handler = decon_te_irq_handler, |
| 466 | .clear_channels = decon_clear_channels, | ||
| 467 | }; | 466 | }; |
| 468 | 467 | ||
| 469 | static int decon_bind(struct device *dev, struct device *master, void *data) | 468 | static int decon_bind(struct device *dev, struct device *master, void *data) |
| @@ -497,7 +496,9 @@ static int decon_bind(struct device *dev, struct device *master, void *data) | |||
| 497 | goto err; | 496 | goto err; |
| 498 | } | 497 | } |
| 499 | 498 | ||
| 500 | ret = drm_iommu_attach_device_if_possible(ctx->crtc, drm_dev, dev); | 499 | decon_clear_channels(ctx->crtc); |
| 500 | |||
| 501 | ret = drm_iommu_attach_device(drm_dev, dev); | ||
| 501 | if (ret) | 502 | if (ret) |
| 502 | goto err; | 503 | goto err; |
| 503 | 504 | ||
diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c b/drivers/gpu/drm/exynos/exynos7_drm_decon.c index 2c296353c9c3..a80b9184c866 100644 --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c | |||
| @@ -126,7 +126,9 @@ static int decon_ctx_initialize(struct decon_context *ctx, | |||
| 126 | ctx->drm_dev = drm_dev; | 126 | ctx->drm_dev = drm_dev; |
| 127 | ctx->pipe = priv->pipe++; | 127 | ctx->pipe = priv->pipe++; |
| 128 | 128 | ||
| 129 | ret = drm_iommu_attach_device_if_possible(ctx->crtc, drm_dev, ctx->dev); | 129 | decon_clear_channels(ctx->crtc); |
| 130 | |||
| 131 | ret = drm_iommu_attach_device(drm_dev, ctx->dev); | ||
| 130 | if (ret) | 132 | if (ret) |
| 131 | priv->pipe--; | 133 | priv->pipe--; |
| 132 | 134 | ||
| @@ -622,7 +624,6 @@ static const struct exynos_drm_crtc_ops decon_crtc_ops = { | |||
| 622 | .wait_for_vblank = decon_wait_for_vblank, | 624 | .wait_for_vblank = decon_wait_for_vblank, |
| 623 | .win_commit = decon_win_commit, | 625 | .win_commit = decon_win_commit, |
| 624 | .win_disable = decon_win_disable, | 626 | .win_disable = decon_win_disable, |
| 625 | .clear_channels = decon_clear_channels, | ||
| 626 | }; | 627 | }; |
| 627 | 628 | ||
| 628 | 629 | ||
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h index dd00f160c1e5..7da593fd081f 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h | |||
| @@ -177,7 +177,6 @@ struct exynos_drm_crtc_ops { | |||
| 177 | void (*win_disable)(struct exynos_drm_crtc *crtc, unsigned int zpos); | 177 | void (*win_disable)(struct exynos_drm_crtc *crtc, unsigned int zpos); |
| 178 | void (*te_handler)(struct exynos_drm_crtc *crtc); | 178 | void (*te_handler)(struct exynos_drm_crtc *crtc); |
| 179 | void (*clock_enable)(struct exynos_drm_crtc *crtc, bool enable); | 179 | void (*clock_enable)(struct exynos_drm_crtc *crtc, bool enable); |
| 180 | void (*clear_channels)(struct exynos_drm_crtc *crtc); | ||
| 181 | }; | 180 | }; |
| 182 | 181 | ||
| 183 | /* | 182 | /* |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index 300730c7af63..8d362b9365d3 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c | |||
| @@ -887,7 +887,6 @@ static const struct exynos_drm_crtc_ops fimd_crtc_ops = { | |||
| 887 | .win_disable = fimd_win_disable, | 887 | .win_disable = fimd_win_disable, |
| 888 | .te_handler = fimd_te_handler, | 888 | .te_handler = fimd_te_handler, |
| 889 | .clock_enable = fimd_dp_clock_enable, | 889 | .clock_enable = fimd_dp_clock_enable, |
| 890 | .clear_channels = fimd_clear_channels, | ||
| 891 | }; | 890 | }; |
| 892 | 891 | ||
| 893 | static irqreturn_t fimd_irq_handler(int irq, void *dev_id) | 892 | static irqreturn_t fimd_irq_handler(int irq, void *dev_id) |
| @@ -957,7 +956,9 @@ static int fimd_bind(struct device *dev, struct device *master, void *data) | |||
| 957 | if (ctx->display) | 956 | if (ctx->display) |
| 958 | exynos_drm_create_enc_conn(drm_dev, ctx->display); | 957 | exynos_drm_create_enc_conn(drm_dev, ctx->display); |
| 959 | 958 | ||
| 960 | ret = drm_iommu_attach_device_if_possible(ctx->crtc, drm_dev, dev); | 959 | fimd_clear_channels(ctx->crtc); |
| 960 | |||
| 961 | ret = drm_iommu_attach_device(drm_dev, dev); | ||
| 961 | if (ret) | 962 | if (ret) |
| 962 | priv->pipe--; | 963 | priv->pipe--; |
| 963 | 964 | ||
diff --git a/drivers/gpu/drm/exynos/exynos_drm_iommu.c b/drivers/gpu/drm/exynos/exynos_drm_iommu.c index 4c2ec1bef252..055e8ec2ef21 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_iommu.c +++ b/drivers/gpu/drm/exynos/exynos_drm_iommu.c | |||
| @@ -142,14 +142,3 @@ void drm_iommu_detach_device(struct drm_device *drm_dev, | |||
| 142 | iommu_detach_device(mapping->domain, subdrv_dev); | 142 | iommu_detach_device(mapping->domain, subdrv_dev); |
| 143 | drm_release_iommu_mapping(drm_dev); | 143 | drm_release_iommu_mapping(drm_dev); |
| 144 | } | 144 | } |
| 145 | |||
| 146 | int drm_iommu_attach_device_if_possible(struct exynos_drm_crtc *exynos_crtc, | ||
| 147 | struct drm_device *drm_dev, struct device *subdrv_dev) | ||
| 148 | { | ||
| 149 | if (is_drm_iommu_supported(drm_dev)) { | ||
| 150 | if (exynos_crtc->ops->clear_channels) | ||
| 151 | exynos_crtc->ops->clear_channels(exynos_crtc); | ||
| 152 | } | ||
| 153 | |||
| 154 | return drm_iommu_attach_device(drm_dev, subdrv_dev); | ||
| 155 | } | ||
diff --git a/drivers/gpu/drm/exynos/exynos_drm_iommu.h b/drivers/gpu/drm/exynos/exynos_drm_iommu.h index a90357fc163d..dc1b5441f491 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_iommu.h +++ b/drivers/gpu/drm/exynos/exynos_drm_iommu.h | |||
| @@ -34,10 +34,6 @@ static inline bool is_drm_iommu_supported(struct drm_device *drm_dev) | |||
| 34 | return dev->archdata.mapping ? true : false; | 34 | return dev->archdata.mapping ? true : false; |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | int drm_iommu_attach_device_if_possible( | ||
| 38 | struct exynos_drm_crtc *exynos_crtc, struct drm_device *drm_dev, | ||
| 39 | struct device *subdrv_dev); | ||
| 40 | |||
| 41 | #else | 37 | #else |
| 42 | 38 | ||
| 43 | static inline int drm_create_iommu_mapping(struct drm_device *drm_dev) | 39 | static inline int drm_create_iommu_mapping(struct drm_device *drm_dev) |
| @@ -65,12 +61,5 @@ static inline bool is_drm_iommu_supported(struct drm_device *drm_dev) | |||
| 65 | return false; | 61 | return false; |
| 66 | } | 62 | } |
| 67 | 63 | ||
| 68 | static inline int drm_iommu_attach_device_if_possible( | ||
| 69 | struct exynos_drm_crtc *exynos_crtc, struct drm_device *drm_dev, | ||
| 70 | struct device *subdrv_dev) | ||
| 71 | { | ||
| 72 | return 0; | ||
| 73 | } | ||
| 74 | |||
| 75 | #endif | 64 | #endif |
| 76 | #endif | 65 | #endif |
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c index c6384feaf2a2..370e0a306ad0 100644 --- a/drivers/gpu/drm/exynos/exynos_mixer.c +++ b/drivers/gpu/drm/exynos/exynos_mixer.c | |||
| @@ -884,8 +884,7 @@ static int mixer_initialize(struct mixer_context *mixer_ctx, | |||
| 884 | } | 884 | } |
| 885 | } | 885 | } |
| 886 | 886 | ||
| 887 | ret = drm_iommu_attach_device_if_possible(mixer_ctx->crtc, drm_dev, | 887 | ret = drm_iommu_attach_device(drm_dev, mixer_ctx->dev); |
| 888 | mixer_ctx->dev); | ||
| 889 | if (ret) | 888 | if (ret) |
| 890 | priv->pipe--; | 889 | priv->pipe--; |
| 891 | 890 | ||
