Module Name:    src
Committed By:   jmcneill
Date:           Tue Jan  1 23:22:44 UTC 2013

Modified Files:
        src/sys/arch/arm/omap: files.omap2 omapfb.c

Log Message:
If EDID is supplied, parse and print it. While here, try not to crash
if is_console is false.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/omap/files.omap2
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/omap/omapfb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/omap/files.omap2
diff -u src/sys/arch/arm/omap/files.omap2:1.20 src/sys/arch/arm/omap/files.omap2:1.21
--- src/sys/arch/arm/omap/files.omap2:1.20	Tue Jan  1 13:05:21 2013
+++ src/sys/arch/arm/omap/files.omap2	Tue Jan  1 23:22:44 2013
@@ -1,4 +1,4 @@
-#	$NetBSD: files.omap2,v 1.20 2013/01/01 13:05:21 jmcneill Exp $
+#	$NetBSD: files.omap2,v 1.21 2013/01/01 23:22:44 jmcneill Exp $
 #
 # Configuration info for Texas Instruments OMAP2/OMAP3 CPU support
 # Based on xscale/files.pxa2x0
@@ -125,7 +125,7 @@ file	arch/arm/omap/obio_ohci.c		obioohci
 attach	ehci at obio with omap3_ehci
 file	arch/arm/omap/omap3_ehci.c		omap3_ehci
 
-device	omapfb: rasops16, rasops8, wsemuldisplaydev, vcons
+device	omapfb: rasops16, rasops8, wsemuldisplaydev, vcons, edid
 attach	omapfb at obio
 file	arch/arm/omap/omapfb.c			omapfb
 

Index: src/sys/arch/arm/omap/omapfb.c
diff -u src/sys/arch/arm/omap/omapfb.c:1.6 src/sys/arch/arm/omap/omapfb.c:1.7
--- src/sys/arch/arm/omap/omapfb.c:1.6	Tue Dec 11 22:47:40 2012
+++ src/sys/arch/arm/omap/omapfb.c	Tue Jan  1 23:22:44 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: omapfb.c,v 1.6 2012/12/11 22:47:40 matt Exp $	*/
+/*	$NetBSD: omapfb.c,v 1.7 2013/01/01 23:22:44 jmcneill Exp $	*/
 
 /*
  * Copyright (c) 2010 Michael Lorenz
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: omapfb.c,v 1.6 2012/12/11 22:47:40 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: omapfb.c,v 1.7 2013/01/01 23:22:44 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -56,6 +56,8 @@ __KERNEL_RCSID(0, "$NetBSD: omapfb.c,v 1
 #include <dev/rasops/rasops.h>
 #include <dev/wscons/wsdisplay_vconsvar.h>
 
+#include <dev/videomode/edidvar.h>
+
 struct omapfb_softc {
 	device_t sc_dev;
 
@@ -77,6 +79,9 @@ struct omapfb_softc {
 	struct vcons_data vd;
 	int sc_mode;
 	uint8_t sc_cmap_red[256], sc_cmap_green[256], sc_cmap_blue[256];
+
+	uint8_t sc_edid_data[1024];
+	size_t sc_edid_size;
 };
 
 static int	omapfb_match(device_t, cfdata_t, void *);
@@ -157,8 +162,9 @@ omapfb_attach(device_t parent, device_t 
 	struct rasops_info	*ri;
 	struct wsemuldisplaydev_attach_args aa;
 	prop_dictionary_t	dict;
+	prop_data_t		edid_data;
 	unsigned long		defattr;
-	bool			is_console;
+	bool			is_console = false;
 	uint32_t		sz, reg;
 	int			segs, i, j, adr;
 
@@ -208,8 +214,24 @@ omapfb_attach(device_t parent, device_t 
 #endif	
 	dict = device_properties(self);
 	prop_dictionary_get_bool(dict, "is_console", &is_console);
+	edid_data = prop_dictionary_get(dict, "EDID");
 	//is_console = 1;
 
+	if (edid_data != NULL) {
+		struct edid_info ei;
+
+		sc->sc_edid_size = min(prop_data_size(edid_data), 1024);
+		memset(sc->sc_edid_data, 0, sizeof(sc->sc_edid_data));
+		memcpy(sc->sc_edid_data, prop_data_data_nocopy(edid_data),
+		    sc->sc_edid_size);
+
+		edid_parse(sc->sc_edid_data, &ei);
+		edid_print(&ei);
+	}
+
+	if (!is_console)
+		return;
+
 	/* setup video DMA */
 	sc->sc_vramsize = (12 << 20) + 0x1000; /* 12MB + CLUT */
 

Reply via email to