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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.