intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [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
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ 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] 7+ messages in thread

* [PATCH v2 2/6] drm/i915: move VBT based LVDS presence check to intel_bios.c
  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 ` Jani Nikula
  2016-02-09 15:29 ` [PATCH v2 3/6] drm/i915: move VBT based eDP port " Jani Nikula
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ 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.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h   |  1 +
 drivers/gpu/drm/i915/intel_bios.c | 50 ++++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_lvds.c | 53 +--------------------------------------
 3 files changed, 52 insertions(+), 52 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index cf3ef03856db..24bf770907ae 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3394,6 +3394,7 @@ extern void intel_i2c_reset(struct drm_device *dev);
 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);
+bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin);
 
 /* 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 d5e6da01adaa..4f7eba36a849 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -1472,3 +1472,53 @@ bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv)
 
 	return false;
 }
+
+/**
+ * intel_bios_is_lvds_present - is LVDS present in VBT
+ * @dev_priv:	i915 device instance
+ * @i2c_pin:	i2c pin for LVDS if present
+ *
+ * Return true if LVDS is present. If no child devices were parsed from VBT,
+ * assume LVDS is present.
+ */
+bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
+{
+	int i;
+
+	if (!dev_priv->vbt.child_dev_num)
+		return true;
+
+	for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
+		union child_device_config *uchild = dev_priv->vbt.child_dev + i;
+		struct old_child_dev_config *child = &uchild->old;
+
+		/* If the device type is not LFP, continue.
+		 * We have to check both the new identifiers as well as the
+		 * old for compatibility with some BIOSes.
+		 */
+		if (child->device_type != DEVICE_TYPE_INT_LFP &&
+		    child->device_type != DEVICE_TYPE_LFP)
+			continue;
+
+		if (intel_gmbus_is_valid_pin(dev_priv, child->i2c_pin))
+			*i2c_pin = child->i2c_pin;
+
+		/* However, we cannot trust the BIOS writers to populate
+		 * the VBT correctly.  Since LVDS requires additional
+		 * information from AIM blocks, a non-zero addin offset is
+		 * a good indicator that the LVDS is actually present.
+		 */
+		if (child->addin_offset)
+			return true;
+
+		/* But even then some BIOS writers perform some black magic
+		 * and instantiate the device without reference to any
+		 * additional data.  Trust that if the VBT was written into
+		 * the OpRegion then they have validated the LVDS's existence.
+		 */
+		if (dev_priv->opregion.vbt)
+			return true;
+	}
+
+	return false;
+}
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 811ddf7799f0..325acfbc02f3 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -773,57 +773,6 @@ static const struct dmi_system_id intel_no_lvds[] = {
 	{ }	/* terminating entry */
 };
 
-/*
- * Enumerate the child dev array parsed from VBT to check whether
- * the LVDS 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 LVDS is present.
- */
-static bool lvds_is_present_in_vbt(struct drm_device *dev,
-				   u8 *i2c_pin)
-{
-	struct drm_i915_private *dev_priv = dev->dev_private;
-	int i;
-
-	if (!dev_priv->vbt.child_dev_num)
-		return true;
-
-	for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
-		union child_device_config *uchild = dev_priv->vbt.child_dev + i;
-		struct old_child_dev_config *child = &uchild->old;
-
-		/* If the device type is not LFP, continue.
-		 * We have to check both the new identifiers as well as the
-		 * old for compatibility with some BIOSes.
-		 */
-		if (child->device_type != DEVICE_TYPE_INT_LFP &&
-		    child->device_type != DEVICE_TYPE_LFP)
-			continue;
-
-		if (intel_gmbus_is_valid_pin(dev_priv, child->i2c_pin))
-			*i2c_pin = child->i2c_pin;
-
-		/* However, we cannot trust the BIOS writers to populate
-		 * the VBT correctly.  Since LVDS requires additional
-		 * information from AIM blocks, a non-zero addin offset is
-		 * a good indicator that the LVDS is actually present.
-		 */
-		if (child->addin_offset)
-			return true;
-
-		/* But even then some BIOS writers perform some black magic
-		 * and instantiate the device without reference to any
-		 * additional data.  Trust that if the VBT was written into
-		 * the OpRegion then they have validated the LVDS's existence.
-		 */
-		if (dev_priv->opregion.vbt)
-			return true;
-	}
-
-	return false;
-}
-
 static int intel_dual_link_lvds_callback(const struct dmi_system_id *id)
 {
 	DRM_INFO("Forcing lvds to dual link mode on %s\n", id->ident);
@@ -980,7 +929,7 @@ void intel_lvds_init(struct drm_device *dev)
 	}
 
 	pin = GMBUS_PIN_PANEL;
-	if (!lvds_is_present_in_vbt(dev, &pin)) {
+	if (!intel_bios_is_lvds_present(dev_priv, &pin)) {
 		if ((lvds & LVDS_PORT_EN) == 0) {
 			DRM_DEBUG_KMS("LVDS is not present in VBT\n");
 			return;
-- 
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] 7+ messages in thread

* [PATCH v2 3/6] drm/i915: move VBT based eDP port check to intel_bios.c
  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
@ 2016-02-09 15:29 ` Jani Nikula
  2016-02-09 15:29 ` [PATCH v2 4/6] drm/i915: move VBT based DSI presence " Jani Nikula
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ 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.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h   |  1 +
 drivers/gpu/drm/i915/intel_bios.c | 33 +++++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_dp.c   | 21 +--------------------
 3 files changed, 35 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 24bf770907ae..ac66552cb135 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3395,6 +3395,7 @@ 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);
 bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin);
+bool intel_bios_is_port_edp(struct drm_i915_private *dev_priv, enum port port);
 
 /* 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 4f7eba36a849..7f61ca8165f0 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -1522,3 +1522,36 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
 
 	return false;
 }
+
+/**
+ * intel_bios_is_port_edp - is the device in given port eDP
+ * @dev_priv:	i915 device instance
+ * @port:	port to check
+ *
+ * Return true if the device in %port is eDP.
+ */
+bool intel_bios_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
+{
+	union child_device_config *p_child;
+	static const short port_mapping[] = {
+		[PORT_B] = DVO_PORT_DPB,
+		[PORT_C] = DVO_PORT_DPC,
+		[PORT_D] = DVO_PORT_DPD,
+		[PORT_E] = DVO_PORT_DPE,
+	};
+	int i;
+
+	if (!dev_priv->vbt.child_dev_num)
+		return false;
+
+	for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
+		p_child = dev_priv->vbt.child_dev + i;
+
+		if (p_child->common.dvo_port == port_mapping[port] &&
+		    (p_child->common.device_type & DEVICE_TYPE_eDP_BITS) ==
+		    (DEVICE_TYPE_eDP & DEVICE_TYPE_eDP_BITS))
+			return true;
+	}
+
+	return false;
+}
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index a073f04a5330..9a4cfdf0cd70 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -5065,14 +5065,6 @@ put_power:
 bool intel_dp_is_edp(struct drm_device *dev, enum port port)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	union child_device_config *p_child;
-	int i;
-	static const short port_mapping[] = {
-		[PORT_B] = DVO_PORT_DPB,
-		[PORT_C] = DVO_PORT_DPC,
-		[PORT_D] = DVO_PORT_DPD,
-		[PORT_E] = DVO_PORT_DPE,
-	};
 
 	/*
 	 * eDP not supported on g4x. so bail out early just
@@ -5084,18 +5076,7 @@ bool intel_dp_is_edp(struct drm_device *dev, enum port port)
 	if (port == PORT_A)
 		return true;
 
-	if (!dev_priv->vbt.child_dev_num)
-		return false;
-
-	for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
-		p_child = dev_priv->vbt.child_dev + i;
-
-		if (p_child->common.dvo_port == port_mapping[port] &&
-		    (p_child->common.device_type & DEVICE_TYPE_eDP_BITS) ==
-		    (DEVICE_TYPE_eDP & DEVICE_TYPE_eDP_BITS))
-			return true;
-	}
-	return false;
+	return intel_bios_is_port_edp(dev_priv, port);
 }
 
 void
-- 
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] 7+ messages in thread

* [PATCH v2 4/6] drm/i915: move VBT based DSI presence check to intel_bios.c
  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
  2016-02-09 15:29 ` [PATCH v2 3/6] drm/i915: move VBT based eDP port " Jani Nikula
@ 2016-02-09 15:29 ` Jani Nikula
  2016-02-09 15:29 ` [PATCH v2 5/6] drm/i915/panel: setup pwm backlight based on connector type Jani Nikula
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ 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: Move port check to intel_bios.c (Sivakumar)

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h   |  2 +-
 drivers/gpu/drm/i915/intel_bios.c | 39 ++++++++++++++++++++++++++++++++++++++-
 drivers/gpu/drm/i915/intel_dsi.c  | 17 ++++++++---------
 3 files changed, 47 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index ac66552cb135..9e23a40087ca 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1512,7 +1512,6 @@ struct intel_vbt_data {
 
 	/* MIPI DSI */
 	struct {
-		u16 port;
 		u16 panel_id;
 		struct mipi_config *config;
 		struct mipi_pps_data *pps;
@@ -3396,6 +3395,7 @@ bool intel_bios_is_valid_vbt(const void *buf, size_t size);
 bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv);
 bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin);
 bool intel_bios_is_port_edp(struct drm_i915_private *dev_priv, enum port port);
