* [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected
@ 2015-08-20 7:47 Jani Nikula
2015-08-20 7:47 ` [PATCH v2 1/7] drm/i915: move ibx_digital_port_connected to intel_dp.c Jani Nikula
` (7 more replies)
0 siblings, 8 replies; 20+ messages in thread
From: Jani Nikula @ 2015-08-20 7:47 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
v2 with missing cases handled and intel_digital_port_connected return
value changed to bool. Mostly it's just the addition of patches 2 and 3,
and rebase of the rest.
BR,
Jani.
Jani Nikula (7):
drm/i915: move ibx_digital_port_connected to intel_dp.c
drm/i915: make g4x_digital_port_connected return boolean status
drm/i915: add MISSING_CASE annotation to ibx_digital_port_connected
drm/i915: add common intel_digital_port_connected function
drm/i915: split ibx_digital_port_connected to ibx and cpt variants
drm/i915: split g4x_digital_port_connected to g4x and vlv variants
drm/i915/bxt: Use correct live status register for BXT platform
drivers/gpu/drm/i915/intel_display.c | 45 --------
drivers/gpu/drm/i915/intel_dp.c | 199 +++++++++++++++++++++++++----------
drivers/gpu/drm/i915/intel_drv.h | 2 -
3 files changed, 145 insertions(+), 101 deletions(-)
--
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] 20+ messages in thread
* [PATCH v2 1/7] drm/i915: move ibx_digital_port_connected to intel_dp.c
2015-08-20 7:47 [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Jani Nikula
@ 2015-08-20 7:47 ` Jani Nikula
2015-08-26 5:04 ` Jindal, Sonika
2015-08-20 7:47 ` [PATCH v2 2/7] drm/i915: make g4x_digital_port_connected return boolean status Jani Nikula
` (6 subsequent siblings)
7 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2015-08-20 7:47 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
The function can be made static there. No functional changes.
Reviewed-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 45 --------------------------
drivers/gpu/drm/i915/intel_dp.c | 61 +++++++++++++++++++++++++++++++-----
drivers/gpu/drm/i915/intel_drv.h | 2 --
3 files changed, 53 insertions(+), 55 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f604ce1c528b..1a0670259cdf 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1061,51 +1061,6 @@ static void intel_wait_for_pipe_off(struct intel_crtc *crtc)
}
}
-/*
- * ibx_digital_port_connected - is the specified port connected?
- * @dev_priv: i915 private structure
- * @port: the port to test
- *
- * Returns true if @port is connected, false otherwise.
- */
-bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
- struct intel_digital_port *port)
-{
- u32 bit;
-
- if (HAS_PCH_IBX(dev_priv->dev)) {
- switch (port->port) {
- case PORT_B:
- bit = SDE_PORTB_HOTPLUG;
- break;
- case PORT_C:
- bit = SDE_PORTC_HOTPLUG;
- break;
- case PORT_D:
- bit = SDE_PORTD_HOTPLUG;
- break;
- default:
- return true;
- }
- } else {
- switch (port->port) {
- case PORT_B:
- bit = SDE_PORTB_HOTPLUG_CPT;
- break;
- case PORT_C:
- bit = SDE_PORTC_HOTPLUG_CPT;
- break;
- case PORT_D:
- bit = SDE_PORTD_HOTPLUG_CPT;
- break;
- default:
- return true;
- }
- }
-
- return I915_READ(SDEISR) & bit;
-}
-
static const char *state_string(bool enabled)
{
return enabled ? "on" : "off";
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index d32ce4841654..4aa3d664765b 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4473,17 +4473,49 @@ edp_detect(struct intel_dp *intel_dp)
return status;
}
-static enum drm_connector_status
-ironlake_dp_detect(struct intel_dp *intel_dp)
+/*
+ * ibx_digital_port_connected - is the specified port connected?
+ * @dev_priv: i915 private structure
+ * @port: the port to test
+ *
+ * Returns true if @port is connected, false otherwise.
+ */
+static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
+ struct intel_digital_port *port)
{
- struct drm_device *dev = intel_dp_to_dev(intel_dp);
- struct drm_i915_private *dev_priv = dev->dev_private;
- struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+ u32 bit;
- if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
- return connector_status_disconnected;
+ if (HAS_PCH_IBX(dev_priv->dev)) {
+ switch (port->port) {
+ case PORT_B:
+ bit = SDE_PORTB_HOTPLUG;
+ break;
+ case PORT_C:
+ bit = SDE_PORTC_HOTPLUG;
+ break;
+ case PORT_D:
+ bit = SDE_PORTD_HOTPLUG;
+ break;
+ default:
+ return true;
+ }
+ } else {
+ switch (port->port) {
+ case PORT_B:
+ bit = SDE_PORTB_HOTPLUG_CPT;
+ break;
+ case PORT_C:
+ bit = SDE_PORTC_HOTPLUG_CPT;
+ break;
+ case PORT_D:
+ bit = SDE_PORTD_HOTPLUG_CPT;
+ break;
+ default:
+ return true;
+ }
+ }
- return intel_dp_detect_dpcd(intel_dp);
+ return I915_READ(SDEISR) & bit;
}
static int g4x_digital_port_connected(struct drm_device *dev,
@@ -4528,6 +4560,19 @@ static int g4x_digital_port_connected(struct drm_device *dev,
}
static enum drm_connector_status
+ironlake_dp_detect(struct intel_dp *intel_dp)
+{
+ struct drm_device *dev = intel_dp_to_dev(intel_dp);
+ struct drm_i915_private *dev_priv = dev->dev_private;
+ struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+
+ if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
+ return connector_status_disconnected;
+
+ return intel_dp_detect_dpcd(intel_dp);
+}
+
+static enum drm_connector_status
g4x_dp_detect(struct intel_dp *intel_dp)
{
struct drm_device *dev = intel_dp_to_dev(intel_dp);
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 81b7d77a3c8b..a9e6c2789ea9 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1001,8 +1001,6 @@ void intel_encoder_destroy(struct drm_encoder *encoder);
int intel_connector_init(struct intel_connector *);
struct intel_connector *intel_connector_alloc(void);
bool intel_connector_get_hw_state(struct intel_connector *connector);
-bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
- struct intel_digital_port *port);
void intel_connector_attach_encoder(struct intel_connector *connector,
struct intel_encoder *encoder);
struct drm_encoder *intel_best_encoder(struct drm_connector *connector);
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 2/7] drm/i915: make g4x_digital_port_connected return boolean status
2015-08-20 7:47 [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Jani Nikula
2015-08-20 7:47 ` [PATCH v2 1/7] drm/i915: move ibx_digital_port_connected to intel_dp.c Jani Nikula
@ 2015-08-20 7:47 ` Jani Nikula
2015-08-20 8:17 ` R, Durgadoss
2015-08-20 7:47 ` [PATCH v2 3/7] drm/i915: add MISSING_CASE annotation to ibx_digital_port_connected Jani Nikula
` (5 subsequent siblings)
7 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2015-08-20 7:47 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
We should not be hitting any of the default cases in
g4x_digital_port_connected, so add MISSING_CASE annotation and return
boolean status. The current behaviour is just cargo culting from the
days of yonder when the display port support was added to i915.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_dp.c | 26 +++++++++++---------------
1 file changed, 11 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 4aa3d664765b..d35dc0711f9b 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4518,14 +4518,14 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
return I915_READ(SDEISR) & bit;
}
-static int g4x_digital_port_connected(struct drm_device *dev,
- struct intel_digital_port *intel_dig_port)
+static bool g4x_digital_port_connected(struct drm_device *dev,
+ struct intel_digital_port *port)
{
struct drm_i915_private *dev_priv = dev->dev_private;
uint32_t bit;
if (IS_VALLEYVIEW(dev)) {
- switch (intel_dig_port->port) {
+ switch (port->port) {
case PORT_B:
bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
break;
@@ -4536,10 +4536,11 @@ static int g4x_digital_port_connected(struct drm_device *dev,
bit = PORTD_HOTPLUG_LIVE_STATUS_VLV;
break;
default:
- return -EINVAL;
+ MISSING_CASE(port->port);
+ return false;
}
} else {
- switch (intel_dig_port->port) {
+ switch (port->port) {
case PORT_B:
bit = PORTB_HOTPLUG_LIVE_STATUS_G4X;
break;
@@ -4550,13 +4551,12 @@ static int g4x_digital_port_connected(struct drm_device *dev,
bit = PORTD_HOTPLUG_LIVE_STATUS_G4X;
break;
default:
- return -EINVAL;
+ MISSING_CASE(port->port);
+ return false;
}
}
- if ((I915_READ(PORT_HOTPLUG_STAT) & bit) == 0)
- return 0;
- return 1;
+ return I915_READ(PORT_HOTPLUG_STAT) & bit;
}
static enum drm_connector_status
@@ -4577,7 +4577,6 @@ g4x_dp_detect(struct intel_dp *intel_dp)
{
struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
- int ret;
/* Can't disconnect eDP, but you can close the lid... */
if (is_edp(intel_dp)) {
@@ -4589,10 +4588,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
return status;
}
- ret = g4x_digital_port_connected(dev, intel_dig_port);
- if (ret == -EINVAL)
- return connector_status_unknown;
- else if (ret == 0)
+ if (!g4x_digital_port_connected(dev, intel_dig_port))
return connector_status_disconnected;
return intel_dp_detect_dpcd(intel_dp);
@@ -5059,7 +5055,7 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
goto mst_fail;
} else {
- if (g4x_digital_port_connected(dev, intel_dig_port) != 1)
+ if (!g4x_digital_port_connected(dev, intel_dig_port))
goto mst_fail;
}
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 3/7] drm/i915: add MISSING_CASE annotation to ibx_digital_port_connected
2015-08-20 7:47 [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Jani Nikula
2015-08-20 7:47 ` [PATCH v2 1/7] drm/i915: move ibx_digital_port_connected to intel_dp.c Jani Nikula
2015-08-20 7:47 ` [PATCH v2 2/7] drm/i915: make g4x_digital_port_connected return boolean status Jani Nikula
@ 2015-08-20 7:47 ` Jani Nikula
2015-08-20 14:26 ` R, Durgadoss
2015-08-20 7:47 ` [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function Jani Nikula
` (4 subsequent siblings)
7 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2015-08-20 7:47 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
With the case added for eDP on port A (always connected from this
function's point of view), we should not be hitting any of the default
cases in ibx_digital_port_connected, so add MISSING_CASE annotation.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_dp.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index d35dc0711f9b..f08859471841 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4487,6 +4487,8 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
if (HAS_PCH_IBX(dev_priv->dev)) {
switch (port->port) {
+ case PORT_A:
+ return true;
case PORT_B:
bit = SDE_PORTB_HOTPLUG;
break;
@@ -4497,10 +4499,13 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
bit = SDE_PORTD_HOTPLUG;
break;
default:
- return true;
+ MISSING_CASE(port->port);
+ return false;
}
} else {
switch (port->port) {
+ case PORT_A:
+ return true;
case PORT_B:
bit = SDE_PORTB_HOTPLUG_CPT;
break;
@@ -4511,7 +4516,8 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
bit = SDE_PORTD_HOTPLUG_CPT;
break;
default:
- return true;
+ MISSING_CASE(port->port);
+ return false;
}
}
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function
2015-08-20 7:47 [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Jani Nikula
` (2 preceding siblings ...)
2015-08-20 7:47 ` [PATCH v2 3/7] drm/i915: add MISSING_CASE annotation to ibx_digital_port_connected Jani Nikula
@ 2015-08-20 7:47 ` Jani Nikula
2015-08-26 5:26 ` Jindal, Sonika
2015-08-26 15:18 ` Sivakumar Thulasimani
2015-08-20 7:47 ` [PATCH v2 5/7] drm/i915: split ibx_digital_port_connected to ibx and cpt variants Jani Nikula
` (3 subsequent siblings)
7 siblings, 2 replies; 20+ messages in thread
From: Jani Nikula @ 2015-08-20 7:47 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Add a common intel_digital_port_connected() that splits out to functions
for different platforms. No functional changes.
v2: make the function return a boolean
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_dp.c | 41 ++++++++++++++++++++++-------------------
1 file changed, 22 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index f08859471841..f947951a01d4 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4473,13 +4473,6 @@ edp_detect(struct intel_dp *intel_dp)
return status;
}
-/*
- * ibx_digital_port_connected - is the specified port connected?
- * @dev_priv: i915 private structure
- * @port: the port to test
- *
- * Returns true if @port is connected, false otherwise.
- */
static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
struct intel_digital_port *port)
{
@@ -4524,13 +4517,12 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
return I915_READ(SDEISR) & bit;
}
-static bool g4x_digital_port_connected(struct drm_device *dev,
+static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
struct intel_digital_port *port)
{
- struct drm_i915_private *dev_priv = dev->dev_private;
uint32_t bit;
- if (IS_VALLEYVIEW(dev)) {
+ if (IS_VALLEYVIEW(dev_priv)) {
switch (port->port) {
case PORT_B:
bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
@@ -4565,6 +4557,22 @@ static bool g4x_digital_port_connected(struct drm_device *dev,
return I915_READ(PORT_HOTPLUG_STAT) & bit;
}
+/*
+ * intel_digital_port_connected - is the specified port connected?
+ * @dev_priv: i915 private structure
+ * @port: the port to test
+ *
+ * Return %true if @port is connected, %false otherwise.
+ */
+static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
+ struct intel_digital_port *port)
+{
+ if (HAS_PCH_SPLIT(dev_priv))
+ return ibx_digital_port_connected(dev_priv, port);
+ else
+ return g4x_digital_port_connected(dev_priv, port);
+}
+
static enum drm_connector_status
ironlake_dp_detect(struct intel_dp *intel_dp)
{
@@ -4572,7 +4580,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp)
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
- if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
+ if (!intel_digital_port_connected(dev_priv, intel_dig_port))
return connector_status_disconnected;
return intel_dp_detect_dpcd(intel_dp);
@@ -4594,7 +4602,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
return status;
}
- if (!g4x_digital_port_connected(dev, intel_dig_port))
+ if (!intel_digital_port_connected(dev->dev_private, intel_dig_port))
return connector_status_disconnected;
return intel_dp_detect_dpcd(intel_dp);
@@ -5057,13 +5065,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
/* indicate that we need to restart link training */
intel_dp->train_set_valid = false;
- if (HAS_PCH_SPLIT(dev)) {
- if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
- goto mst_fail;
- } else {
- if (!g4x_digital_port_connected(dev, intel_dig_port))
- goto mst_fail;
- }
+ if (!intel_digital_port_connected(dev_priv, intel_dig_port))
+ goto mst_fail;
if (!intel_dp_get_dpcd(intel_dp)) {
goto mst_fail;
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 5/7] drm/i915: split ibx_digital_port_connected to ibx and cpt variants
2015-08-20 7:47 [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Jani Nikula
` (3 preceding siblings ...)
2015-08-20 7:47 ` [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function Jani Nikula
@ 2015-08-20 7:47 ` Jani Nikula
2015-08-20 7:47 ` [PATCH v2 6/7] drm/i915: split g4x_digital_port_connected to g4x and vlv variants Jani Nikula
` (2 subsequent siblings)
7 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2015-08-20 7:47 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Choose the right function at the intel_digital_port_connected level.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_dp.c | 78 +++++++++++++++++++++++------------------
1 file changed, 43 insertions(+), 35 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index f947951a01d4..204d4376be59 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4478,40 +4478,46 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
{
u32 bit;
- if (HAS_PCH_IBX(dev_priv->dev)) {
- switch (port->port) {
- case PORT_A:
- return true;
- case PORT_B:
- bit = SDE_PORTB_HOTPLUG;
- break;
- case PORT_C:
- bit = SDE_PORTC_HOTPLUG;
- break;
- case PORT_D:
- bit = SDE_PORTD_HOTPLUG;
- break;
- default:
- MISSING_CASE(port->port);
- return false;
- }
- } else {
- switch (port->port) {
- case PORT_A:
- return true;
- case PORT_B:
- bit = SDE_PORTB_HOTPLUG_CPT;
- break;
- case PORT_C:
- bit = SDE_PORTC_HOTPLUG_CPT;
- break;
- case PORT_D:
- bit = SDE_PORTD_HOTPLUG_CPT;
- break;
- default:
- MISSING_CASE(port->port);
- return false;
- }
+ switch (port->port) {
+ case PORT_A:
+ return true;
+ case PORT_B:
+ bit = SDE_PORTB_HOTPLUG;
+ break;
+ case PORT_C:
+ bit = SDE_PORTC_HOTPLUG;
+ break;
+ case PORT_D:
+ bit = SDE_PORTD_HOTPLUG;
+ break;
+ default:
+ MISSING_CASE(port->port);
+ return false;
+ }
+
+ return I915_READ(SDEISR) & bit;
+}
+
+static bool cpt_digital_port_connected(struct drm_i915_private *dev_priv,
+ struct intel_digital_port *port)
+{
+ u32 bit;
+
+ switch (port->port) {
+ case PORT_A:
+ return true;
+ case PORT_B:
+ bit = SDE_PORTB_HOTPLUG_CPT;
+ break;
+ case PORT_C:
+ bit = SDE_PORTC_HOTPLUG_CPT;
+ break;
+ case PORT_D:
+ bit = SDE_PORTD_HOTPLUG_CPT;
+ break;
+ default:
+ MISSING_CASE(port->port);
+ return false;
}
return I915_READ(SDEISR) & bit;
@@ -4567,8 +4573,10 @@ static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
struct intel_digital_port *port)
{
- if (HAS_PCH_SPLIT(dev_priv))
+ if (HAS_PCH_IBX(dev_priv))
return ibx_digital_port_connected(dev_priv, port);
+ if (HAS_PCH_SPLIT(dev_priv))
+ return cpt_digital_port_connected(dev_priv, port);
else
return g4x_digital_port_connected(dev_priv, port);
}
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 6/7] drm/i915: split g4x_digital_port_connected to g4x and vlv variants
2015-08-20 7:47 [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Jani Nikula
` (4 preceding siblings ...)
2015-08-20 7:47 ` [PATCH v2 5/7] drm/i915: split ibx_digital_port_connected to ibx and cpt variants Jani Nikula
@ 2015-08-20 7:47 ` Jani Nikula
2015-08-20 7:47 ` [PATCH v2 7/7] drm/i915/bxt: Use correct live status register for BXT platform Jani Nikula
2015-08-26 9:01 ` [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Daniel Vetter
7 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2015-08-20 7:47 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Choose the right function at the intel_digital_port_connected level.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_dp.c | 70 +++++++++++++++++++++++------------------
1 file changed, 39 insertions(+), 31 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 204d4376be59..36291838409b 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4526,38 +4526,44 @@ static bool cpt_digital_port_connected(struct drm_i915_private *dev_priv,
static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
struct intel_digital_port *port)
{
- uint32_t bit;
+ u32 bit;
- if (IS_VALLEYVIEW(dev_priv)) {
- switch (port->port) {
- case PORT_B:
- bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
- break;
- case PORT_C:
- bit = PORTC_HOTPLUG_LIVE_STATUS_VLV;
- break;
- case PORT_D:
- bit = PORTD_HOTPLUG_LIVE_STATUS_VLV;
- break;
- default:
- MISSING_CASE(port->port);
- return false;
- }
- } else {
- switch (port->port) {
- case PORT_B:
- bit = PORTB_HOTPLUG_LIVE_STATUS_G4X;
- break;
- case PORT_C:
- bit = PORTC_HOTPLUG_LIVE_STATUS_G4X;
- break;
- case PORT_D:
- bit = PORTD_HOTPLUG_LIVE_STATUS_G4X;
- break;
- default:
- MISSING_CASE(port->port);
- return false;
- }
+ switch (port->port) {
+ case PORT_B:
+ bit = PORTB_HOTPLUG_LIVE_STATUS_G4X;
+ break;
+ case PORT_C:
+ bit = PORTC_HOTPLUG_LIVE_STATUS_G4X;
+ break;
+ case PORT_D:
+ bit = PORTD_HOTPLUG_LIVE_STATUS_G4X;
+ break;
+ default:
+ MISSING_CASE(port->port);
+ return false;
+ }
+
+ return I915_READ(PORT_HOTPLUG_STAT) & bit;
+}
+
+static bool vlv_digital_port_connected(struct drm_i915_private *dev_priv,
+ struct intel_digital_port *port)
+{
+ u32 bit;
+
+ switch (port->port) {
+ case PORT_B:
+ bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
+ break;
+ case PORT_C:
+ bit = PORTC_HOTPLUG_LIVE_STATUS_VLV;
+ break;
+ case PORT_D:
+ bit = PORTD_HOTPLUG_LIVE_STATUS_VLV;
+ break;
+ default:
+ MISSING_CASE(port->port);
+ return false;
}
return I915_READ(PORT_HOTPLUG_STAT) & bit;
@@ -4577,6 +4583,8 @@ static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
return ibx_digital_port_connected(dev_priv, port);
if (HAS_PCH_SPLIT(dev_priv))
return cpt_digital_port_connected(dev_priv, port);
+ else if (IS_VALLEYVIEW(dev_priv))
+ return vlv_digital_port_connected(dev_priv, port);
else
return g4x_digital_port_connected(dev_priv, port);
}
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 7/7] drm/i915/bxt: Use correct live status register for BXT platform
2015-08-20 7:47 [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Jani Nikula
` (5 preceding siblings ...)
2015-08-20 7:47 ` [PATCH v2 6/7] drm/i915: split g4x_digital_port_connected to g4x and vlv variants Jani Nikula
@ 2015-08-20 7:47 ` Jani Nikula
2015-08-26 5:32 ` Jindal, Sonika
2015-08-26 9:01 ` [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Daniel Vetter
7 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2015-08-20 7:47 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
BXT platform uses live status bits from 0x44440 register to obtain DP
status on hotplug. The existing g4x_digital_port_connected() uses a
different register and hence misses DP hotplug events on BXT
platform. This patch fixes it by using the appropriate register(0x44440)
and live status bits(3:5).
Based on a patch by Durgadoss R <durgadoss.r@intel.com>, from whom the
commit message is shamelessly copy pasted.
Reported-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_dp.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 36291838409b..508156cc750d 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4569,6 +4569,29 @@ static bool vlv_digital_port_connected(struct drm_i915_private *dev_priv,
return I915_READ(PORT_HOTPLUG_STAT) & bit;
}
+static bool bxt_digital_port_connected(struct drm_i915_private *dev_priv,
+ struct intel_digital_port *port)
+{
+ u32 bit;
+
+ switch (port->port) {
+ case PORT_A:
+ bit = BXT_DE_PORT_HP_DDIA;
+ break;
+ case PORT_B:
+ bit = BXT_DE_PORT_HP_DDIB;
+ break;
+ case PORT_C:
+ bit = BXT_DE_PORT_HP_DDIC;
+ break;
+ default:
+ MISSING_CASE(port->port);
+ return false;
+ }
+
+ return I915_READ(GEN8_DE_PORT_ISR) & bit;
+}
+
/*
* intel_digital_port_connected - is the specified port connected?
* @dev_priv: i915 private structure
@@ -4583,6 +4606,8 @@ static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
return ibx_digital_port_connected(dev_priv, port);
if (HAS_PCH_SPLIT(dev_priv))
return cpt_digital_port_connected(dev_priv, port);
+ else if (IS_BROXTON(dev_priv))
+ return bxt_digital_port_connected(dev_priv, port);
else if (IS_VALLEYVIEW(dev_priv))
return vlv_digital_port_connected(dev_priv, port);
else
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v2 2/7] drm/i915: make g4x_digital_port_connected return boolean status
2015-08-20 7:47 ` [PATCH v2 2/7] drm/i915: make g4x_digital_port_connected return boolean status Jani Nikula
@ 2015-08-20 8:17 ` R, Durgadoss
0 siblings, 0 replies; 20+ messages in thread
From: R, Durgadoss @ 2015-08-20 8:17 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx
>-----Original Message-----
>From: Nikula, Jani
>Sent: Thursday, August 20, 2015 1:18 PM
>To: intel-gfx@lists.freedesktop.org
>Cc: R, Durgadoss; Ville Syrjälä; Nikula, Jani
>Subject: [PATCH v2 2/7] drm/i915: make g4x_digital_port_connected return boolean status
>
>We should not be hitting any of the default cases in
>g4x_digital_port_connected, so add MISSING_CASE annotation and return
>boolean status. The current behaviour is just cargo culting from the
>days of yonder when the display port support was added to i915.
>
Reviewed-by: Durgadoss R <durgadoss.r@intel.com>
Thanks,
Durga
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>---
> drivers/gpu/drm/i915/intel_dp.c | 26 +++++++++++---------------
> 1 file changed, 11 insertions(+), 15 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>index 4aa3d664765b..d35dc0711f9b 100644
>--- a/drivers/gpu/drm/i915/intel_dp.c
>+++ b/drivers/gpu/drm/i915/intel_dp.c
>@@ -4518,14 +4518,14 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
> return I915_READ(SDEISR) & bit;
> }
>
>-static int g4x_digital_port_connected(struct drm_device *dev,
>- struct intel_digital_port *intel_dig_port)
>+static bool g4x_digital_port_connected(struct drm_device *dev,
>+ struct intel_digital_port *port)
> {
> struct drm_i915_private *dev_priv = dev->dev_private;
> uint32_t bit;
>
> if (IS_VALLEYVIEW(dev)) {
>- switch (intel_dig_port->port) {
>+ switch (port->port) {
> case PORT_B:
> bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
> break;
>@@ -4536,10 +4536,11 @@ static int g4x_digital_port_connected(struct drm_device *dev,
> bit = PORTD_HOTPLUG_LIVE_STATUS_VLV;
> break;
> default:
>- return -EINVAL;
>+ MISSING_CASE(port->port);
>+ return false;
> }
> } else {
>- switch (intel_dig_port->port) {
>+ switch (port->port) {
> case PORT_B:
> bit = PORTB_HOTPLUG_LIVE_STATUS_G4X;
> break;
>@@ -4550,13 +4551,12 @@ static int g4x_digital_port_connected(struct drm_device *dev,
> bit = PORTD_HOTPLUG_LIVE_STATUS_G4X;
> break;
> default:
>- return -EINVAL;
>+ MISSING_CASE(port->port);
>+ return false;
> }
> }
>
>- if ((I915_READ(PORT_HOTPLUG_STAT) & bit) == 0)
>- return 0;
>- return 1;
>+ return I915_READ(PORT_HOTPLUG_STAT) & bit;
> }
>
> static enum drm_connector_status
>@@ -4577,7 +4577,6 @@ g4x_dp_detect(struct intel_dp *intel_dp)
> {
> struct drm_device *dev = intel_dp_to_dev(intel_dp);
> struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
>- int ret;
>
> /* Can't disconnect eDP, but you can close the lid... */
> if (is_edp(intel_dp)) {
>@@ -4589,10 +4588,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
> return status;
> }
>
>- ret = g4x_digital_port_connected(dev, intel_dig_port);
>- if (ret == -EINVAL)
>- return connector_status_unknown;
>- else if (ret == 0)
>+ if (!g4x_digital_port_connected(dev, intel_dig_port))
> return connector_status_disconnected;
>
> return intel_dp_detect_dpcd(intel_dp);
>@@ -5059,7 +5055,7 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
> if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
> goto mst_fail;
> } else {
>- if (g4x_digital_port_connected(dev, intel_dig_port) != 1)
>+ if (!g4x_digital_port_connected(dev, intel_dig_port))
> goto mst_fail;
> }
>
>--
>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] 20+ messages in thread
* Re: [PATCH v2 3/7] drm/i915: add MISSING_CASE annotation to ibx_digital_port_connected
2015-08-20 7:47 ` [PATCH v2 3/7] drm/i915: add MISSING_CASE annotation to ibx_digital_port_connected Jani Nikula
@ 2015-08-20 14:26 ` R, Durgadoss
0 siblings, 0 replies; 20+ messages in thread
From: R, Durgadoss @ 2015-08-20 14:26 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx
>-----Original Message-----
>From: Nikula, Jani
>Sent: Thursday, August 20, 2015 1:18 PM
>To: intel-gfx@lists.freedesktop.org
>Cc: R, Durgadoss; Ville Syrjälä; Nikula, Jani
>Subject: [PATCH v2 3/7] drm/i915: add MISSING_CASE annotation to ibx_digital_port_connected
>
>With the case added for eDP on port A (always connected from this
>function's point of view), we should not be hitting any of the default
>cases in ibx_digital_port_connected, so add MISSING_CASE annotation.
>
For the entire v2 series,
Reviewed-by: Durgadoss R <durgadoss.r@intel.com>
Thanks,
Durga
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>---
> drivers/gpu/drm/i915/intel_dp.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>index d35dc0711f9b..f08859471841 100644
>--- a/drivers/gpu/drm/i915/intel_dp.c
>+++ b/drivers/gpu/drm/i915/intel_dp.c
>@@ -4487,6 +4487,8 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
>
> if (HAS_PCH_IBX(dev_priv->dev)) {
> switch (port->port) {
>+ case PORT_A:
>+ return true;
> case PORT_B:
> bit = SDE_PORTB_HOTPLUG;
> break;
>@@ -4497,10 +4499,13 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
> bit = SDE_PORTD_HOTPLUG;
> break;
> default:
>- return true;
>+ MISSING_CASE(port->port);
>+ return false;
> }
> } else {
> switch (port->port) {
>+ case PORT_A:
>+ return true;
> case PORT_B:
> bit = SDE_PORTB_HOTPLUG_CPT;
> break;
>@@ -4511,7 +4516,8 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
> bit = SDE_PORTD_HOTPLUG_CPT;
> break;
> default:
>- return true;
>+ MISSING_CASE(port->port);
>+ return false;
> }
> }
>
>--
>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] 20+ messages in thread
* Re: [PATCH v2 1/7] drm/i915: move ibx_digital_port_connected to intel_dp.c
2015-08-20 7:47 ` [PATCH v2 1/7] drm/i915: move ibx_digital_port_connected to intel_dp.c Jani Nikula
@ 2015-08-26 5:04 ` Jindal, Sonika
0 siblings, 0 replies; 20+ messages in thread
From: Jindal, Sonika @ 2015-08-26 5:04 UTC (permalink / raw)
To: intel-gfx; +Cc: Nikula, Jani
Hmm, so we might need to make it global again, because we would want to check the live status for hdmi in the hdmi optimization series:
http://lists.freedesktop.org/archives/intel-gfx/2015-August/074306.html
Maybe we can drop this patch alone?
Regards,
Sonika
-----Original Message-----
From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf Of Jani Nikula
Sent: Thursday, August 20, 2015 1:18 PM
To: intel-gfx@lists.freedesktop.org
Cc: Nikula, Jani
Subject: [Intel-gfx] [PATCH v2 1/7] drm/i915: move ibx_digital_port_connected to intel_dp.c
The function can be made static there. No functional changes.
Reviewed-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 45 --------------------------
drivers/gpu/drm/i915/intel_dp.c | 61 +++++++++++++++++++++++++++++++-----
drivers/gpu/drm/i915/intel_drv.h | 2 --
3 files changed, 53 insertions(+), 55 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f604ce1c528b..1a0670259cdf 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1061,51 +1061,6 @@ static void intel_wait_for_pipe_off(struct intel_crtc *crtc)
}
}
-/*
- * ibx_digital_port_connected - is the specified port connected?
- * @dev_priv: i915 private structure
- * @port: the port to test
- *
- * Returns true if @port is connected, false otherwise.
- */
-bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
- struct intel_digital_port *port)
-{
- u32 bit;
-
- if (HAS_PCH_IBX(dev_priv->dev)) {
- switch (port->port) {
- case PORT_B:
- bit = SDE_PORTB_HOTPLUG;
- break;
- case PORT_C:
- bit = SDE_PORTC_HOTPLUG;
- break;
- case PORT_D:
- bit = SDE_PORTD_HOTPLUG;
- break;
- default:
- return true;
- }
- } else {
- switch (port->port) {
- case PORT_B:
- bit = SDE_PORTB_HOTPLUG_CPT;
- break;
- case PORT_C:
- bit = SDE_PORTC_HOTPLUG_CPT;
- break;
- case PORT_D:
- bit = SDE_PORTD_HOTPLUG_CPT;
- break;
- default:
- return true;
- }
- }
-
- return I915_READ(SDEISR) & bit;
-}
-
static const char *state_string(bool enabled) {
return enabled ? "on" : "off";
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index d32ce4841654..4aa3d664765b 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4473,17 +4473,49 @@ edp_detect(struct intel_dp *intel_dp)
return status;
}
-static enum drm_connector_status
-ironlake_dp_detect(struct intel_dp *intel_dp)
+/*
+ * ibx_digital_port_connected - is the specified port connected?
+ * @dev_priv: i915 private structure
+ * @port: the port to test
+ *
+ * Returns true if @port is connected, false otherwise.
+ */
+static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
+ struct intel_digital_port *port)
{
- struct drm_device *dev = intel_dp_to_dev(intel_dp);
- struct drm_i915_private *dev_priv = dev->dev_private;
- struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+ u32 bit;
- if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
- return connector_status_disconnected;
+ if (HAS_PCH_IBX(dev_priv->dev)) {
+ switch (port->port) {
+ case PORT_B:
+ bit = SDE_PORTB_HOTPLUG;
+ break;
+ case PORT_C:
+ bit = SDE_PORTC_HOTPLUG;
+ break;
+ case PORT_D:
+ bit = SDE_PORTD_HOTPLUG;
+ break;
+ default:
+ return true;
+ }
+ } else {
+ switch (port->port) {
+ case PORT_B:
+ bit = SDE_PORTB_HOTPLUG_CPT;
+ break;
+ case PORT_C:
+ bit = SDE_PORTC_HOTPLUG_CPT;
+ break;
+ case PORT_D:
+ bit = SDE_PORTD_HOTPLUG_CPT;
+ break;
+ default:
+ return true;
+ }
+ }
- return intel_dp_detect_dpcd(intel_dp);
+ return I915_READ(SDEISR) & bit;
}
static int g4x_digital_port_connected(struct drm_device *dev, @@ -4528,6 +4560,19 @@ static int g4x_digital_port_connected(struct drm_device *dev, }
static enum drm_connector_status
+ironlake_dp_detect(struct intel_dp *intel_dp) {
+ struct drm_device *dev = intel_dp_to_dev(intel_dp);
+ struct drm_i915_private *dev_priv = dev->dev_private;
+ struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+
+ if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
+ return connector_status_disconnected;
+
+ return intel_dp_detect_dpcd(intel_dp); }
+
+static enum drm_connector_status
g4x_dp_detect(struct intel_dp *intel_dp) {
struct drm_device *dev = intel_dp_to_dev(intel_dp); diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 81b7d77a3c8b..a9e6c2789ea9 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1001,8 +1001,6 @@ void intel_encoder_destroy(struct drm_encoder *encoder); int intel_connector_init(struct intel_connector *); struct intel_connector *intel_connector_alloc(void); bool intel_connector_get_hw_state(struct intel_connector *connector); -bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
- struct intel_digital_port *port);
void intel_connector_attach_encoder(struct intel_connector *connector,
struct intel_encoder *encoder); struct drm_encoder *intel_best_encoder(struct drm_connector *connector);
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function
2015-08-20 7:47 ` [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function Jani Nikula
@ 2015-08-26 5:26 ` Jindal, Sonika
2015-08-26 15:18 ` Sivakumar Thulasimani
1 sibling, 0 replies; 20+ messages in thread
From: Jindal, Sonika @ 2015-08-26 5:26 UTC (permalink / raw)
To: intel-gfx; +Cc: Nikula, Jani
So, looks like I can use intel_digital_port_connected for hdmi case.
In that case, we can make this function global and add a case for bxt as well.
Regards,
Sonika
-----Original Message-----
From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf Of Jani Nikula
Sent: Thursday, August 20, 2015 1:18 PM
To: intel-gfx@lists.freedesktop.org
Cc: Nikula, Jani
Subject: [Intel-gfx] [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function
Add a common intel_digital_port_connected() that splits out to functions for different platforms. No functional changes.
v2: make the function return a boolean
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_dp.c | 41 ++++++++++++++++++++++-------------------
1 file changed, 22 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index f08859471841..f947951a01d4 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4473,13 +4473,6 @@ edp_detect(struct intel_dp *intel_dp)
return status;
}
-/*
- * ibx_digital_port_connected - is the specified port connected?
- * @dev_priv: i915 private structure
- * @port: the port to test
- *
- * Returns true if @port is connected, false otherwise.
- */
static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
struct intel_digital_port *port) { @@ -4524,13 +4517,12 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
return I915_READ(SDEISR) & bit;
}
-static bool g4x_digital_port_connected(struct drm_device *dev,
+static bool g4x_digital_port_connected(struct drm_i915_private
+*dev_priv,
struct intel_digital_port *port) {
- struct drm_i915_private *dev_priv = dev->dev_private;
uint32_t bit;
- if (IS_VALLEYVIEW(dev)) {
+ if (IS_VALLEYVIEW(dev_priv)) {
switch (port->port) {
case PORT_B:
bit = PORTB_HOTPLUG_LIVE_STATUS_VLV; @@ -4565,6 +4557,22 @@ static bool g4x_digital_port_connected(struct drm_device *dev,
return I915_READ(PORT_HOTPLUG_STAT) & bit; }
+/*
+ * intel_digital_port_connected - is the specified port connected?
+ * @dev_priv: i915 private structure
+ * @port: the port to test
+ *
+ * Return %true if @port is connected, %false otherwise.
+ */
+static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
+ struct intel_digital_port *port)
+{
+ if (HAS_PCH_SPLIT(dev_priv))
+ return ibx_digital_port_connected(dev_priv, port);
+ else
+ return g4x_digital_port_connected(dev_priv, port); }
+
static enum drm_connector_status
ironlake_dp_detect(struct intel_dp *intel_dp) { @@ -4572,7 +4580,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp)
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
- if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
+ if (!intel_digital_port_connected(dev_priv, intel_dig_port))
return connector_status_disconnected;
return intel_dp_detect_dpcd(intel_dp); @@ -4594,7 +4602,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
return status;
}
- if (!g4x_digital_port_connected(dev, intel_dig_port))
+ if (!intel_digital_port_connected(dev->dev_private, intel_dig_port))
return connector_status_disconnected;
return intel_dp_detect_dpcd(intel_dp); @@ -5057,13 +5065,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
/* indicate that we need to restart link training */
intel_dp->train_set_valid = false;
- if (HAS_PCH_SPLIT(dev)) {
- if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
- goto mst_fail;
- } else {
- if (!g4x_digital_port_connected(dev, intel_dig_port))
- goto mst_fail;
- }
+ if (!intel_digital_port_connected(dev_priv, intel_dig_port))
+ goto mst_fail;
if (!intel_dp_get_dpcd(intel_dp)) {
goto mst_fail;
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 7/7] drm/i915/bxt: Use correct live status register for BXT platform
2015-08-20 7:47 ` [PATCH v2 7/7] drm/i915/bxt: Use correct live status register for BXT platform Jani Nikula
@ 2015-08-26 5:32 ` Jindal, Sonika
2015-08-26 6:35 ` Jani Nikula
0 siblings, 1 reply; 20+ messages in thread
From: Jindal, Sonika @ 2015-08-26 5:32 UTC (permalink / raw)
To: intel-gfx; +Cc: Nikula, Jani
Oh, bxt is here..:) Spoke too soon..
But will need to make it based upon intel_encoder->hpd_pin because of the A0/A1 WA for BXT.
Also, we need to make intel_digital_port_connected global to be accessed from intel_hdmi.c
Regards,
Sonika
-----Original Message-----
From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf Of Jani Nikula
Sent: Thursday, August 20, 2015 1:18 PM
To: intel-gfx@lists.freedesktop.org
Cc: Nikula, Jani
Subject: [Intel-gfx] [PATCH v2 7/7] drm/i915/bxt: Use correct live status register for BXT platform
BXT platform uses live status bits from 0x44440 register to obtain DP status on hotplug. The existing g4x_digital_port_connected() uses a different register and hence misses DP hotplug events on BXT platform. This patch fixes it by using the appropriate register(0x44440) and live status bits(3:5).
Based on a patch by Durgadoss R <durgadoss.r@intel.com>, from whom the commit message is shamelessly copy pasted.
Reported-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_dp.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 36291838409b..508156cc750d 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4569,6 +4569,29 @@ static bool vlv_digital_port_connected(struct drm_i915_private *dev_priv,
return I915_READ(PORT_HOTPLUG_STAT) & bit; }
+static bool bxt_digital_port_connected(struct drm_i915_private *dev_priv,
+ struct intel_digital_port *port) {
+ u32 bit;
+
+ switch (port->port) {
+ case PORT_A:
+ bit = BXT_DE_PORT_HP_DDIA;
+ break;
+ case PORT_B:
+ bit = BXT_DE_PORT_HP_DDIB;
+ break;
+ case PORT_C:
+ bit = BXT_DE_PORT_HP_DDIC;
+ break;
+ default:
+ MISSING_CASE(port->port);
+ return false;
+ }
+
+ return I915_READ(GEN8_DE_PORT_ISR) & bit; }
+
/*
* intel_digital_port_connected - is the specified port connected?
* @dev_priv: i915 private structure
@@ -4583,6 +4606,8 @@ static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
return ibx_digital_port_connected(dev_priv, port);
if (HAS_PCH_SPLIT(dev_priv))
return cpt_digital_port_connected(dev_priv, port);
+ else if (IS_BROXTON(dev_priv))
+ return bxt_digital_port_connected(dev_priv, port);
else if (IS_VALLEYVIEW(dev_priv))
return vlv_digital_port_connected(dev_priv, port);
else
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 7/7] drm/i915/bxt: Use correct live status register for BXT platform
2015-08-26 5:32 ` Jindal, Sonika
@ 2015-08-26 6:35 ` Jani Nikula
0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2015-08-26 6:35 UTC (permalink / raw)
To: Jindal, Sonika, intel-gfx
On Wed, 26 Aug 2015, "Jindal, Sonika" <sonika.jindal@intel.com> wrote:
> Oh, bxt is here..:) Spoke too soon..
> But will need to make it based upon intel_encoder->hpd_pin because of the A0/A1 WA for BXT.
That should anyway be a separate patch changing the port->port to a port
acquired from pin_to_port. We'll take it out after we don't need to
support A0/A1. Also, that should have a comment there.
> Also, we need to make intel_digital_port_connected global to be accessed from intel_hdmi.c
Trivial addition in your series.
BR,
Jani.
>
> Regards,
> Sonika
>
> -----Original Message-----
> From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf Of Jani Nikula
> Sent: Thursday, August 20, 2015 1:18 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Nikula, Jani
> Subject: [Intel-gfx] [PATCH v2 7/7] drm/i915/bxt: Use correct live status register for BXT platform
>
> BXT platform uses live status bits from 0x44440 register to obtain DP status on hotplug. The existing g4x_digital_port_connected() uses a different register and hence misses DP hotplug events on BXT platform. This patch fixes it by using the appropriate register(0x44440) and live status bits(3:5).
>
> Based on a patch by Durgadoss R <durgadoss.r@intel.com>, from whom the commit message is shamelessly copy pasted.
>
> Reported-by: Durgadoss R <durgadoss.r@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/intel_dp.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 36291838409b..508156cc750d 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -4569,6 +4569,29 @@ static bool vlv_digital_port_connected(struct drm_i915_private *dev_priv,
> return I915_READ(PORT_HOTPLUG_STAT) & bit; }
>
> +static bool bxt_digital_port_connected(struct drm_i915_private *dev_priv,
> + struct intel_digital_port *port) {
> + u32 bit;
> +
> + switch (port->port) {
> + case PORT_A:
> + bit = BXT_DE_PORT_HP_DDIA;
> + break;
> + case PORT_B:
> + bit = BXT_DE_PORT_HP_DDIB;
> + break;
> + case PORT_C:
> + bit = BXT_DE_PORT_HP_DDIC;
> + break;
> + default:
> + MISSING_CASE(port->port);
> + return false;
> + }
> +
> + return I915_READ(GEN8_DE_PORT_ISR) & bit; }
> +
> /*
> * intel_digital_port_connected - is the specified port connected?
> * @dev_priv: i915 private structure
> @@ -4583,6 +4606,8 @@ static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
> return ibx_digital_port_connected(dev_priv, port);
> if (HAS_PCH_SPLIT(dev_priv))
> return cpt_digital_port_connected(dev_priv, port);
> + else if (IS_BROXTON(dev_priv))
> + return bxt_digital_port_connected(dev_priv, port);
> else if (IS_VALLEYVIEW(dev_priv))
> return vlv_digital_port_connected(dev_priv, port);
> else
> --
> 2.1.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected
2015-08-20 7:47 [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Jani Nikula
` (6 preceding siblings ...)
2015-08-20 7:47 ` [PATCH v2 7/7] drm/i915/bxt: Use correct live status register for BXT platform Jani Nikula
@ 2015-08-26 9:01 ` Daniel Vetter
7 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2015-08-26 9:01 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
On Thu, Aug 20, 2015 at 10:47:35AM +0300, Jani Nikula wrote:
> v2 with missing cases handled and intel_digital_port_connected return
> value changed to bool. Mostly it's just the addition of patches 2 and 3,
> and rebase of the rest.
Pulled in entire series, thanks.
-Daniel
>
> BR,
> Jani.
>
>
> Jani Nikula (7):
> drm/i915: move ibx_digital_port_connected to intel_dp.c
> drm/i915: make g4x_digital_port_connected return boolean status
> drm/i915: add MISSING_CASE annotation to ibx_digital_port_connected
> drm/i915: add common intel_digital_port_connected function
> drm/i915: split ibx_digital_port_connected to ibx and cpt variants
> drm/i915: split g4x_digital_port_connected to g4x and vlv variants
> drm/i915/bxt: Use correct live status register for BXT platform
>
> drivers/gpu/drm/i915/intel_display.c | 45 --------
> drivers/gpu/drm/i915/intel_dp.c | 199 +++++++++++++++++++++++++----------
> drivers/gpu/drm/i915/intel_drv.h | 2 -
> 3 files changed, 145 insertions(+), 101 deletions(-)
>
> --
> 2.1.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function
2015-08-20 7:47 ` [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function Jani Nikula
2015-08-26 5:26 ` Jindal, Sonika
@ 2015-08-26 15:18 ` Sivakumar Thulasimani
2015-08-27 7:00 ` Jani Nikula
1 sibling, 1 reply; 20+ messages in thread
From: Sivakumar Thulasimani @ 2015-08-26 15:18 UTC (permalink / raw)
To: Jani Nikula, intel-gfx
On 8/20/2015 1:17 PM, Jani Nikula wrote:
> Add a common intel_digital_port_connected() that splits out to functions
> for different platforms. No functional changes.
>
> v2: make the function return a boolean
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/intel_dp.c | 41 ++++++++++++++++++++++-------------------
> 1 file changed, 22 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index f08859471841..f947951a01d4 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -4473,13 +4473,6 @@ edp_detect(struct intel_dp *intel_dp)
> return status;
> }
>
> -/*
> - * ibx_digital_port_connected - is the specified port connected?
> - * @dev_priv: i915 private structure
> - * @port: the port to test
> - *
> - * Returns true if @port is connected, false otherwise.
> - */
> static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
> struct intel_digital_port *port)
> {
> @@ -4524,13 +4517,12 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
> return I915_READ(SDEISR) & bit;
> }
>
> -static bool g4x_digital_port_connected(struct drm_device *dev,
> +static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
> struct intel_digital_port *port)
> {
> - struct drm_i915_private *dev_priv = dev->dev_private;
> uint32_t bit;
>
> - if (IS_VALLEYVIEW(dev)) {
> + if (IS_VALLEYVIEW(dev_priv)) {
this might not work :(. just noted this as part of another review.
please fix this since
it is merged.
> switch (port->port) {
> case PORT_B:
> bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
> @@ -4565,6 +4557,22 @@ static bool g4x_digital_port_connected(struct drm_device *dev,
> return I915_READ(PORT_HOTPLUG_STAT) & bit;
> }
>
> +/*
> + * intel_digital_port_connected - is the specified port connected?
> + * @dev_priv: i915 private structure
> + * @port: the port to test
> + *
> + * Return %true if @port is connected, %false otherwise.
> + */
> +static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
> + struct intel_digital_port *port)
> +{
> + if (HAS_PCH_SPLIT(dev_priv))
> + return ibx_digital_port_connected(dev_priv, port);
> + else
> + return g4x_digital_port_connected(dev_priv, port);
> +}
> +
> static enum drm_connector_status
> ironlake_dp_detect(struct intel_dp *intel_dp)
> {
> @@ -4572,7 +4580,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp)
> struct drm_i915_private *dev_priv = dev->dev_private;
> struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
>
> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
> return connector_status_disconnected;
>
> return intel_dp_detect_dpcd(intel_dp);
> @@ -4594,7 +4602,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
> return status;
> }
>
> - if (!g4x_digital_port_connected(dev, intel_dig_port))
> + if (!intel_digital_port_connected(dev->dev_private, intel_dig_port))
> return connector_status_disconnected;
>
> return intel_dp_detect_dpcd(intel_dp);
> @@ -5057,13 +5065,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
> /* indicate that we need to restart link training */
> intel_dp->train_set_valid = false;
>
> - if (HAS_PCH_SPLIT(dev)) {
> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
> - goto mst_fail;
> - } else {
> - if (!g4x_digital_port_connected(dev, intel_dig_port))
> - goto mst_fail;
> - }
> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
> + goto mst_fail;
>
> if (!intel_dp_get_dpcd(intel_dp)) {
> goto mst_fail;
--
regards,
Sivakumar
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function
2015-08-26 15:18 ` Sivakumar Thulasimani
@ 2015-08-27 7:00 ` Jani Nikula
2015-08-27 8:01 ` Sivakumar Thulasimani
0 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2015-08-27 7:00 UTC (permalink / raw)
To: Sivakumar Thulasimani, intel-gfx
On Wed, 26 Aug 2015, Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> wrote:
> On 8/20/2015 1:17 PM, Jani Nikula wrote:
>> Add a common intel_digital_port_connected() that splits out to functions
>> for different platforms. No functional changes.
>>
>> v2: make the function return a boolean
>>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>> drivers/gpu/drm/i915/intel_dp.c | 41 ++++++++++++++++++++++-------------------
>> 1 file changed, 22 insertions(+), 19 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> index f08859471841..f947951a01d4 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -4473,13 +4473,6 @@ edp_detect(struct intel_dp *intel_dp)
>> return status;
>> }
>>
>> -/*
>> - * ibx_digital_port_connected - is the specified port connected?
>> - * @dev_priv: i915 private structure
>> - * @port: the port to test
>> - *
>> - * Returns true if @port is connected, false otherwise.
>> - */
>> static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
>> struct intel_digital_port *port)
>> {
>> @@ -4524,13 +4517,12 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
>> return I915_READ(SDEISR) & bit;
>> }
>>
>> -static bool g4x_digital_port_connected(struct drm_device *dev,
>> +static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
>> struct intel_digital_port *port)
>> {
>> - struct drm_i915_private *dev_priv = dev->dev_private;
>> uint32_t bit;
>>
>> - if (IS_VALLEYVIEW(dev)) {
>> + if (IS_VALLEYVIEW(dev_priv)) {
> this might not work :(. just noted this as part of another review.
> please fix this since
> it is merged.
Sorry, what might not work?
Jani.
>> switch (port->port) {
>> case PORT_B:
>> bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
>> @@ -4565,6 +4557,22 @@ static bool g4x_digital_port_connected(struct drm_device *dev,
>> return I915_READ(PORT_HOTPLUG_STAT) & bit;
>> }
>>
>> +/*
>> + * intel_digital_port_connected - is the specified port connected?
>> + * @dev_priv: i915 private structure
>> + * @port: the port to test
>> + *
>> + * Return %true if @port is connected, %false otherwise.
>> + */
>> +static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
>> + struct intel_digital_port *port)
>> +{
>> + if (HAS_PCH_SPLIT(dev_priv))
>> + return ibx_digital_port_connected(dev_priv, port);
>> + else
>> + return g4x_digital_port_connected(dev_priv, port);
>> +}
>> +
>> static enum drm_connector_status
>> ironlake_dp_detect(struct intel_dp *intel_dp)
>> {
>> @@ -4572,7 +4580,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp)
>> struct drm_i915_private *dev_priv = dev->dev_private;
>> struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
>>
>> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
>> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
>> return connector_status_disconnected;
>>
>> return intel_dp_detect_dpcd(intel_dp);
>> @@ -4594,7 +4602,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
>> return status;
>> }
>>
>> - if (!g4x_digital_port_connected(dev, intel_dig_port))
>> + if (!intel_digital_port_connected(dev->dev_private, intel_dig_port))
>> return connector_status_disconnected;
>>
>> return intel_dp_detect_dpcd(intel_dp);
>> @@ -5057,13 +5065,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
>> /* indicate that we need to restart link training */
>> intel_dp->train_set_valid = false;
>>
>> - if (HAS_PCH_SPLIT(dev)) {
>> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
>> - goto mst_fail;
>> - } else {
>> - if (!g4x_digital_port_connected(dev, intel_dig_port))
>> - goto mst_fail;
>> - }
>> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
>> + goto mst_fail;
>>
>> if (!intel_dp_get_dpcd(intel_dp)) {
>> goto mst_fail;
>
> --
> regards,
> Sivakumar
>
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function
2015-08-27 7:00 ` Jani Nikula
@ 2015-08-27 8:01 ` Sivakumar Thulasimani
2015-08-27 8:08 ` Jani Nikula
0 siblings, 1 reply; 20+ messages in thread
From: Sivakumar Thulasimani @ 2015-08-27 8:01 UTC (permalink / raw)
To: Jani Nikula, intel-gfx
On 8/27/2015 12:30 PM, Jani Nikula wrote:
> On Wed, 26 Aug 2015, Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> wrote:
>> On 8/20/2015 1:17 PM, Jani Nikula wrote:
>>> Add a common intel_digital_port_connected() that splits out to functions
>>> for different platforms. No functional changes.
>>>
>>> v2: make the function return a boolean
>>>
>>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>> ---
>>> drivers/gpu/drm/i915/intel_dp.c | 41 ++++++++++++++++++++++-------------------
>>> 1 file changed, 22 insertions(+), 19 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>>> index f08859471841..f947951a01d4 100644
>>> --- a/drivers/gpu/drm/i915/intel_dp.c
>>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>>> @@ -4473,13 +4473,6 @@ edp_detect(struct intel_dp *intel_dp)
>>> return status;
>>> }
>>>
>>> -/*
>>> - * ibx_digital_port_connected - is the specified port connected?
>>> - * @dev_priv: i915 private structure
>>> - * @port: the port to test
>>> - *
>>> - * Returns true if @port is connected, false otherwise.
>>> - */
>>> static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
>>> struct intel_digital_port *port)
>>> {
>>> @@ -4524,13 +4517,12 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
>>> return I915_READ(SDEISR) & bit;
>>> }
>>>
>>> -static bool g4x_digital_port_connected(struct drm_device *dev,
>>> +static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
>>> struct intel_digital_port *port)
>>> {
>>> - struct drm_i915_private *dev_priv = dev->dev_private;
>>> uint32_t bit;
>>>
>>> - if (IS_VALLEYVIEW(dev)) {
>>> + if (IS_VALLEYVIEW(dev_priv)) {
>> this might not work :(. just noted this as part of another review.
>> please fix this since
>> it is merged.
> Sorry, what might not work?
>
> Jani.
- if (IS_VALLEYVIEW(dev)) {
+ if (IS_VALLEYVIEW(dev_priv)) { <----- dev_priv is used instead of dev
should be IS_VALLEYVIEW(dev_priv->dev)
>
>>> switch (port->port) {
>>> case PORT_B:
>>> bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
>>> @@ -4565,6 +4557,22 @@ static bool g4x_digital_port_connected(struct drm_device *dev,
>>> return I915_READ(PORT_HOTPLUG_STAT) & bit;
>>> }
>>>
>>> +/*
>>> + * intel_digital_port_connected - is the specified port connected?
>>> + * @dev_priv: i915 private structure
>>> + * @port: the port to test
>>> + *
>>> + * Return %true if @port is connected, %false otherwise.
>>> + */
>>> +static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
>>> + struct intel_digital_port *port)
>>> +{
>>> + if (HAS_PCH_SPLIT(dev_priv))
>>> + return ibx_digital_port_connected(dev_priv, port);
>>> + else
>>> + return g4x_digital_port_connected(dev_priv, port);
>>> +}
>>> +
>>> static enum drm_connector_status
>>> ironlake_dp_detect(struct intel_dp *intel_dp)
>>> {
>>> @@ -4572,7 +4580,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp)
>>> struct drm_i915_private *dev_priv = dev->dev_private;
>>> struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
>>>
>>> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
>>> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
>>> return connector_status_disconnected;
>>>
>>> return intel_dp_detect_dpcd(intel_dp);
>>> @@ -4594,7 +4602,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
>>> return status;
>>> }
>>>
>>> - if (!g4x_digital_port_connected(dev, intel_dig_port))
>>> + if (!intel_digital_port_connected(dev->dev_private, intel_dig_port))
>>> return connector_status_disconnected;
>>>
>>> return intel_dp_detect_dpcd(intel_dp);
>>> @@ -5057,13 +5065,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
>>> /* indicate that we need to restart link training */
>>> intel_dp->train_set_valid = false;
>>>
>>> - if (HAS_PCH_SPLIT(dev)) {
>>> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
>>> - goto mst_fail;
>>> - } else {
>>> - if (!g4x_digital_port_connected(dev, intel_dig_port))
>>> - goto mst_fail;
>>> - }
>>> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
>>> + goto mst_fail;
>>>
>>> if (!intel_dp_get_dpcd(intel_dp)) {
>>> goto mst_fail;
>> --
>> regards,
>> Sivakumar
>>
--
regards,
Sivakumar
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function
2015-08-27 8:01 ` Sivakumar Thulasimani
@ 2015-08-27 8:08 ` Jani Nikula
2015-08-27 8:12 ` Sivakumar Thulasimani
0 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2015-08-27 8:08 UTC (permalink / raw)
To: Sivakumar Thulasimani, intel-gfx
On Thu, 27 Aug 2015, Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> wrote:
> On 8/27/2015 12:30 PM, Jani Nikula wrote:
>> On Wed, 26 Aug 2015, Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> wrote:
>>> On 8/20/2015 1:17 PM, Jani Nikula wrote:
>>>> Add a common intel_digital_port_connected() that splits out to functions
>>>> for different platforms. No functional changes.
>>>>
>>>> v2: make the function return a boolean
>>>>
>>>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>> ---
>>>> drivers/gpu/drm/i915/intel_dp.c | 41 ++++++++++++++++++++++-------------------
>>>> 1 file changed, 22 insertions(+), 19 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>>>> index f08859471841..f947951a01d4 100644
>>>> --- a/drivers/gpu/drm/i915/intel_dp.c
>>>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>>>> @@ -4473,13 +4473,6 @@ edp_detect(struct intel_dp *intel_dp)
>>>> return status;
>>>> }
>>>>
>>>> -/*
>>>> - * ibx_digital_port_connected - is the specified port connected?
>>>> - * @dev_priv: i915 private structure
>>>> - * @port: the port to test
>>>> - *
>>>> - * Returns true if @port is connected, false otherwise.
>>>> - */
>>>> static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
>>>> struct intel_digital_port *port)
>>>> {
>>>> @@ -4524,13 +4517,12 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
>>>> return I915_READ(SDEISR) & bit;
>>>> }
>>>>
>>>> -static bool g4x_digital_port_connected(struct drm_device *dev,
>>>> +static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
>>>> struct intel_digital_port *port)
>>>> {
>>>> - struct drm_i915_private *dev_priv = dev->dev_private;
>>>> uint32_t bit;
>>>>
>>>> - if (IS_VALLEYVIEW(dev)) {
>>>> + if (IS_VALLEYVIEW(dev_priv)) {
>>> this might not work :(. just noted this as part of another review.
>>> please fix this since
>>> it is merged.
>> Sorry, what might not work?
>>
>> Jani.
>
> - if (IS_VALLEYVIEW(dev)) {
> + if (IS_VALLEYVIEW(dev_priv)) { <----- dev_priv is used instead of dev
> should be IS_VALLEYVIEW(dev_priv->dev)
Ah, that may be confusing. We're transitioning towards preferring
dev_priv, and instead of switching everything at once (which would not
work) Chris put together some magic to have these macros accept either
drm_i915_private or drm_device pointer. See __I915__ in i915_drv.h.
BR,
Jani.
>
>>
>>>> switch (port->port) {
>>>> case PORT_B:
>>>> bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
>>>> @@ -4565,6 +4557,22 @@ static bool g4x_digital_port_connected(struct drm_device *dev,
>>>> return I915_READ(PORT_HOTPLUG_STAT) & bit;
>>>> }
>>>>
>>>> +/*
>>>> + * intel_digital_port_connected - is the specified port connected?
>>>> + * @dev_priv: i915 private structure
>>>> + * @port: the port to test
>>>> + *
>>>> + * Return %true if @port is connected, %false otherwise.
>>>> + */
>>>> +static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
>>>> + struct intel_digital_port *port)
>>>> +{
>>>> + if (HAS_PCH_SPLIT(dev_priv))
>>>> + return ibx_digital_port_connected(dev_priv, port);
>>>> + else
>>>> + return g4x_digital_port_connected(dev_priv, port);
>>>> +}
>>>> +
>>>> static enum drm_connector_status
>>>> ironlake_dp_detect(struct intel_dp *intel_dp)
>>>> {
>>>> @@ -4572,7 +4580,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp)
>>>> struct drm_i915_private *dev_priv = dev->dev_private;
>>>> struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
>>>>
>>>> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
>>>> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
>>>> return connector_status_disconnected;
>>>>
>>>> return intel_dp_detect_dpcd(intel_dp);
>>>> @@ -4594,7 +4602,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
>>>> return status;
>>>> }
>>>>
>>>> - if (!g4x_digital_port_connected(dev, intel_dig_port))
>>>> + if (!intel_digital_port_connected(dev->dev_private, intel_dig_port))
>>>> return connector_status_disconnected;
>>>>
>>>> return intel_dp_detect_dpcd(intel_dp);
>>>> @@ -5057,13 +5065,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
>>>> /* indicate that we need to restart link training */
>>>> intel_dp->train_set_valid = false;
>>>>
>>>> - if (HAS_PCH_SPLIT(dev)) {
>>>> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
>>>> - goto mst_fail;
>>>> - } else {
>>>> - if (!g4x_digital_port_connected(dev, intel_dig_port))
>>>> - goto mst_fail;
>>>> - }
>>>> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
>>>> + goto mst_fail;
>>>>
>>>> if (!intel_dp_get_dpcd(intel_dp)) {
>>>> goto mst_fail;
>>> --
>>> regards,
>>> Sivakumar
>>>
>
> --
> regards,
> Sivakumar
>
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function
2015-08-27 8:08 ` Jani Nikula
@ 2015-08-27 8:12 ` Sivakumar Thulasimani
0 siblings, 0 replies; 20+ messages in thread
From: Sivakumar Thulasimani @ 2015-08-27 8:12 UTC (permalink / raw)
To: Jani Nikula, intel-gfx
On 8/27/2015 1:38 PM, Jani Nikula wrote:
> On Thu, 27 Aug 2015, Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> wrote:
>> On 8/27/2015 12:30 PM, Jani Nikula wrote:
>>> On Wed, 26 Aug 2015, Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> wrote:
>>>> On 8/20/2015 1:17 PM, Jani Nikula wrote:
>>>>> Add a common intel_digital_port_connected() that splits out to functions
>>>>> for different platforms. No functional changes.
>>>>>
>>>>> v2: make the function return a boolean
>>>>>
>>>>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>>> ---
>>>>> drivers/gpu/drm/i915/intel_dp.c | 41 ++++++++++++++++++++++-------------------
>>>>> 1 file changed, 22 insertions(+), 19 deletions(-)
>>>>>
>>>>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>>>>> index f08859471841..f947951a01d4 100644
>>>>> --- a/drivers/gpu/drm/i915/intel_dp.c
>>>>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>>>>> @@ -4473,13 +4473,6 @@ edp_detect(struct intel_dp *intel_dp)
>>>>> return status;
>>>>> }
>>>>>
>>>>> -/*
>>>>> - * ibx_digital_port_connected - is the specified port connected?
>>>>> - * @dev_priv: i915 private structure
>>>>> - * @port: the port to test
>>>>> - *
>>>>> - * Returns true if @port is connected, false otherwise.
>>>>> - */
>>>>> static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
>>>>> struct intel_digital_port *port)
>>>>> {
>>>>> @@ -4524,13 +4517,12 @@ static bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
>>>>> return I915_READ(SDEISR) & bit;
>>>>> }
>>>>>
>>>>> -static bool g4x_digital_port_connected(struct drm_device *dev,
>>>>> +static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
>>>>> struct intel_digital_port *port)
>>>>> {
>>>>> - struct drm_i915_private *dev_priv = dev->dev_private;
>>>>> uint32_t bit;
>>>>>
>>>>> - if (IS_VALLEYVIEW(dev)) {
>>>>> + if (IS_VALLEYVIEW(dev_priv)) {
>>>> this might not work :(. just noted this as part of another review.
>>>> please fix this since
>>>> it is merged.
>>> Sorry, what might not work?
>>>
>>> Jani.
>> - if (IS_VALLEYVIEW(dev)) {
>> + if (IS_VALLEYVIEW(dev_priv)) { <----- dev_priv is used instead of dev
>> should be IS_VALLEYVIEW(dev_priv->dev)
> Ah, that may be confusing. We're transitioning towards preferring
> dev_priv, and instead of switching everything at once (which would not
> work) Chris put together some magic to have these macros accept either
> drm_i915_private or drm_device pointer. See __I915__ in i915_drv.h.
>
> BR,
> Jani.
sorry, missed that part :(.
>
>>>>> switch (port->port) {
>>>>> case PORT_B:
>>>>> bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
>>>>> @@ -4565,6 +4557,22 @@ static bool g4x_digital_port_connected(struct drm_device *dev,
>>>>> return I915_READ(PORT_HOTPLUG_STAT) & bit;
>>>>> }
>>>>>
>>>>> +/*
>>>>> + * intel_digital_port_connected - is the specified port connected?
>>>>> + * @dev_priv: i915 private structure
>>>>> + * @port: the port to test
>>>>> + *
>>>>> + * Return %true if @port is connected, %false otherwise.
>>>>> + */
>>>>> +static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
>>>>> + struct intel_digital_port *port)
>>>>> +{
>>>>> + if (HAS_PCH_SPLIT(dev_priv))
>>>>> + return ibx_digital_port_connected(dev_priv, port);
>>>>> + else
>>>>> + return g4x_digital_port_connected(dev_priv, port);
>>>>> +}
>>>>> +
>>>>> static enum drm_connector_status
>>>>> ironlake_dp_detect(struct intel_dp *intel_dp)
>>>>> {
>>>>> @@ -4572,7 +4580,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp)
>>>>> struct drm_i915_private *dev_priv = dev->dev_private;
>>>>> struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
>>>>>
>>>>> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
>>>>> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
>>>>> return connector_status_disconnected;
>>>>>
>>>>> return intel_dp_detect_dpcd(intel_dp);
>>>>> @@ -4594,7 +4602,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
>>>>> return status;
>>>>> }
>>>>>
>>>>> - if (!g4x_digital_port_connected(dev, intel_dig_port))
>>>>> + if (!intel_digital_port_connected(dev->dev_private, intel_dig_port))
>>>>> return connector_status_disconnected;
>>>>>
>>>>> return intel_dp_detect_dpcd(intel_dp);
>>>>> @@ -5057,13 +5065,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
>>>>> /* indicate that we need to restart link training */
>>>>> intel_dp->train_set_valid = false;
>>>>>
>>>>> - if (HAS_PCH_SPLIT(dev)) {
>>>>> - if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
>>>>> - goto mst_fail;
>>>>> - } else {
>>>>> - if (!g4x_digital_port_connected(dev, intel_dig_port))
>>>>> - goto mst_fail;
>>>>> - }
>>>>> + if (!intel_digital_port_connected(dev_priv, intel_dig_port))
>>>>> + goto mst_fail;
>>>>>
>>>>> if (!intel_dp_get_dpcd(intel_dp)) {
>>>>> goto mst_fail;
>>>> --
>>>> regards,
>>>> Sivakumar
>>>>
>> --
>> regards,
>> Sivakumar
>>
--
regards,
Sivakumar
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2015-08-27 8:12 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-20 7:47 [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Jani Nikula
2015-08-20 7:47 ` [PATCH v2 1/7] drm/i915: move ibx_digital_port_connected to intel_dp.c Jani Nikula
2015-08-26 5:04 ` Jindal, Sonika
2015-08-20 7:47 ` [PATCH v2 2/7] drm/i915: make g4x_digital_port_connected return boolean status Jani Nikula
2015-08-20 8:17 ` R, Durgadoss
2015-08-20 7:47 ` [PATCH v2 3/7] drm/i915: add MISSING_CASE annotation to ibx_digital_port_connected Jani Nikula
2015-08-20 14:26 ` R, Durgadoss
2015-08-20 7:47 ` [PATCH v2 4/7] drm/i915: add common intel_digital_port_connected function Jani Nikula
2015-08-26 5:26 ` Jindal, Sonika
2015-08-26 15:18 ` Sivakumar Thulasimani
2015-08-27 7:00 ` Jani Nikula
2015-08-27 8:01 ` Sivakumar Thulasimani
2015-08-27 8:08 ` Jani Nikula
2015-08-27 8:12 ` Sivakumar Thulasimani
2015-08-20 7:47 ` [PATCH v2 5/7] drm/i915: split ibx_digital_port_connected to ibx and cpt variants Jani Nikula
2015-08-20 7:47 ` [PATCH v2 6/7] drm/i915: split g4x_digital_port_connected to g4x and vlv variants Jani Nikula
2015-08-20 7:47 ` [PATCH v2 7/7] drm/i915/bxt: Use correct live status register for BXT platform Jani Nikula
2015-08-26 5:32 ` Jindal, Sonika
2015-08-26 6:35 ` Jani Nikula
2015-08-26 9:01 ` [PATCH v2 0/7] drm/i915: clean up *_digital_port_connected Daniel Vetter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.