From: Mark Yao Date: Thu, 30 Mar 2017 12:17:35 +0000 (+0800) Subject: video/rockchip: rga2: retry 10 times when timeout X-Git-Tag: firefly_0821_release~183 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=firefly-linux-kernel-4.4.55.git;a=commitdiff_plain;h=f72e284b22ee9add12e8b02aa0de0d8c90ee0c3a video/rockchip: rga2: retry 10 times when timeout Change-Id: I06b55f282c73735e4a0a5fa4e96f042f8b017646 Signed-off-by: Mark Yao --- diff --git a/drivers/video/rockchip/rga2/rga2_drv.c b/drivers/video/rockchip/rga2/rga2_drv.c index 83bec1058fa4..8b3b176263ee 100644 --- a/drivers/video/rockchip/rga2/rga2_drv.c +++ b/drivers/video/rockchip/rga2/rga2_drv.c @@ -913,9 +913,14 @@ static int rga2_blit_async(rga2_session *session, struct rga2_req *req) static int rga2_blit_sync(rga2_session *session, struct rga2_req *req) { + struct rga2_req req_bak; + int try = 10; int ret = -1; int ret_timeout = 0; + memcpy(&req_bak, req, sizeof(req_bak)); +retry: + #if RGA2_TEST_MSG if (1) {//req->bitblt_mode == 0x2) { print_info(req); @@ -957,6 +962,10 @@ static int rga2_blit_sync(rga2_session *session, struct rga2_req *req) rga2_end = ktime_sub(rga2_end, rga2_start); printk("sync one cmd end time %d\n", (int)ktime_to_us(rga2_end)); #endif + if (ret == -ETIMEDOUT && try--) { + memcpy(req, &req_bak, sizeof(req_bak)); + goto retry; + } return ret; }