+bool intel_bios_is_dsi_present(struct drm_i915_private *dev_priv, enum port *port);
 
 /* 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 7f61ca8165f0..4b6bd6f2e193 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -1237,7 +1237,6 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
 		    &&p_child->common.device_type & DEVICE_TYPE_MIPI_OUTPUT) {
 			DRM_DEBUG_KMS("Found MIPI as LFP\n");
 			dev_priv->vbt.has_mipi = 1;
-			dev_priv->vbt.dsi.port = p_child->common.dvo_port;
 		}
 
 		child_dev_ptr = dev_priv->vbt.child_dev + count;
@@ -1555,3 +1554,41 @@ bool intel_bios_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
 
 	return false;
 }
+
+/**
+ * intel_bios_is_dsi_present - is DSI present in VBT
+ * @dev_priv:	i915 device instance
+ * @port:	port for DSI if present
+ *
+ * Return true if DSI is present, and return the port in %port.
+ */
+bool intel_bios_is_dsi_present(struct drm_i915_private *dev_priv,
+			       enum port *port)
+{
+	union child_device_config *p_child;
+	u8 dvo_port;
+	int i;
+
+	for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
+		p_child = dev_priv->vbt.child_dev + i;
+
+		if (!(p_child->common.device_type & DEVICE_TYPE_MIPI_OUTPUT))
+			continue;
+
+		dvo_port = p_child->common.dvo_port;
+
+		switch (dvo_port) {
+		case DVO_PORT_MIPIA:
+		case DVO_PORT_MIPIC:
+			*port = dvo_port - DVO_PORT_MIPIA;
+			return true;
+		case DVO_PORT_MIPIB:
+		case DVO_PORT_MIPID:
+			DRM_DEBUG_KMS("VBT has unsupported DSI port %c\n",
+				      port_name(dvo_port - DVO_PORT_MIPIA));
+			break;
+		}
+	}
+
+	return false;
+}
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 378f879f4015..185ec5a13cf6 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -1112,7 +1112,7 @@ void intel_dsi_init(struct drm_device *dev)
 	DRM_DEBUG_KMS("\n");
 
 	/* There is no detection method for MIPI so rely on VBT */
-	if (!dev_priv->vbt.has_mipi)
+	if (!intel_bios_is_dsi_present(dev_priv, &port))
 		return;
 
 	if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
@@ -1153,16 +1153,15 @@ void intel_dsi_init(struct drm_device *dev)
 	intel_connector->unregister = intel_connector_unregister;
 
 	/* Pipe A maps to MIPI DSI port A, pipe B maps to MIPI DSI port C */
-	if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIA) {
-		intel_encoder->crtc_mask = (1 << PIPE_A);
-		intel_dsi->ports = (1 << PORT_A);
-	} else if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIC) {
-		intel_encoder->crtc_mask = (1 << PIPE_B);
-		intel_dsi->ports = (1 << PORT_C);
-	}
+	if (port == PORT_A)
+		intel_encoder->crtc_mask = 1 << PIPE_A;
+	else
+		intel_encoder->crtc_mask = 1 << PIPE_B;
 
 	if (dev_priv->vbt.dsi.config->dual_link)
-		intel_dsi->ports = ((1 << PORT_A) | (1 << PORT_C));
+		intel_dsi->ports = (1 << PORT_A) | (1 << PORT_C);
+	else
+		intel_dsi->ports = 1 << port;
 
 	/* Create a DSI host (and a device) for each port. */
 	for_each_dsi_port(port, intel_dsi->ports) {
-- 
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] 7+ messages in thread

* [PATCH v2 5/6] drm/i915/panel: setup pwm backlight based on connector type
  2016-02-09 15:29 [PATCH v2 1/6] drm/i915: move VBT based TV presence check to intel_bios.c Jani Nikula
                   ` (2 preceding siblings ...)
  2016-02-09 15:29 ` [PATCH v2 4/6] drm/i915: move VBT based DSI presence " Jani Nikula
@ 2016-02-09 15:29 ` Jani Nikula
  2016-02-09 15:29 ` [PATCH v2 6/6] drm/i915/bios: drop has_mipi in favor of intel_bios_is_dsi_present Jani Nikula
  2016-02-09 15:46 ` ✗ Fi.CI.BAT: failure for series starting with [v2,1/6] drm/i915: move VBT based TV presence check to intel_bios.c Patchwork
  5 siblings, 0 replies; 7+ messages in thread
From: Jani Nikula @ 2016-02-09 15:29 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Use the connector type instead of VBT directly to decide which backlight
mechanism to use on VLV/CHV. (Indirectly, this is the same thing, but
hides the VBT use.)

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_panel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 21ee6477bf98..f7fbb7c223b1 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -1745,7 +1745,7 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel)
 		panel->backlight.get = pch_get_backlight;
 		panel->backlight.hz_to_pwm = pch_hz_to_pwm;
 	} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
-		if (dev_priv->vbt.has_mipi) {
+		if (connector->base.connector_type == DRM_MODE_CONNECTOR_DSI) {
 			panel->backlight.setup = pwm_setup_backlight;
 			panel->backlight.enable = pwm_enable_backlight;
 			panel->backlight.disable = pwm_disable_backlight;
-- 
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] 7+ messages in thread

* [PATCH v2 6/6] drm/i915/bios: drop has_mipi in favor of intel_bios_is_dsi_present
  2016-02-09 15:29 [PATCH v2 1/6] drm/i915: move VBT based TV presence check to intel_bios.c Jani Nikula
                   ` (3 preceding siblings ...)
  2016-02-09 15:29 ` [PATCH v2 5/6] drm/i915/panel: setup pwm backlight based on connector type Jani Nikula
@ 2016-02-09 15:29 ` Jani Nikula
  2016-02-09 15:46 ` ✗ Fi.CI.BAT: failure for series starting with [v2,1/6] drm/i915: move VBT based TV presence check to intel_bios.c Patchwork
  5 siblings, 0 replies; 7+ messages in thread
From: Jani Nikula @ 2016-02-09 15:29 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Favor a single point of truth instead of duplicating the information.

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

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 9e23a40087ca..ae22f4bc7a44 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1478,7 +1478,6 @@ struct intel_vbt_data {
 	unsigned int lvds_use_ssc:1;
 	unsigned int display_clock_mode:1;
 	unsigned int fdi_rx_polarity_inverted:1;
-	unsigned int has_mipi:1;
 	int lvds_ssc_freq;
 	unsigned int bios_lvds_val; /* initial [PCH_]LVDS reg val in VBIOS */
 
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 4b6bd6f2e193..aa90dc662e7f 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -706,7 +706,7 @@ parse_mipi_config(struct drm_i915_private *dev_priv,
 	const struct mipi_pps_data *pps;
 
 	/* parse MIPI blocks only if LFP type is MIPI */
-	if (!dev_priv->vbt.has_mipi)
+	if (!intel_bios_is_dsi_present(dev_priv, NULL))
 		return;
 
 	/* Initialize this to undefined indicating no generic MIPI support */
@@ -1232,13 +1232,6 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
 			continue;
 		}
 
-		if (p_child->common.dvo_port >= DVO_PORT_MIPIA
-		    && p_child->common.dvo_port <= DVO_PORT_MIPID
-		    &&p_child->common.device_type & DEVICE_TYPE_MIPI_OUTPUT) {
-			DRM_DEBUG_KMS("Found MIPI as LFP\n");
-			dev_priv->vbt.has_mipi = 1;
-		}
-
 		child_dev_ptr = dev_priv->vbt.child_dev + count;
 		count++;
 
@@ -1580,7 +1573,8 @@ bool intel_bios_is_dsi_present(struct drm_i915_private *dev_priv,
 		switch (dvo_port) {
 		case DVO_PORT_MIPIA:
 		case DVO_PORT_MIPIC:
-			*port = dvo_port - DVO_PORT_MIPIA;
+			if (port)
+				*port = dvo_port - DVO_PORT_MIPIA;
 			return true;
 		case DVO_PORT_MIPIB:
 		case DVO_PORT_MIPID:
-- 
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] 7+ messages in thread

* ✗ Fi.CI.BAT: failure for series starting with [v2,1/6] drm/i915: move VBT based TV presence check to intel_bios.c
  2016-02-09 15:29 [PATCH v2 1/6] drm/i915: move VBT based TV presence check to intel_bios.c Jani Nikula
                   ` (4 preceding siblings ...)
  2016-02-09 15:29 ` [PATCH v2 6/6] drm/i915/bios: drop has_mipi in favor of intel_bios_is_dsi_present Jani Nikula
@ 2016-02-09 15:46 ` Patchwork
  5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2016-02-09 15:46 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Summary ==

