Hi  Jae,<br>   I tested this patch ,it works on 1680*1050,but I found an issue:<br><br>The ikvm webpage will be black screen when you reboot the host after switching solution between 1680*1050 and 800*600 on chrome browser (my chrome version is 65).<br>you can reproduce it:<br>1, Set host screen solution to 1680*1050 and save it . ikvm webpage works <br>2,Set host screen solution to 800*600 and 56Hz and save it. ikvm webpage works<br>3,Reset host screen solution to   1680*1050 and save it,<br>4,reboot the host,<br>5, the ikvm webpage is black screen when boot to Centos GUI <br>Best,<br>xiuzhi<br><br>AST2500 silicon revision A1 and A2 have a silicon bug which causes<br>extremly long capturing time on specific resolutions (1680 width).<br>To fix the bug, this commit adjusts the capturing window register<br>setting to 1728 if detected width is 1680. The compression window<br>register setting will be kept as the original width so output<br>result will be the same.<br><br>Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com><br>---<br> drivers/media/platform/aspeed-video.c | 26 +++++++++++++++++++-------<br> 1 file changed, 19 insertions(+), 7 deletions(-)<br><br>diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c<br>index da20e93f58d3..c2d4a2e6f20f 100644<br>--- a/drivers/media/platform/aspeed-video.c<br>+++ b/drivers/media/platform/aspeed-video.c<br>@@ -826,8 +826,27 @@ static void aspeed_video_set_resolution(struct aspeed_video *video)<br>  struct v4l2_bt_timings *act = &video->active_timings;<br>     unsigned int size = act->width * act->height;<br> <br>+  /* Set capture/compression frame sizes */<br>        aspeed_video_calc_compressed_size(video, size);<br> <br>+      if (video->active_timings.width == 1680) {<br>+                /*<br>+            * This is a workaround to fix a silicon bug on A1 and A2<br>+             * revisions. Since it doesn't break capturing operation on A0<br>+                * revision, use it for all revisions without checking the<br>+            * revision ID.<br>+               */<br>+          aspeed_video_write(video, VE_CAP_WINDOW,<br>+                                1728 << 16 | act->height);<br>+          size += (1728 - 1680) * video->active_timings.height;<br>+     } else {<br>+             aspeed_video_write(video, VE_CAP_WINDOW,<br>+                                act->width << 16 | act->height);<br>+ }<br>+    aspeed_video_write(video, VE_COMP_WINDOW,<br>+                       act->width << 16 | act->height);<br>+ aspeed_video_write(video, VE_SRC_SCANLINE_OFFSET, act->width * 4);<br>+<br>         /* Don't use direct mode below 1024 x 768 (irqs don't fire) */<br>   if (size < DIRECT_FETCH_THRESHOLD) {<br>          aspeed_video_write(video, VE_TGS_0,<br>@@ -844,13 +863,6 @@ static void aspeed_video_set_resolution(struct aspeed_video *video)<br>            aspeed_video_update(video, VE_CTRL, 0, VE_CTRL_DIRECT_FETCH);<br>    }<br> <br>-    /* Set capture/compression frame sizes */<br>-    aspeed_video_write(video, VE_CAP_WINDOW,<br>-                        act->width << 16 | act->height);<br>- aspeed_video_write(video, VE_COMP_WINDOW,<br>-                       act->width << 16 | act->height);<br>- aspeed_video_write(video, VE_SRC_SCANLINE_OFFSET, act->width * 4);<br>-<br>         size *= 4;<br> <br>       if (size == video->srcs[0].size / 2) {<br>-- <br>2.21.0<br><br><br>