dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
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

  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