On Wed, Nov 12, 2014 at 11:58 PM, Nikolay Dimitrov <picmas...@mail.bg> wrote: > Hi guys, > > I'm trying to use unmodified dizzy build with imx6q sabresd, for > testing video playback. U-Boot outputs HDMI image during boot, but in > Linux there's no HDMI image (no console, no video playback). > > The image is "fsl-image-multimedia-full", kernel 3.10.17. The device > files /dev/video* and /dev/fb* are available, but gstreamer playback > doesn't output any image on the HDMI port (seems to be stuck instead of > playing). > > The kernel cmdline doesn't specify any video settings, which typically > is an issue, but when I add the video bootargs: > > ...video=mxcfb0:dev=hdmi,1024x768M@60,if=RGB24... > > The board stops to print any boot messages after "Starting kernel..." > and seems to be stuck. Removing the video bootargs allows again to boot > normally. > > I must admit that I'm somewhat puzzled by this behavior, as I already > have daizy running with 3.10.17 on a custom board, and the video is > working there with almost the same bootargs. Do you guys have any ideas > for how to configure imx6q sabresd for HDMI video? > > Thanks in advance. Regards, > Nikolay > -- Had same here.
I think there are two problems: * 3.10.17 EDID decoding works only for monitors with EDID extended blocks (patch 0001..) * 1024x768 is not a CEA mode. If I read the code of 3.10.17 correct, HDMI supports only modes which are found in drivers/video/mxc/mxc_edid.c const struct fb_videomode mxc_cea_mode[64]. I hacked up working solution (patch 0002..). Note that this is just a hack - it might lead to incorrect colour space conversion or wrong PixelRepetitionOutput (see mxc_hdmi_setup: hdmi->vic is always 0 for my patches). These patches were tested with two monitors (1280x1024 / 1650x<I forgot>) and seem to work fine. Hope it wipes away your problem Andreas
From 28d25d88aef778162b989000b87fe54fd3660242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzelt...@googlemail.com> Date: Thu, 6 Nov 2014 10:23:01 +0100 Subject: [PATCH 1/4] mxc_hdmi.c: parse EDID extensions only in case monitor supports them MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For monitor not supporting extensions I get: [ 0.829299] mxc_hdmi 20e0000.hdmi_video: mxc_edid_read_internal [ 0.960509] mxc_hdmi 20e0000.hdmi_video: Read EDID again [ 0.960522] mxc_hdmi 20e0000.hdmi_video: mxc_edid_read_internal [ 1.091703] mxc_hdmi 20e0000.hdmi_video: No modes read from edid [ 1.091714] mxc_hdmi 20e0000.hdmi_video: create default modelist and have only 640x480 screen resolution. Signed-off-by: Andreas Müller <schnitzelt...@googlemail.com> --- drivers/video/mxc/mxc_hdmi.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/video/mxc/mxc_hdmi.c b/drivers/video/mxc/mxc_hdmi.c index e510025..8ea7d0d 100644 --- a/drivers/video/mxc/mxc_hdmi.c +++ b/drivers/video/mxc/mxc_hdmi.c @@ -1577,10 +1577,13 @@ static int mxc_edid_read_internal(struct mxc_hdmi *hdmi, unsigned char *edid, memset(&fbi->monspecs, 0, sizeof(fbi->monspecs)); fb_edid_to_monspecs(edid, &fbi->monspecs); - ret = mxc_edid_parse_ext_blk(edid + EDID_LENGTH, - cfg, &fbi->monspecs); - if (ret < 0) - return -ENOENT; + /* edid extension blocks parsing */ + if (extblknum > 0) { + ret = mxc_edid_parse_ext_blk(edid + EDID_LENGTH, + cfg, &fbi->monspecs); + if (ret < 0) + return -ENOENT; + } /* need read segment block? */ if (extblknum > 1) { -- 1.8.3.1
From 06d5731300357b0ff3547acdf26419088d5b3510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzelt...@googlemail.com> Date: Fri, 7 Nov 2014 10:55:09 +0100 Subject: [PATCH 2/4] mxc_hdmi: allow EDID to select non CEA modes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Andreas Müller <schnitzelt...@googlemail.com> --- drivers/video/mxc/mxc_hdmi.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/video/mxc/mxc_hdmi.c b/drivers/video/mxc/mxc_hdmi.c index 8ea7d0d..8352248 100644 --- a/drivers/video/mxc/mxc_hdmi.c +++ b/drivers/video/mxc/mxc_hdmi.c @@ -71,9 +71,6 @@ #define HDMI_EDID_SAME -2 #define HDMI_EDID_NO_MODES -3 -#define NUM_CEA_VIDEO_MODES 64 -#define DEFAULT_VIDEO_MODE 16 /* 1080P */ - #define RGB 0 #define YCBCR444 1 #define YCBCR422_16BITS 2 @@ -1798,13 +1795,13 @@ static void mxc_hdmi_edid_rebuild_modelist(struct mxc_hdmi *hdmi) /* * We might check here if mode is supported by HDMI. * We do not currently support interlaced modes. - * And add CEA modes in the modelist. */ mode = &hdmi->fbi->monspecs.modedb[i]; if (!(mode->vmode & FB_VMODE_INTERLACED) && - (mxc_edid_mode_to_vic(mode) != 0)) { - + mode->xres <= 1920 && + mode->yres <= 1080 && + mode->flag & FB_MODE_IS_STANDARD) { dev_dbg(&hdmi->pdev->dev, "Added mode %d:", i); dev_dbg(&hdmi->pdev->dev, "xres = %d, yres = %d, freq = %d, vmode = %d, flag = %d\n", -- 1.8.3.1
-- _______________________________________________ meta-freescale mailing list meta-freescale@yoctoproject.org https://lists.yoctoproject.org/listinfo/meta-freescale