Module Name:    src
Committed By:   jdc
Date:           Mon Oct 31 08:28:46 UTC 2011

Modified Files:
        src/sys/arch/sparc64/dev: ffb.c ffb_mainbus.c ffbvar.h

Log Message:
Add support for the WSDISPLAYIO_GET_EDID ioctl (requires passing a device_t
to ffb_attach).


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 src/sys/arch/sparc64/dev/ffb.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/sparc64/dev/ffb_mainbus.c \
    src/sys/arch/sparc64/dev/ffbvar.h

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/sparc64/dev/ffb.c
diff -u src/sys/arch/sparc64/dev/ffb.c:1.47 src/sys/arch/sparc64/dev/ffb.c:1.48
--- src/sys/arch/sparc64/dev/ffb.c:1.47	Sun Oct 23 06:06:24 2011
+++ src/sys/arch/sparc64/dev/ffb.c	Mon Oct 31 08:28:46 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffb.c,v 1.47 2011/10/23 06:06:24 jdc Exp $	*/
+/*	$NetBSD: ffb.c,v 1.48 2011/10/31 08:28:46 jdc Exp $	*/
 /*	$OpenBSD: creator.c,v 1.20 2002/07/30 19:48:15 jason Exp $	*/
 
 /*
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffb.c,v 1.47 2011/10/23 06:06:24 jdc Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffb.c,v 1.48 2011/10/31 08:28:46 jdc Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -57,6 +57,8 @@ __KERNEL_RCSID(0, "$NetBSD: ffb.c,v 1.47
 #include <dev/wsfont/wsfont.h>
 #include <dev/wscons/wsdisplay_vconsvar.h>
 
+#include <prop/proplib.h>
+
 #include <dev/i2c/i2cvar.h>
 #include <dev/i2c/i2c_bitbang.h>
 #include <dev/i2c/ddcvar.h>
@@ -188,8 +190,9 @@ int ffb_set_vmode(struct ffb_softc *, st
 
 
 void
-ffb_attach(struct ffb_softc *sc)
+ffb_attach(device_t self)
 {
+	struct ffb_softc *sc = device_private(self);
 	struct wsemuldisplaydev_attach_args waa;
 	struct rasops_info *ri;
 	long defattr;
@@ -200,6 +203,7 @@ ffb_attach(struct ffb_softc *sc)
 	u_int blank = WSDISPLAYIO_VIDEO_ON;
 	char buf[6+1];
 	int i, try_edid;
+	prop_data_t data;
 
 	printf(":");
 		
@@ -307,6 +311,10 @@ ffb_attach(struct ffb_softc *sc)
 		if (ffb_debug)
 			edid_print(&sc->sc_edid_info);
 
+		data = prop_data_create_data(sc->sc_edid_data, EDID_DATA_LEN);
+		prop_dictionary_set(device_properties(self), "EDID", data);
+		prop_object_release(data);
+
 		if (try_edid)
 			for (i = 0; i < sc->sc_edid_info.edid_nmodes; i++) {
 				if (ffb_set_vmode(sc,
@@ -493,6 +501,11 @@ ffb_ioctl(void *v, void *vs, u_long cmd,
 	case WSDISPLAYIO_GCURSOR:
 	case WSDISPLAYIO_SCURSOR:
 		return EIO; /* not supported yet */
+		break;
+	case WSDISPLAYIO_GET_EDID: {
+		struct wsdisplayio_edid_info *d = data;
+		return wsdisplayio_get_edid(sc->sc_dev, d);
+	}
 	default:
 		return EPASSTHROUGH;
 	}

Index: src/sys/arch/sparc64/dev/ffb_mainbus.c
diff -u src/sys/arch/sparc64/dev/ffb_mainbus.c:1.11 src/sys/arch/sparc64/dev/ffb_mainbus.c:1.12
--- src/sys/arch/sparc64/dev/ffb_mainbus.c:1.11	Fri Jul  1 18:48:36 2011
+++ src/sys/arch/sparc64/dev/ffb_mainbus.c	Mon Oct 31 08:28:46 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffb_mainbus.c,v 1.11 2011/07/01 18:48:36 dyoung Exp $	*/
+/*	$NetBSD: ffb_mainbus.c,v 1.12 2011/10/31 08:28:46 jdc Exp $	*/
 /*	$OpenBSD: creator_mainbus.c,v 1.4 2002/07/26 16:39:04 jason Exp $	*/
 
 /*
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffb_mainbus.c,v 1.11 2011/07/01 18:48:36 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffb_mainbus.c,v 1.12 2011/10/31 08:28:46 jdc Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -114,7 +114,7 @@ ffb_mainbus_attach(device_t parent, devi
 	if (strcmp(ma->ma_name, "SUNW,afb") == 0)
 		sc->sc_type = FFB_AFB;
 
-	ffb_attach(sc);
+	ffb_attach(self);
 
 	return;
 
Index: src/sys/arch/sparc64/dev/ffbvar.h
diff -u src/sys/arch/sparc64/dev/ffbvar.h:1.11 src/sys/arch/sparc64/dev/ffbvar.h:1.12
--- src/sys/arch/sparc64/dev/ffbvar.h:1.11	Fri Jun  3 03:20:39 2011
+++ src/sys/arch/sparc64/dev/ffbvar.h	Mon Oct 31 08:28:46 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffbvar.h,v 1.11 2011/06/03 03:20:39 christos Exp $	*/
+/*	$NetBSD: ffbvar.h,v 1.12 2011/10/31 08:28:46 jdc Exp $	*/
 /*	$OpenBSD: creatorvar.h,v 1.6 2002/07/30 19:48:15 jason Exp $	*/
 
 /*
@@ -86,4 +86,4 @@ struct ffb_softc {
 #define	FBC_READ(sc,r) \
     bus_space_read_4((sc)->sc_bt, (sc)->sc_fbc_h, (r))
 
-void	ffb_attach(struct ffb_softc *);
+void	ffb_attach(device_t);

Reply via email to