Series 3202v1 Series without cover letter
http://patchwork.freedesktop.org/api/1.0/series/3202/revisions/1/mbox/

Test core_prop_blob:
        Subgroup basic:
                pass       -> INCOMPLETE (skl-i5k-2)
Test drv_getparams_basic:
        Subgroup basic-eu-total:
                pass       -> DMESG-WARN (skl-i5k-2)
Test drv_module_reload_basic:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_basic:
        Subgroup bad-close:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup create-close:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup create-fd-close:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_ctx_create:
        Subgroup basic:
                pass       -> DMESG-WARN (skl-i5k-2)
Test gem_ctx_param_basic:
        Subgroup basic:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-default:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup invalid-ctx-get:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup invalid-ctx-set:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup invalid-param-get:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup invalid-param-set:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup invalid-size-set:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup non-root-set-no-zeromap:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup root-set:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup root-set-no-zeromap-disabled:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup root-set-no-zeromap-enabled:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_exec_basic:
        Subgroup basic-bsd1:
                skip       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-default:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_exec_parse:
        Subgroup basic-allowed:
                skip       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-rejected:
                skip       -> INCOMPLETE (skl-i5k-2)
Test gem_flink_basic:
        Subgroup bad-flink:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup basic:
                pass       -> DMESG-WARN (skl-i5k-2)
Test gem_mmap:
        Subgroup basic-small-bo:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_mmap_gtt:
        Subgroup basic:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-read:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-read-write-distinct:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup basic-small-bo-tiledy:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-write-cpu-read-gtt:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-write-gtt-no-prefault:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-write-no-prefault:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-write-read:
                pass       -> DMESG-WARN (skl-i5k-2)
Test gem_pread:
        Subgroup basic:
                pass       -> DMESG-WARN (skl-i5k-2)
Test gem_render_linear_blits:
        Subgroup basic:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_render_tiled_blits:
        Subgroup basic:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_ringfill:
        Subgroup basic-default-hang:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-default-interruptible:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_storedw_loop:
        Subgroup basic-blt:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-bsd:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-default:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-vebox:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_sync:
        Subgroup basic-blt:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-bsd1:
                skip       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-default:
                pass       -> SKIP       (skl-i5k-2)
        Subgroup basic-vebox:
                pass       -> INCOMPLETE (skl-i5k-2)
Test gem_tiled_fence_blits:
        Subgroup basic:
                pass       -> INCOMPLETE (skl-i5k-2)
Test kms_addfb_basic:
        Subgroup addfb25-x-tiled:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup addfb25-x-tiled-mismatch:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup addfb25-y-tiled:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup bad-pitch-32:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup basic:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup bo-too-small:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup framebuffer-vs-set-tiling:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup no-handle:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup tile-pitch-mismatch:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup too-wide:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup unused-handle:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup unused-modifier:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup unused-pitches:
                pass       -> INCOMPLETE (skl-i5k-2)
Test kms_flip:
        Subgroup basic-flip-vs-dpms:
                pass       -> DMESG-FAIL (skl-i5k-2)
                pass       -> DMESG-WARN (ilk-hp8440p) UNSTABLE
        Subgroup basic-plain-flip:
                pass       -> DMESG-FAIL (skl-i5k-2)
