From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Joonyoung Shim <jy0922.shim@samsung.com>,
dri-devel@lists.freedesktop.org
Cc: sw0312.kim@samsung.com
Subject: Re: [PATCH 3/3] drm/exynos: remove drm_iommu_attach_device_if_possible
Date: Thu, 02 Jul 2015 16:01:34 +0200 [thread overview]
Message-ID: <5595443E.60705@samsung.com> (raw)
In-Reply-To: <1435841379-28286-3-git-send-email-jy0922.shim@samsung.com>
Hello,
On 2015-07-02 14:49, Joonyoung Shim wrote:
> Already drm_iommu_attach_device checks whether support iommu internally.
> It should clear channels always regardless iommu support. We didn't know
> because we can detect the problem when iommu is enabled, so we don't
> have to use drm_iommu_attach_device_if_possible and then we can remove
> drm_iommu_attach_device_if_possible and clear_channels function pointer.
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 5 +++--
> drivers/gpu/drm/exynos/exynos7_drm_decon.c | 5 +++--
> drivers/gpu/drm/exynos/exynos_drm_drv.h | 1 -
> drivers/gpu/drm/exynos/exynos_drm_fimd.c | 5 +++--
> drivers/gpu/drm/exynos/exynos_drm_iommu.c | 11 -----------
> drivers/gpu/drm/exynos/exynos_drm_iommu.h | 11 -----------
> 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 ba43437..b2794f8 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 = {
> .win_commit = decon_win_commit,
> .win_disable = decon_win_disable,
> .te_handler = decon_te_irq_handler,
> - .clear_channels = decon_clear_channels,
> };
>
> 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)
> goto err;
> }
>
> - ret = drm_iommu_attach_device_if_possible(ctx->crtc, drm_dev, dev);
> + decon_clear_channels(ctx->crtc);
> +
> + ret = drm_iommu_attach_device(drm_dev, dev);
> if (ret)
> goto err;
>
> diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
> index 2c29635..a80b918 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,
> ctx->drm_dev = drm_dev;
> ctx->pipe = priv->pipe++;
>
> - ret = drm_iommu_attach_device_if_possible(ctx->crtc, drm_dev, ctx->dev);
> + decon_clear_channels(ctx->crtc);
> +
> + ret = drm_iommu_attach_device(drm_dev, ctx->dev);
> if (ret)
> priv->pipe--;
>
> @@ -622,7 +624,6 @@ static const struct exynos_drm_crtc_ops decon_crtc_ops = {
> .wait_for_vblank = decon_wait_for_vblank,
> .win_commit = decon_win_commit,
> .win_disable = decon_win_disable,
> - .clear_channels = decon_clear_channels,
> };
>
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h
> index dd00f16..7da593f 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 {
> void (*win_disable)(struct exynos_drm_crtc *crtc, unsigned int zpos);
> void (*te_handler)(struct exynos_drm_crtc *crtc);
> void (*clock_enable)(struct exynos_drm_crtc *crtc, bool enable);
> - void (*clear_channels)(struct exynos_drm_crtc *crtc);
> };
>
> /*
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> index 300730c..8d362b9 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 = {
> .win_disable = fimd_win_disable,
> .te_handler = fimd_te_handler,
> .clock_enable = fimd_dp_clock_enable,
> - .clear_channels = fimd_clear_channels,
> };
>
> 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)
> if (ctx->display)
> exynos_drm_create_enc_conn(drm_dev, ctx->display);
>
> - ret = drm_iommu_attach_device_if_possible(ctx->crtc, drm_dev, dev);
> + fimd_clear_channels(ctx->crtc);
> +
> + ret = drm_iommu_attach_device(drm_dev, dev);
> if (ret)
> priv->pipe--;
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_iommu.c b/drivers/gpu/drm/exynos/exynos_drm_iommu.c
> index 4c2ec1b..055e8ec 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,
> iommu_detach_device(mapping->domain, subdrv_dev);
> drm_release_iommu_mapping(drm_dev);
> }
> -
> -int drm_iommu_attach_device_if_possible(struct exynos_drm_crtc *exynos_crtc,
> - struct drm_device *drm_dev, struct device *subdrv_dev)
> -{
> - if (is_drm_iommu_supported(drm_dev)) {
> - if (exynos_crtc->ops->clear_channels)
> - exynos_crtc->ops->clear_channels(exynos_crtc);
> - }
> -
> - return drm_iommu_attach_device(drm_dev, subdrv_dev);
> -}
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_iommu.h b/drivers/gpu/drm/exynos/exynos_drm_iommu.h
> index a90357f..dc1b544 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)
> return dev->archdata.mapping ? true : false;
> }
>
> -int drm_iommu_attach_device_if_possible(
> - struct exynos_drm_crtc *exynos_crtc, struct drm_device *drm_dev,
> - struct device *subdrv_dev);
> -
> #else
>
> 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)
> return false;
> }
>
> -static inline int drm_iommu_attach_device_if_possible(
> - struct exynos_drm_crtc *exynos_crtc, struct drm_device *drm_dev,
> - struct device *subdrv_dev)
> -{
> - return 0;
> -}
> -
> #endif
> #endif
> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
> index 1a01c48..8c461b1 100644
> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> @@ -881,8 +881,7 @@ static int mixer_initialize(struct mixer_context *mixer_ctx,
> }
> }
>
> - ret = drm_iommu_attach_device_if_possible(mixer_ctx->crtc, drm_dev,
> - mixer_ctx->dev);
> + ret = drm_iommu_attach_device(drm_dev, mixer_ctx->dev);
> if (ret)
> priv->pipe--;
>
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2015-07-02 14:01 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-02 12:49 [PATCH 1/3] drm/exynos: remove to use ifdef CONFIG_ARM_DMA_USE_IOMMU Joonyoung Shim
2015-07-02 12:49 ` [PATCH 2/3] drm/exynos: remove unnecessary checking to support iommu Joonyoung Shim
2015-07-02 14:00 ` Marek Szyprowski
2015-07-02 12:49 ` [PATCH 3/3] drm/exynos: remove drm_iommu_attach_device_if_possible Joonyoung Shim
2015-07-02 14:01 ` Marek Szyprowski [this message]
2015-07-02 14:00 ` [PATCH 1/3] drm/exynos: remove to use ifdef CONFIG_ARM_DMA_USE_IOMMU Marek Szyprowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5595443E.60705@samsung.com \
--to=m.szyprowski@samsung.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jy0922.shim@samsung.com \
--cc=sw0312.kim@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox