Loading drivers/media/platform/msm/sde/rotator/sde_rotator_core.c +16 −1 Original line number Diff line number Diff line /* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1390,6 +1390,14 @@ static void sde_rotator_commit_handler(struct work_struct *work) entry->item.dst_rect.x, entry->item.dst_rect.y, entry->item.dst_rect.w, entry->item.dst_rect.h); ATRACE_INT("sde_smmu_ctrl", 0); ret = sde_smmu_ctrl(1); if (IS_ERR_VALUE(ret)) { SDEROT_ERR("IOMMU attach failed\n"); goto smmu_error; } ATRACE_INT("sde_smmu_ctrl", 1); ret = sde_rotator_map_and_check_data(entry); if (ret) { SDEROT_ERR("fail to prepare input/output data %d\n", ret); Loading @@ -1415,6 +1423,8 @@ static void sde_rotator_commit_handler(struct work_struct *work) sde_rot_mgr_unlock(mgr); return; error: sde_smmu_ctrl(0); smmu_error: sde_rotator_put_hw_resource(entry->commitq, entry, hw); get_hw_res_err: sde_rotator_signal_output(entry); Loading Loading @@ -1491,6 +1501,7 @@ static void sde_rotator_done_handler(struct work_struct *work) sde_rot_mgr_lock(mgr); sde_rotator_put_hw_resource(entry->commitq, entry, entry->commitq->hw); sde_rotator_signal_output(entry); ATRACE_INT("sde_rot_done", 1); sde_rotator_release_entry(mgr, entry); atomic_dec(&request->pending_count); if (request->retireq && request->retire_work) Loading @@ -1498,6 +1509,10 @@ static void sde_rotator_done_handler(struct work_struct *work) if (entry->item.ts) entry->item.ts[SDE_ROTATOR_TS_RETIRE] = ktime_get(); sde_rot_mgr_unlock(mgr); ATRACE_INT("sde_smmu_ctrl", 3); sde_smmu_ctrl(0); ATRACE_INT("sde_smmu_ctrl", 4); } static bool sde_rotator_verify_format(struct sde_rot_mgr *mgr, Loading drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c +1 −9 Original line number Diff line number Diff line Loading @@ -1089,6 +1089,7 @@ static u32 sde_hw_rotator_wait_done_regdma( !sde_hw_rotator_pending_swts(rot, ctx, &swts), KOFF_TIMEOUT); ATRACE_INT("sde_rot_done", 0); spin_lock_irqsave(&rot->rotisr_lock, flags); last_isr = ctx->last_regdma_isr_status; Loading Loading @@ -1769,7 +1770,6 @@ static int sde_hw_rotator_kickoff(struct sde_rot_hw_resource *hw, struct sde_hw_rotator *rot; struct sde_hw_rotator_resource_info *resinfo; struct sde_hw_rotator_context *ctx; int ret = 0; if (!hw || !entry) { SDEROT_ERR("null hw resource/entry\n"); Loading @@ -1787,12 +1787,6 @@ static int sde_hw_rotator_kickoff(struct sde_rot_hw_resource *hw, return -EINVAL; } ret = sde_smmu_ctrl(1); if (IS_ERR_VALUE(ret)) { SDEROT_ERR("IOMMU attach failed\n"); return ret; } rot->ops.start_rotator(ctx, ctx->q_id); return 0; Loading Loading @@ -1832,8 +1826,6 @@ static int sde_hw_rotator_wait4done(struct sde_rot_hw_resource *hw, ret = rot->ops.wait_rotator_done(ctx, ctx->q_id, 0); sde_smmu_ctrl(0); if (rot->dbgmem) { sde_hw_rotator_unmap_vaddr(&ctx->src_dbgbuf); sde_hw_rotator_unmap_vaddr(&ctx->dst_dbgbuf); Loading Loading
drivers/media/platform/msm/sde/rotator/sde_rotator_core.c +16 −1 Original line number Diff line number Diff line /* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1390,6 +1390,14 @@ static void sde_rotator_commit_handler(struct work_struct *work) entry->item.dst_rect.x, entry->item.dst_rect.y, entry->item.dst_rect.w, entry->item.dst_rect.h); ATRACE_INT("sde_smmu_ctrl", 0); ret = sde_smmu_ctrl(1); if (IS_ERR_VALUE(ret)) { SDEROT_ERR("IOMMU attach failed\n"); goto smmu_error; } ATRACE_INT("sde_smmu_ctrl", 1); ret = sde_rotator_map_and_check_data(entry); if (ret) { SDEROT_ERR("fail to prepare input/output data %d\n", ret); Loading @@ -1415,6 +1423,8 @@ static void sde_rotator_commit_handler(struct work_struct *work) sde_rot_mgr_unlock(mgr); return; error: sde_smmu_ctrl(0); smmu_error: sde_rotator_put_hw_resource(entry->commitq, entry, hw); get_hw_res_err: sde_rotator_signal_output(entry); Loading Loading @@ -1491,6 +1501,7 @@ static void sde_rotator_done_handler(struct work_struct *work) sde_rot_mgr_lock(mgr); sde_rotator_put_hw_resource(entry->commitq, entry, entry->commitq->hw); sde_rotator_signal_output(entry); ATRACE_INT("sde_rot_done", 1); sde_rotator_release_entry(mgr, entry); atomic_dec(&request->pending_count); if (request->retireq && request->retire_work) Loading @@ -1498,6 +1509,10 @@ static void sde_rotator_done_handler(struct work_struct *work) if (entry->item.ts) entry->item.ts[SDE_ROTATOR_TS_RETIRE] = ktime_get(); sde_rot_mgr_unlock(mgr); ATRACE_INT("sde_smmu_ctrl", 3); sde_smmu_ctrl(0); ATRACE_INT("sde_smmu_ctrl", 4); } static bool sde_rotator_verify_format(struct sde_rot_mgr *mgr, Loading
drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c +1 −9 Original line number Diff line number Diff line Loading @@ -1089,6 +1089,7 @@ static u32 sde_hw_rotator_wait_done_regdma( !sde_hw_rotator_pending_swts(rot, ctx, &swts), KOFF_TIMEOUT); ATRACE_INT("sde_rot_done", 0); spin_lock_irqsave(&rot->rotisr_lock, flags); last_isr = ctx->last_regdma_isr_status; Loading Loading @@ -1769,7 +1770,6 @@ static int sde_hw_rotator_kickoff(struct sde_rot_hw_resource *hw, struct sde_hw_rotator *rot; struct sde_hw_rotator_resource_info *resinfo; struct sde_hw_rotator_context *ctx; int ret = 0; if (!hw || !entry) { SDEROT_ERR("null hw resource/entry\n"); Loading @@ -1787,12 +1787,6 @@ static int sde_hw_rotator_kickoff(struct sde_rot_hw_resource *hw, return -EINVAL; } ret = sde_smmu_ctrl(1); if (IS_ERR_VALUE(ret)) { SDEROT_ERR("IOMMU attach failed\n"); return ret; } rot->ops.start_rotator(ctx, ctx->q_id); return 0; Loading Loading @@ -1832,8 +1826,6 @@ static int sde_hw_rotator_wait4done(struct sde_rot_hw_resource *hw, ret = rot->ops.wait_rotator_done(ctx, ctx->q_id, 0); sde_smmu_ctrl(0); if (rot->dbgmem) { sde_hw_rotator_unmap_vaddr(&ctx->src_dbgbuf); sde_hw_rotator_unmap_vaddr(&ctx->dst_dbgbuf); Loading