Hi,
My configuration is to output 2 LVDS on a solo board which means
+--------> IPU0 DP-BG : /dev/fb0 <----> /dev/video16
LVDS #0 -------+
+--------> IPU0 DP-FG : /dev/fb1 <-----> /dev/video17
LVDS #1 --------- IPU0 DC : /dev/fb2 <-----> /dev/video18
I'm running LXDE as my desktop on /dev/fb0. When I play video on /dev/vido17, it just overlaid on top of video16. There's no problem to get back to the desktop after video playback is done. However, if I put the video playback on either video16 or video18, the xwindow just lost the control of /dev/fb0 that results in no desktop after video playback. The link between fb0 and xwindow is broken. I can't get the xwindow unless I stop/start xserver again. I wonder if there is a way to prevent this happen. Any comments will be appreciated. Thanks.
Solved! Go to Solution.
Hi
I debugged a little bit further the issue
I observed that when using Display 1, the blanking signal is followed inmediatelly by an unblanking one.
The above was only true for Display 1. for display 2 the unblanking signal was never sent.
Inspecting the code I found that the unblanking message was only sent when using channel23 (MEM_BG_SYNC) which is used for background plane in display1.
So what I did was to enable the unblankig for the display 2 which uses channel 27 (MEM_DC_SYNC)
This is the patch and it seems to be working
diff --git a/drivers/media/video/mxc/output/mxc_vout.c b/drivers/media/video/mxc/output/mxc_vout.c
index ec789ec..c3ec188 100644
--- a/drivers/media/video/mxc/output/mxc_vout.c
+++ b/drivers/media/video/mxc/output/mxc_vout.c
@@ -1759,7 +1759,7 @@ static void release_disp_output(struct mxc_vout_output *vout)
pos.y = 0;
set_window_position(vout, &pos);
- if (get_ipu_channel(fbi) == MEM_BG_SYNC) {
+ if (get_ipu_channel(fbi) == MEM_BG_SYNC || get_ipu_channel(fbi) == MEM_DC_SYNC) {
console_lock();
fbi->fix.smem_start = vout->disp_bufs[0];
fbi->flags |= FBINFO_MISC_USEREVENT;
Hi
I debugged a little bit further the issue
I observed that when using Display 1, the blanking signal is followed inmediatelly by an unblanking one.
The above was only true for Display 1. for display 2 the unblanking signal was never sent.
Inspecting the code I found that the unblanking message was only sent when using channel23 (MEM_BG_SYNC) which is used for background plane in display1.
So what I did was to enable the unblankig for the display 2 which uses channel 27 (MEM_DC_SYNC)
This is the patch and it seems to be working
diff --git a/drivers/media/video/mxc/output/mxc_vout.c b/drivers/media/video/mxc/output/mxc_vout.c
index ec789ec..c3ec188 100644
--- a/drivers/media/video/mxc/output/mxc_vout.c
+++ b/drivers/media/video/mxc/output/mxc_vout.c
@@ -1759,7 +1759,7 @@ static void release_disp_output(struct mxc_vout_output *vout)
pos.y = 0;
set_window_position(vout, &pos);
- if (get_ipu_channel(fbi) == MEM_BG_SYNC) {
+ if (get_ipu_channel(fbi) == MEM_BG_SYNC || get_ipu_channel(fbi) == MEM_DC_SYNC) {
console_lock();
fbi->fix.smem_start = vout->disp_bufs[0];
fbi->flags |= FBINFO_MISC_USEREVENT;
Hi William.
I have reproduced the issue with latest BSP also on iMX6Q and iMX6DL boards. I will escalate this issue and update this thread as soon as I get more info.