Test kms_pipe_crc_basic:
        Subgroup bad-nb-words-1:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup bad-source:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup hang-read-crc-pipe-b:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup hang-read-crc-pipe-c:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup nonblocking-crc-pipe-a-frame-sequence:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup nonblocking-crc-pipe-b:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup nonblocking-crc-pipe-c:
                pass       -> DMESG-FAIL (skl-i5k-2)
        Subgroup suspend-read-crc-pipe-a:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup suspend-read-crc-pipe-b:
                dmesg-warn -> INCOMPLETE (skl-i5k-2)
        Subgroup suspend-read-crc-pipe-c:
                pass       -> INCOMPLETE (skl-i5k-2)
                pass       -> DMESG-WARN (bsw-nuc-2)
Test pm_backlight:
        Subgroup basic-brightness:
                skip       -> INCOMPLETE (skl-i5k-2)
Test pm_rpm:
        Subgroup basic-pci-d3-state:
                pass       -> INCOMPLETE (skl-i5k-2)
                pass       -> FAIL       (bdw-nuci7)
        Subgroup basic-rte:
                pass       -> DMESG-WARN (byt-nuc) UNSTABLE
Test pm_rps:
        Subgroup basic-api:
                pass       -> INCOMPLETE (skl-i5k-2)
Test prime_self_import:
        Subgroup basic-llseek-bad:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-llseek-size:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup basic-with_one_bo:
                pass       -> DMESG-WARN (skl-i5k-2)
        Subgroup basic-with_one_bo_two_files:
                pass       -> INCOMPLETE (skl-i5k-2)
        Subgroup basic-with_two_bos:
                pass       -> INCOMPLETE (skl-i5k-2)

bdw-nuci7        total:161  pass:151  dwarn:0   dfail:0   fail:1   skip:9  
bdw-ultra        total:164  pass:152  dwarn:0   dfail:0   fail:0   skip:12 
bsw-nuc-2        total:164  pass:135  dwarn:1   dfail:0   fail:0   skip:28 
byt-nuc          total:164  pass:140  dwarn:1   dfail:0   fail:0   skip:23 
hsw-brixbox      total:164  pass:151  dwarn:0   dfail:0   fail:0   skip:13 
hsw-gt2          total:164  pass:154  dwarn:0   dfail:0   fail:0   skip:10 
ilk-hp8440p      total:164  pass:115  dwarn:1   dfail:0   fail:0   skip:48 
ivb-t430s        total:164  pass:150  dwarn:0   dfail:0   fail:0   skip:14 
skl-i5k-2        total:164  pass:75   dwarn:18  dfail:3   fail:0   skip:10 
snb-dellxps      total:164  pass:142  dwarn:0   dfail:0   fail:0   skip:22 

Results at /archive/results/CI_IGT_test/Patchwork_1383/

1f4f5acc87d9c2093397076060b1613b486f14d1 drm-intel-nightly: 2016y-02m-09d-14h-30m-13s UTC integration manifest
7cb8a7d477425a042cf5d1b549a2b324dbc1dd91 drm/i915/bios: drop has_mipi in favor of intel_bios_is_dsi_present
b1146c7555c9a45a3e3f91317fcd825b45e3d718 drm/i915/panel: setup pwm backlight based on connector type
514061ef905bf749366f0e6e0fed868e40413622 drm/i915: move VBT based DSI presence check to intel_bios.c
a4e96fd205353659b0fcc76db973b8fe1809d2ff drm/i915: move VBT based eDP port check to intel_bios.c
f62c84c1f83bd0efd561be438997f8e1419747a4 drm/i915: move VBT based LVDS presence check to intel_bios.c
5d9a3c78b8a762ef12eff4c2bf83dac4f67dde6c drm/i915: move VBT based TV presence check to intel_bios.c

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

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

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

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2016-02-09 15:29 ` [PATCH v2 3/6] drm/i915: move VBT based eDP port " Jani Nikula
2016-02-09 15:29 ` [PATCH v2 4/6] drm/i915: move VBT based DSI presence " Jani Nikula
2016-02-09 15:29 ` [PATCH v2 5/6] drm/i915/panel: setup pwm backlight based on connector type Jani Nikula
2016-02-09 15:29 ` [PATCH v2 6/6] drm/i915/bios: drop has_mipi in favor of intel_bios_is_dsi_present Jani Nikula
2016-02-09 15:46 ` ✗ Fi.CI.BAT: failure for series starting with [v2,1/6] drm/i915: move VBT based TV presence check to intel_bios.c Patchwork

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).