[PATCH 04/25] drm/i915: Add basic support for parsing of VBT OEM Custom Block

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Rohit Jain <rohit.jain at intel.com>

Added support for parsing the OEM Customizable Modes Block (#20)
in the VBIOS table.

Signed-off-by: Rohit Jain <rohit.jain at intel.com>
Reviewed-by: Shobhit Kumar <shobhit.kumar at intel.com>
Reviewed-by: Vijay A. Purushothaman <vijay.a.purushothaman at intel.com>
Acked-by: Jesse Barnes <jesse.barnes at intel.com>
Reviewed-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_bios.c |   15 +++++++++++++++
 drivers/gpu/drm/i915/intel_bios.h |   36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 8168d8f..6c170ca 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -450,6 +450,20 @@ parse_driver_features(struct drm_i915_private *dev_priv,
 }
 
 static void
+parse_oem_custom_data(struct drm_i915_private *dev_priv,
+		       struct bdb_header *bdb)
+{
+	struct bdb_oem_custom *oem_data;
+
+	oem_data = find_section(bdb, BDB_OEM_CUSTOM);
+	if (!oem_data)
+		return;
+
+	/* TBD: Read relevant info into dev_priv */
+	return;
+}
+
+static void
 parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
 {
 	struct bdb_edp *edp;
@@ -685,6 +699,7 @@ intel_parse_bios(struct drm_device *dev)
 	parse_sdvo_device_mapping(dev_priv, bdb);
 	parse_device_mapping(dev_priv, bdb);
 	parse_driver_features(dev_priv, bdb);
+	parse_oem_custom_data(dev_priv, bdb);
 	parse_edp(dev_priv, bdb);
 
 	if (bios)
diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
index dbda6e3..11ff802 100644
--- a/drivers/gpu/drm/i915/intel_bios.h
+++ b/drivers/gpu/drm/i915/intel_bios.h
@@ -432,6 +432,42 @@ struct bdb_driver_features {
 	u8 custom_vbt_version;
 } __attribute__((packed));
 
+struct oem_mode_info {
+	/* Mode Flags */
+	u8 mode_flag_video_bios:1;
+	u8 mode_flag_driver:1;
+	u8 mode_flag_reserved:6;
+
+	/* Display Flags */
+	u8 crt:1;
+	u8 tv:1;
+	u8 efp:1;
+	u8 lfp:1;
+	u8 crt2:1;
+	u8 tv2:1;
+	u8 efp2:1;
+	u8 lfp2:1;
+
+	u16 x_res;
+	u16 y_res;
+
+	/* Colour Depth */
+	u8 color_depth_8bpp:1;
+	u8 color_depth_16bpp:1;
+	u8 color_depth_32bpp:1;
+	u8 color_depth_reserved:5;
+
+	u8 refresh_rate;
+
+	/* TBD: OEM DTD Value (18 bytes) */
+} __attribute__((packed));
+
+struct bdb_oem_custom {
+	u8 num_rows;
+	u8 row_size;
+	struct oem_mode_info mode_info[6]; /* mode_info[]? */
+} __attribute__((packed));
+
 #define EDP_18BPP	0
 #define EDP_24BPP	1
 #define EDP_30BPP	2
-- 
1.7.5.4



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux