intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/6] drm/i915: start hiding away vbt structure from the driver
@ 2016-01-11 19:54 Jani Nikula
  2016-01-11 19:54 ` [PATCH v2 1/6] drm/i915: move VBT based TV presence check to intel_bios.c Jani Nikula
                   ` (7 more replies)
  0 siblings, 8 replies; 17+ messages in thread
From: Jani Nikula @ 2016-01-11 19:54 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Hi all, first real patches since the RFC at [1].

The VBT is a monster and it keeps growing. Originally we've extracted
bits and pieces out of there, and added them cleanly to our own
structures in dev_priv->vbt, with our own macros. Later on we've been
slipping and we have copied stuff from VBT verbatim, using the same
structs and defines as in VBT.

Start abstracting the VBT more, hiding away the VBT specific stuff that
should not be fiddled with outside of intel_bios.c. Make it more
explicit when we're doing so. At this stage, mostly just fork the
private parts into intel_bios_private.h. As prep work, move some stuff
to intel_bios.c to limit the amount of macros needing to be exposed
across the whole driver.

With the MIPI DSI VBT stuff out of the way, this now applies on top of
nightly.


BR,
Jani.

[1] http://mid.gmane.org/cover.1450192823.git.jani.nikula@intel.com


Jani Nikula (6):
  drm/i915: move VBT based TV presence check to intel_bios.c
  drm/i915: move VBT based LVDS presence check to intel_bios.c
  drm/i915: move VBT based eDP port check to intel_bios.c
  drm/i915: move VBT based DSI presence check to intel_bios.c
  drm/i915/panel: setup pwm backlight based on connector type
  drm/i915: hide away VBT private data in a separate header

 Documentation/DocBook/gpu.tmpl            |   2 +-
 drivers/gpu/drm/i915/i915_drv.h           |   5 +-
 drivers/gpu/drm/i915/intel_bios.c         | 156 +++++-
 drivers/gpu/drm/i915/intel_bios.h         | 860 ++----------------------------
 drivers/gpu/drm/i915/intel_bios_private.h | 823 ++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_dp.c           |  21 +-
 drivers/gpu/drm/i915/intel_dsi.c          |  23 +-
 drivers/gpu/drm/i915/intel_lvds.c         |  53 +-
 drivers/gpu/drm/i915/intel_panel.c        |   2 +-
 drivers/gpu/drm/i915/intel_tv.c           |  43 +-
 10 files changed, 1034 insertions(+), 954 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/intel_bios_private.h

-- 
2.1.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread
* [PATCH v2 1/6] drm/i915: move VBT based TV presence check to intel_bios.c
@ 2016-02-09 15:29 Jani Nikula
  2016-02-09 15:29 ` [PATCH v2 2/6] drm/i915: move VBT based LVDS " Jani Nikula
  0 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2016-02-09 15:29 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Hide knowledge about VBT child devices in intel_bios.c.

v2: also move int_tv_support check to intel_bios.c (Sivakumar)

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h   |  1 +
 drivers/gpu/drm/i915/intel_bios.c | 41 ++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_tv.c   | 46 +--------------------------------------
 3 files changed, 43 insertions(+), 45 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 8216665405eb..cf3ef03856db 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3393,6 +3393,7 @@ extern void intel_i2c_reset(struct drm_device *dev);
 /* intel_bios.c */
 int intel_bios_init(struct drm_i915_private *dev_priv);
 bool intel_bios_is_valid_vbt(const void *buf, size_t size);
+bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv);
 
 /* intel_opregion.c */
 #ifdef CONFIG_ACPI
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index bf62a19c8f69..d5e6da01adaa 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -1431,3 +1431,44 @@ intel_bios_init(struct drm_i915_private *dev_priv)
 
 	return 0;
 }
+
+/**
+ * intel_bios_is_tv_present - is integrated TV present in VBT
+ * @dev_priv:	i915 device instance
+ *
+ * Return true if TV is present. If no child devices were parsed from VBT,
+ * assume TV is present.
+ */
+bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv)
+{
+	union child_device_config *p_child;
+	int i;
+
+	if (!dev_priv->vbt.int_tv_support)
+		return false;
+
+	if (!dev_priv->vbt.child_dev_num)
+		return true;
+
+	for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
+		p_child = dev_priv->vbt.child_dev + i;
+		/*
+		 * If the device type is not TV, continue.
+		 */
+		switch (p_child->old.device_type) {
+		case DEVICE_TYPE_INT_TV:
+		case DEVICE_TYPE_TV:
+		case DEVICE_TYPE_TV_SVIDEO_COMPOSITE:
+			break;
+		default:
+			continue;
+		}
+		/* Only when the addin_offset is non-zero, it is regarded
+		 * as present.
+		 */
+		if (p_child->old.addin_offset)
+			return true;
+	}
+
+	return false;
+}
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index 5034b0055169..c27a6aec25e0 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -1530,47 +1530,6 @@ static const struct drm_encoder_funcs intel_tv_enc_funcs = {
 	.destroy = intel_encoder_destroy,
 };
 
-/*
- * Enumerate the child dev array parsed from VBT to check whether
- * the integrated TV is present.
- * If it is present, return 1.
- * If it is not present, return false.
- * If no child dev is parsed from VBT, it assumes that the TV is present.
- */
-static int tv_is_present_in_vbt(struct drm_device *dev)
-{
-	struct drm_i915_private *dev_priv = dev->dev_private;
-	union child_device_config *p_child;
-	int i, ret;
-
-	if (!dev_priv->vbt.child_dev_num)
-		return 1;
-
-	ret = 0;
-	for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
-		p_child = dev_priv->vbt.child_dev + i;
-		/*
-		 * If the device type is not TV, continue.
-		 */
-		switch (p_child->old.device_type) {
-		case DEVICE_TYPE_INT_TV:
-		case DEVICE_TYPE_TV:
-		case DEVICE_TYPE_TV_SVIDEO_COMPOSITE:
-			break;
-		default:
-			continue;
-		}
-		/* Only when the addin_offset is non-zero, it is regarded
-		 * as present.
-		 */
-		if (p_child->old.addin_offset) {
-			ret = 1;
-			break;
-		}
-	}
-	return ret;
-}
-
 void
 intel_tv_init(struct drm_device *dev)
 {
@@ -1586,13 +1545,10 @@ intel_tv_init(struct drm_device *dev)
 	if ((I915_READ(TV_CTL) & TV_FUSE_STATE_MASK) == TV_FUSE_STATE_DISABLED)
 		return;
 
-	if (!tv_is_present_in_vbt(dev)) {
+	if (!intel_bios_is_tv_present(dev_priv)) {
 		DRM_DEBUG_KMS("Integrated TV is not present.\n");
 		return;
 	}
-	/* Even if we have an encoder we may not have a connector */
-	if (!dev_priv->vbt.int_tv_support)
-		return;
 
 	/*
 	 * Sanity check the TV output by checking to see if the
-- 
2.1.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2016-02-09 15:29 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-11 19:54 [PATCH v2 0/6] drm/i915: start hiding away vbt structure from the driver Jani Nikula
2016-01-11 19:54 ` [PATCH v2 1/6] drm/i915: move VBT based TV presence check to intel_bios.c Jani Nikula
2016-01-12  9:45   ` Daniel Vetter
2016-01-14 12:51   ` Mika Kahola
2016-01-11 19:54 ` [PATCH v2 2/6] drm/i915: move VBT based LVDS " Jani Nikula
2016-01-14 12:52   ` Mika Kahola
2016-01-11 19:54 ` [PATCH v2 3/6] drm/i915: move VBT based eDP port " Jani Nikula
2016-01-14 12:52   ` Mika Kahola
2016-01-11 19:54 ` [PATCH v2 4/6] drm/i915: move VBT based DSI presence " Jani Nikula
2016-01-14 12:52   ` Mika Kahola
2016-01-11 19:54 ` [PATCH v2 5/6] drm/i915/panel: setup pwm backlight based on connector type Jani Nikula
2016-01-11 19:54 ` [PATCH v2 6/6] drm/i915: hide away VBT private data in a separate header Jani Nikula
2016-01-14 12:53   ` Mika Kahola
2016-01-11 20:07 ` [PATCH v2 0/6] drm/i915: start hiding away vbt structure from the driver Lukas Wunner
2016-01-12  5:51   ` Jani Nikula
2016-01-12  8:20 ` ✓ success: Fi.CI.BAT Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2016-02-09 15:29 [PATCH v2 1/6] drm/i915: move VBT based TV presence check to intel_bios.c Jani Nikula
2016-02-09 15:29 ` [PATCH v2 2/6] drm/i915: move VBT based LVDS " Jani Nikula

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).