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