mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-16 23:45:31 +08:00
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: Joonyoung Shim <jy0922.shim@samsung.com> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
This commit is contained in:
parent
b24919575e
commit
bf56608a73
@ -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,
|
|||||||
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)
|
|||||||
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,
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
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,
|
|||||||
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,
|
|||||||
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)
|
|||||||
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 @@ err:
|
|||||||
/* 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)
|
|||||||
|
|
||||||
/* 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,
|
|||||||
|
|
||||||
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user