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

Reply via email to