提交 bf56608a 编写于 作者: J Joonyoung Shim 提交者: Inki Dae

drm/exynos: remove unnecessary checking to support iommu

Already drm_iommu_attach_device and drm_iommu_detach_device check
whether support iommu internally, so we don't have to call
is_drm_iommu_supported before call them.
Signed-off-by: NJoonyoung Shim <jy0922.shim@samsung.com>
Tested-by: NMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: NInki Dae <inki.dae@samsung.com>
上级 b2491957
...@@ -514,8 +514,7 @@ static void decon_unbind(struct device *dev, struct device *master, void *data) ...@@ -514,8 +514,7 @@ static void decon_unbind(struct device *dev, struct device *master, void *data)
decon_disable(ctx->crtc); decon_disable(ctx->crtc);
/* detach this sub driver from iommu mapping if supported. */ /* detach this sub driver from iommu mapping if supported. */
if (is_drm_iommu_supported(ctx->drm_dev)) drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
} }
static const struct component_ops decon_component_ops = { static const struct component_ops decon_component_ops = {
......
...@@ -136,8 +136,7 @@ static int decon_ctx_initialize(struct decon_context *ctx, ...@@ -136,8 +136,7 @@ static int decon_ctx_initialize(struct decon_context *ctx,
static void decon_ctx_remove(struct decon_context *ctx) static void decon_ctx_remove(struct decon_context *ctx)
{ {
/* detach this sub driver from iommu mapping if supported. */ /* detach this sub driver from iommu mapping if supported. */
if (is_drm_iommu_supported(ctx->drm_dev)) drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
} }
static u32 decon_calc_clkdiv(struct decon_context *ctx, static u32 decon_calc_clkdiv(struct decon_context *ctx,
......
...@@ -348,13 +348,6 @@ static void fimd_clear_channels(struct exynos_drm_crtc *crtc) ...@@ -348,13 +348,6 @@ static void fimd_clear_channels(struct exynos_drm_crtc *crtc)
pm_runtime_put(ctx->dev); pm_runtime_put(ctx->dev);
} }
static void fimd_iommu_detach_devices(struct fimd_context *ctx)
{
/* detach this sub driver from iommu mapping if supported. */
if (is_drm_iommu_supported(ctx->drm_dev))
drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
}
static u32 fimd_calc_clkdiv(struct fimd_context *ctx, static u32 fimd_calc_clkdiv(struct fimd_context *ctx,
const struct drm_display_mode *mode) const struct drm_display_mode *mode)
{ {
...@@ -978,7 +971,7 @@ static void fimd_unbind(struct device *dev, struct device *master, ...@@ -978,7 +971,7 @@ static void fimd_unbind(struct device *dev, struct device *master,
fimd_disable(ctx->crtc); fimd_disable(ctx->crtc);
fimd_iommu_detach_devices(ctx); drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
if (ctx->display) if (ctx->display)
exynos_dpi_remove(ctx->display); exynos_dpi_remove(ctx->display);
......
...@@ -1319,9 +1319,6 @@ static int g2d_subdrv_probe(struct drm_device *drm_dev, struct device *dev) ...@@ -1319,9 +1319,6 @@ static int g2d_subdrv_probe(struct drm_device *drm_dev, struct device *dev)
return ret; return ret;
} }
if (!is_drm_iommu_supported(drm_dev))
return 0;
ret = drm_iommu_attach_device(drm_dev, dev); ret = drm_iommu_attach_device(drm_dev, dev);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "failed to enable iommu.\n"); dev_err(dev, "failed to enable iommu.\n");
...@@ -1334,9 +1331,6 @@ static int g2d_subdrv_probe(struct drm_device *drm_dev, struct device *dev) ...@@ -1334,9 +1331,6 @@ static int g2d_subdrv_probe(struct drm_device *drm_dev, struct device *dev)
static void g2d_subdrv_remove(struct drm_device *drm_dev, struct device *dev) static void g2d_subdrv_remove(struct drm_device *drm_dev, struct device *dev)
{ {
if (!is_drm_iommu_supported(drm_dev))
return;
drm_iommu_detach_device(drm_dev, dev); drm_iommu_detach_device(drm_dev, dev);
} }
......
...@@ -87,10 +87,8 @@ int drm_iommu_attach_device(struct drm_device *drm_dev, ...@@ -87,10 +87,8 @@ int drm_iommu_attach_device(struct drm_device *drm_dev,
struct device *dev = drm_dev->dev; struct device *dev = drm_dev->dev;
int ret; int ret;
if (!dev->archdata.mapping) { if (!dev->archdata.mapping)
DRM_ERROR("iommu_mapping is null.\n"); return 0;
return -EFAULT;
}
subdrv_dev->dma_parms = devm_kzalloc(subdrv_dev, subdrv_dev->dma_parms = devm_kzalloc(subdrv_dev,
sizeof(*subdrv_dev->dma_parms), sizeof(*subdrv_dev->dma_parms),
...@@ -148,13 +146,10 @@ void drm_iommu_detach_device(struct drm_device *drm_dev, ...@@ -148,13 +146,10 @@ void drm_iommu_detach_device(struct drm_device *drm_dev,
int drm_iommu_attach_device_if_possible(struct exynos_drm_crtc *exynos_crtc, int drm_iommu_attach_device_if_possible(struct exynos_drm_crtc *exynos_crtc,
struct drm_device *drm_dev, struct device *subdrv_dev) struct drm_device *drm_dev, struct device *subdrv_dev)
{ {
int ret = 0;
if (is_drm_iommu_supported(drm_dev)) { if (is_drm_iommu_supported(drm_dev)) {
if (exynos_crtc->ops->clear_channels) if (exynos_crtc->ops->clear_channels)
exynos_crtc->ops->clear_channels(exynos_crtc); exynos_crtc->ops->clear_channels(exynos_crtc);
return drm_iommu_attach_device(drm_dev, subdrv_dev);
} }
return ret; return drm_iommu_attach_device(drm_dev, subdrv_dev);
} }
...@@ -1622,12 +1622,10 @@ static int ipp_subdrv_probe(struct drm_device *drm_dev, struct device *dev) ...@@ -1622,12 +1622,10 @@ static int ipp_subdrv_probe(struct drm_device *drm_dev, struct device *dev)
INIT_LIST_HEAD(&ippdrv->cmd_list); INIT_LIST_HEAD(&ippdrv->cmd_list);
mutex_init(&ippdrv->cmd_lock); mutex_init(&ippdrv->cmd_lock);
if (is_drm_iommu_supported(drm_dev)) { ret = drm_iommu_attach_device(drm_dev, ippdrv->dev);
ret = drm_iommu_attach_device(drm_dev, ippdrv->dev); if (ret) {
if (ret) { DRM_ERROR("failed to activate iommu\n");
DRM_ERROR("failed to activate iommu\n"); goto err;
goto err;
}
} }
} }
...@@ -1637,8 +1635,7 @@ static int ipp_subdrv_probe(struct drm_device *drm_dev, struct device *dev) ...@@ -1637,8 +1635,7 @@ static int ipp_subdrv_probe(struct drm_device *drm_dev, struct device *dev)
/* get ipp driver entry */ /* get ipp driver entry */
list_for_each_entry_continue_reverse(ippdrv, &exynos_drm_ippdrv_list, list_for_each_entry_continue_reverse(ippdrv, &exynos_drm_ippdrv_list,
drv_list) { drv_list) {
if (is_drm_iommu_supported(drm_dev)) drm_iommu_detach_device(drm_dev, ippdrv->dev);
drm_iommu_detach_device(drm_dev, ippdrv->dev);
ipp_remove_id(&ctx->ipp_idr, &ctx->ipp_lock, ipp_remove_id(&ctx->ipp_idr, &ctx->ipp_lock,
ippdrv->prop_list.ipp_id); ippdrv->prop_list.ipp_id);
...@@ -1654,8 +1651,7 @@ static void ipp_subdrv_remove(struct drm_device *drm_dev, struct device *dev) ...@@ -1654,8 +1651,7 @@ static void ipp_subdrv_remove(struct drm_device *drm_dev, struct device *dev)
/* get ipp driver entry */ /* get ipp driver entry */
list_for_each_entry_safe(ippdrv, t, &exynos_drm_ippdrv_list, drv_list) { list_for_each_entry_safe(ippdrv, t, &exynos_drm_ippdrv_list, drv_list) {
if (is_drm_iommu_supported(drm_dev)) drm_iommu_detach_device(drm_dev, ippdrv->dev);
drm_iommu_detach_device(drm_dev, ippdrv->dev);
ipp_remove_id(&ctx->ipp_idr, &ctx->ipp_lock, ipp_remove_id(&ctx->ipp_idr, &ctx->ipp_lock,
ippdrv->prop_list.ipp_id); ippdrv->prop_list.ipp_id);
......
...@@ -891,8 +891,7 @@ static int mixer_initialize(struct mixer_context *mixer_ctx, ...@@ -891,8 +891,7 @@ static int mixer_initialize(struct mixer_context *mixer_ctx,
static void mixer_ctx_remove(struct mixer_context *mixer_ctx) static void mixer_ctx_remove(struct mixer_context *mixer_ctx)
{ {
if (is_drm_iommu_supported(mixer_ctx->drm_dev)) drm_iommu_detach_device(mixer_ctx->drm_dev, mixer_ctx->dev);
drm_iommu_detach_device(mixer_ctx->drm_dev, mixer_ctx->dev);
} }
static int mixer_enable_vblank(struct exynos_drm_crtc *crtc) static int mixer_enable_vblank(struct exynos_drm_crtc *crtc)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册