Index: wsconsio.h
===================================================================
RCS file: /cvsroot/src/sys/dev/wscons/wsconsio.h,v
retrieving revision 1.106
diff -u -w -r1.106 wsconsio.h
--- wsconsio.h	21 Jan 2013 14:15:03 -0000	1.106
+++ wsconsio.h	22 Jan 2013 19:08:11 -0000
@@ -603,4 +603,64 @@
 #define WSDISPLAYIO_SET_POLLING	_IOW('W', 103, int)
 #define WSDISPLAYIOMGWEHITANDKILLEDASKUNK WSDISPLAYIO_SET_POLLING
 
+/*
+ * this is supposed to replace WSDISPLAYIO_GINFO, WSDISPLAYIO_GTYPE,
+ * WSDISPLAYIO_LINEBYTES etc.
+ */
+
+/* format type - colour index, 'true' colour etc. */
+#define WSFB_RGB	0
+#define WSFB_CI		1	/* colour indexed, see subtype */
+#define WSFB_GREYSCALE	2
+
+/* subtypes, for WSFB_RGB */
+
+/* 32bit pixel formats */
+#define WSFB_xRGB32	0	/* most PCish graphics hardware */
+#define WSFB_xBGR32	1	/* many Sun graphics cards */
+#define WSFB_RGBx32	2	/* SGI O2 for example */
+
+/* 16bit pixel formats */
+#define WSFB_R5G6B5	0	/* 16bit colour */
+#define WSFB_x1R5G5B5	1	/* 15bit colour */
+#define WSFB_x4R4G4B4	2	/* 12bit colour */
+
+/* 8bit pixel formats */
+#define WSFB_R3G3B2	0	/* hardwired RGB */
+
+/*
+ * subtype with WSFB_CI encodes the relevant bits used in the colour map,
+ * for example 16bit colour indexed modes often use only a 12bit palette,
+ * also some HP framebuffers use 8bit pixels with a 6bit palette
+ */
+
+#define WSFB_PIXELFORMAT(d, t, st, f) \
+	(((d) << 24) | ((t) << 16) | ((st) << 8) | (f))
+
+/* common types */
+#define WSPF_RGB32	WSFB_PIXELFORMAT(32, WSFB_RGB, WSFB_xRGB32, 0)
+#define WSPF_BGR32	WSFB_PIXELFORMAT(32, WSFB_RGB, WSFB_xBGR32, 0)
+#define WSPF_SGI32	WSFB_PIXELFORMAT(32, WSFB_RGB, WSFB_RGBx32, 0)
+#define WSPF_RGB16	WSFB_PIXELFORMAT(16, WSFB_RGB, WSFB_R5G6B5, 0)
+#define WSPF_RGB15	WSFB_PIXELFORMAT(16, WSFB_RGB, WSFB_x1R5G5B5, 0)
+#define WSPF_CI8	WSFB_PIXELFORMAT(8,  WSFB_CI, 8, 0)
+#define WSPF_CI12	WSFB_PIXELFORMAT(16, WSFB_CI, 12, 0)
+
+#define WSFB_PIXELSIZE(f)	((f) >> 24)
+#define WSFB_TYPE(f)		((f & 0x00ff0000) >> 16)
+#define WSFB_SUBTYPE(f)		((f & 0xff00) >> 8)
+#define WSFB_CMAPBITS(f)	SUBTYPE(f)
+#define WSFB_FLAGS(f)		(f & 0xff)
+
+struct wsdisplayio_fbinfo {
+	int fbi_width;			/* in pixels */
+	int fbi_height;			/* in lines */
+	int fbi_stride;			/* in bytes */
+	uint32_t fbi_pixelformat;	/* see above */
+	size_t fbi_size;		/* framebuffer size in bytes */
+	uint32_t fbi_flags;
+};
+
+#define WSDISPLAYIO_GET_FBINFO	_IOWR('W', 104, struct wsdisplayio_fbinfo)
+
 #endif /* _DEV_WSCONS_WSCONSIO_H_ */
