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 */