From 4802d809fbfe99b033815ff08eaa3e89f9e445d9 Mon Sep 17 00:00:00 2001 From: Arthur Liberman Date: Tue, 9 Apr 2019 01:03:16 +0300 Subject: [PATCH] osd: don't call osd_wait_vsync_event during HW decoded video playback --- drivers/amlogic/media/osd/osd_fb.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/amlogic/media/osd/osd_fb.c b/drivers/amlogic/media/osd/osd_fb.c index 9b17748..c4bcbb3 100644 --- a/drivers/amlogic/media/osd/osd_fb.c +++ b/drivers/amlogic/media/osd/osd_fb.c @@ -53,6 +53,9 @@ #ifdef CONFIG_INSTABOOT #include #endif +#ifdef CONFIG_AMLOGIC_VPU +#include +#endif /* Local Headers */ #include "osd.h" #include "osd_fb.h" @@ -786,12 +789,19 @@ static int osd_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) ret = copy_from_user(&sync_request, argp, sizeof(struct fb_sync_request_s)); break; + // Only wait for vsync when not HW decoding. case FBIO_WAITFORVSYNC: - vsync_timestamp = (s32)osd_wait_vsync_event(); + if (get_vpu_mem_pd_vmod(VPU_VIU_VD1)) + vsync_timestamp = (s32)osd_wait_vsync_event(); + else + vsync_timestamp = 0; ret = copy_to_user(argp, &vsync_timestamp, sizeof(s32)); break; case FBIO_WAITFORVSYNC_64: - vsync_timestamp_64 = osd_wait_vsync_event(); + if (get_vpu_mem_pd_vmod(VPU_VIU_VD1)) + vsync_timestamp_64 = osd_wait_vsync_event(); + else + vsync_timestamp_64 = 0; ret = copy_to_user(argp, &vsync_timestamp_64, sizeof(s64)); break; case FBIOGET_OSD_SCALE_AXIS: -- 2.7.4