diff options
Diffstat (limited to 'drivers/media/video/samsung/fimg2d4x-exynos4/fimg2d4x_blt.c')
-rw-r--r-- | drivers/media/video/samsung/fimg2d4x-exynos4/fimg2d4x_blt.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/media/video/samsung/fimg2d4x-exynos4/fimg2d4x_blt.c b/drivers/media/video/samsung/fimg2d4x-exynos4/fimg2d4x_blt.c index 9a4f8ad..fc6016c 100644 --- a/drivers/media/video/samsung/fimg2d4x-exynos4/fimg2d4x_blt.c +++ b/drivers/media/video/samsung/fimg2d4x-exynos4/fimg2d4x_blt.c @@ -38,7 +38,9 @@ static inline void fimg2d4x_blit_wait(struct fimg2d_control *info, struct fimg2d fimg2d_dump_command(cmd); if (!fimg2d4x_blit_done_status(info)) - info->err = true; /* device error */ + printk(KERN_ERR "[%s] G2D operation is not finished", __func__); + + fimg2d4x_sw_reset(info); } } @@ -63,19 +65,16 @@ void fimg2d4x_bitblt(struct fimg2d_control *info) fimg2d_clk_on(info); while (1) { + spin_lock(&info->bltlock); cmd = fimg2d_get_first_command(info); if (!cmd) { - spin_lock(&info->bltlock); atomic_set(&info->active, 0); spin_unlock(&info->bltlock); break; } + spin_unlock(&info->bltlock); ctx = cmd->ctx; - if (info->err) { - printk(KERN_ERR "[%s] device error\n", __func__); - goto blitend; - } atomic_set(&info->busy, 1); |