All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/11] drm/i915: DP branch devices
@ 2016-06-06 13:29 Mika Kahola
  2016-06-06 13:29 ` [PATCH v4 01/11] drm: Add missing DP downstream port types Mika Kahola
                   ` (11 more replies)
  0 siblings, 12 replies; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

Prep work for DP branch device handling

This series of patches reads DPCD register 0x80h for receiver
capabilities for DP branch devices. The branch device types are
converters for the following standards

 - DP to VGA
 - DP to DVI
 - DP to HDMI
 - DP++ dual mode
 - Wireless WiGig
 
DPCD register defines max pixel rate for VGA dongles. This
check is carried out during mode validation. 

What's new in the series:
 - Readout of branch device ID, HW, and SW revisions from DPCD register 

v2: DPCD register read outs moved to drm (Ville, Daniel)
v3: Max pixel rate computation moved to drm (Daniel)
v4: Use of drm_dp_helper routines to collect data (Ville)

Mika Kahola (11):
  drm: Add missing DP downstream port types
  drm: Read DP downstream port capabilities
  drm: Helper to read DP branch device type
  drm: Helper to read max clock rate
  drm: Helper to read max bits per component
  drm: Read DP branch device id
  drm: Read DP branch device HW revision
  drm: Read DP branch device SW revision
  drm/i915: Check pixel rate for DP to VGA dongle
  drm/i915: Update bits per component for display info
  drm/i915: Add DP branch device info on debugfs

 drivers/gpu/drm/drm_dp_helper.c     | 155 ++++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_debugfs.c |  66 +++++++++++++++
 drivers/gpu/drm/i915/intel_dp.c     |  29 +++++++
 include/drm/drm_dp_helper.h         |  23 +++++-
 4 files changed, 272 insertions(+), 1 deletion(-)

-- 
1.9.1

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

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

* [PATCH v4 01/11] drm: Add missing DP downstream port types
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-06 13:29 ` [PATCH v4 02/11] drm: Read DP downstream port capabilities Mika Kahola
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

Add missing DisplayPort downstream port types. The introduced
new port types are DP++ and Wireless.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 include/drm/drm_dp_helper.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 5a848e7..e384c7f 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -211,6 +211,8 @@
 # define DP_DS_PORT_TYPE_DVI		    2
 # define DP_DS_PORT_TYPE_HDMI		    3
 # define DP_DS_PORT_TYPE_NON_EDID	    4
+# define DP_DS_PORT_TYPE_DP_DUALMODE        5
+# define DP_DS_PORT_TYPE_WIRELESS           6
 # define DP_DS_PORT_HPD			    (1 << 3)
 /* offset 1 for VGA is maximum megapixels per second / 8 */
 /* offset 2 */
-- 
1.9.1

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

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

* [PATCH v4 02/11] drm: Read DP downstream port capabilities
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
  2016-06-06 13:29 ` [PATCH v4 01/11] drm: Add missing DP downstream port types Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-06 16:00   ` kbuild test robot
  2016-06-09  7:52   ` Ville Syrjälä
  2016-06-06 13:29 ` [PATCH v4 03/11] drm: Helper to read DP branch device type Mika Kahola
                   ` (9 subsequent siblings)
  11 siblings, 2 replies; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

Read DisplayPort downstream port capabilities. Depending on
the DP port the capabilities are defined in length of 1 byte
or 4 bytes depending if the detailed capability information is
available.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/drm_dp_helper.c | 27 +++++++++++++++++++++++++++
 include/drm/drm_dp_helper.h     |  3 +++
 2 files changed, 30 insertions(+)

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index eeaf5a7..c4149fd 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -438,6 +438,33 @@ int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link)
 }
 EXPORT_SYMBOL(drm_dp_link_configure);
 
+/**
+ * drm_dp_downstream_port_cap() - read downstream port capabilities
+ * @dpcd: DisplayPort configuration data
+ * @port_cap: port capabilities
+ *
+ * returns size of the port capabilites
+ */
+int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
+			       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
+			       u8 port_cap[4])
+{
+	int size;
+	bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
+		DP_DETAILED_CAP_INFO_AVAILABLE;
+
+	if (detailed_cap_info) {
+		size = 4;
+		drm_dp_dpcd_read(aux, DP_DOWNSTREAM_PORT_0, port_cap, size);
+	} else {
+		size = 1;
+		drm_dp_dpcd_read(aux, DP_DOWNSTREAM_PORT_0, &port_cap[0], size);
+	}
+
+	return size;
+}
+EXPORT_SYMBOL(drm_dp_downstream_port_cap);
+
 /*
  * I2C-over-AUX implementation
  */
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index e384c7f..db8d3d47 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -806,6 +806,9 @@ int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link);
 int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link);
 int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link);
 int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link);
+int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
+			       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
+			       u8 port_cap[4]);
 
 int drm_dp_aux_register(struct drm_dp_aux *aux);
 void drm_dp_aux_unregister(struct drm_dp_aux *aux);
-- 
1.9.1

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

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

* [PATCH v4 03/11] drm: Helper to read DP branch device type
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
  2016-06-06 13:29 ` [PATCH v4 01/11] drm: Add missing DP downstream port types Mika Kahola
  2016-06-06 13:29 ` [PATCH v4 02/11] drm: Read DP downstream port capabilities Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-09  7:57   ` Ville Syrjälä
  2016-06-06 13:29 ` [PATCH v4 04/11] drm: Helper to read max clock rate Mika Kahola
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

Helper routine to read out DisplayPort branch device type. The spec
defines these type as following

	0   DisplayPort
	1   Analog VGA
	2   DVI
	3   HDMI
	4   Others without EDID support
	5   DP++
	6   Wireless
	7   Reserved

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/drm_dp_helper.c | 14 ++++++++++++++
 include/drm/drm_dp_helper.h     |  1 +
 2 files changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index c4149fd..7d3b245 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -465,6 +465,20 @@ int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
 }
 EXPORT_SYMBOL(drm_dp_downstream_port_cap);
 
+/**
+ * drm_dp_downstream_type() - extract downstream port type
+ * @dpcd: DisplayPort configuration data
+ * @port_cap: port capabilities
+ *
+ * Returns type in success or negative error code on failure
+ */
+int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
+			   const u8 port_cap[4])
+{
+	return port_cap[0] & DP_DS_PORT_TYPE_MASK;
+}
+EXPORT_SYMBOL(drm_dp_downstream_type);
+
 /*
  * I2C-over-AUX implementation
  */
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index db8d3d47..f290829 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -809,6 +809,7 @@ int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link);
 int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
 			       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
 			       u8 port_cap[4]);
+int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4]);
 
 int drm_dp_aux_register(struct drm_dp_aux *aux);
 void drm_dp_aux_unregister(struct drm_dp_aux *aux);
-- 
1.9.1

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

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

* [PATCH v4 04/11] drm: Helper to read max clock rate
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
                   ` (2 preceding siblings ...)
  2016-06-06 13:29 ` [PATCH v4 03/11] drm: Helper to read DP branch device type Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-09  7:59   ` Ville Syrjälä
  2016-06-06 13:29 ` [PATCH v4 05/11] drm: Helper to read max bits per component Mika Kahola
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

Helper routine to read out maximum supported pixel rate
for DisplayPort legay VGA converter or TMDS clock rate
for other digital legacy converters. The helper returns
clock rate in kHz.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/drm_dp_helper.c | 28 ++++++++++++++++++++++++++++
 include/drm/drm_dp_helper.h     |  2 ++
 2 files changed, 30 insertions(+)

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index 7d3b245..18b72eb 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -479,6 +479,34 @@ int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
 }
 EXPORT_SYMBOL(drm_dp_downstream_type);
 
+/**
+ * drm_dp_downstream_max_clock() - extract branch device max
+ *                                 pixel rate for legacy VGA
+ *                                 converter or max TMDS clock
+ *                                 rate for others
+ * @dpcd: DisplayPort configuration data
+ * @port_cap: port capabilities
+ *
+ * Returns max clock in kHz on success or negative error code on failure
+ */
+int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
+                               const u8 port_cap[4])
+{
+	int type = drm_dp_downstream_type(dpcd, port_cap);
+	bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
+		DP_DETAILED_CAP_INFO_AVAILABLE;
+
+	if (detailed_cap_info) {
+		if (type == DP_DS_PORT_TYPE_VGA)
+			return port_cap[1] * 8 * 1000;
+		else if (type != DP_DS_PORT_TYPE_WIRELESS)
+			return port_cap[1] * 2500;
+	}
+
+	return -EINVAL;
+}
+EXPORT_SYMBOL(drm_dp_downstream_max_clock);
+
 /*
  * I2C-over-AUX implementation
  */
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index f290829..c3324d3 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -810,6 +810,8 @@ int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
 			       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
 			       u8 port_cap[4]);
 int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4]);
+int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
+                                const u8 port_cap[4]);
 
 int drm_dp_aux_register(struct drm_dp_aux *aux);
 void drm_dp_aux_unregister(struct drm_dp_aux *aux);
-- 
1.9.1

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

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

* [PATCH v4 05/11] drm: Helper to read max bits per component
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
                   ` (3 preceding siblings ...)
  2016-06-06 13:29 ` [PATCH v4 04/11] drm: Helper to read max clock rate Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-09  8:02   ` Ville Syrjälä
  2016-06-06 13:29 ` [PATCH v4 06/11] drm: Read DP branch device id Mika Kahola
                   ` (6 subsequent siblings)
  11 siblings, 1 reply; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

Helper routine to read out maximum supported bits per
component for DisplayPort legay converters.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/drm_dp_helper.c | 31 +++++++++++++++++++++++++++++++
 include/drm/drm_dp_helper.h     |  2 ++
 2 files changed, 33 insertions(+)

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index 18b72eb..bac0ccc 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -507,6 +507,37 @@ int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
 }
 EXPORT_SYMBOL(drm_dp_downstream_max_clock);
 
+/**
+ * drm_dp_downstream_max_bpc() - extract branch device max
+ *                               bits per component
+ * @dpcd: DisplayPort configuration data
+ * @port_cap: port capabilities
+ *
+ * Returns max bpc on success or negative error code on failure
+ */
+int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
+                              const u8 port_cap[4])
+{
+	int type = drm_dp_downstream_type(dpcd, port_cap);
+	bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
+		DP_DETAILED_CAP_INFO_AVAILABLE;
+
+	if (detailed_cap_info) {
+		if (type != DP_DS_PORT_TYPE_WIRELESS) {
+			int tmp;
+			tmp = port_cap[2] & DP_DS_VGA_MAX_BPC_MASK;
+
+			if (tmp == 0)
+				return 8;
+			else
+				return 8 + (1<<tmp);
+		}
+	}
+
+	return -EINVAL;
+}
+EXPORT_SYMBOL(drm_dp_downstream_max_bpc);
+
 /*
  * I2C-over-AUX implementation
  */
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index c3324d3..d4abc38 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -812,6 +812,8 @@ int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
 int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4]);
 int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                                 const u8 port_cap[4]);
+int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
+                              const u8 port_cap[4]);
 
 int drm_dp_aux_register(struct drm_dp_aux *aux);
 void drm_dp_aux_unregister(struct drm_dp_aux *aux);
-- 
1.9.1

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

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

* [PATCH v4 06/11] drm: Read DP branch device id
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
                   ` (4 preceding siblings ...)
  2016-06-06 13:29 ` [PATCH v4 05/11] drm: Helper to read max bits per component Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-06 17:55   ` kbuild test robot
  2016-06-06 13:29 ` [PATCH v4 07/11] drm: Read DP branch device HW revision Mika Kahola
                   ` (5 subsequent siblings)
  11 siblings, 1 reply; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

Read DisplayPort branch device id string.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/drm_dp_helper.c | 12 ++++++++++++
 include/drm/drm_dp_helper.h     |  2 ++
 2 files changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index bac0ccc..c25bed9 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -538,6 +538,18 @@ int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
 }
 EXPORT_SYMBOL(drm_dp_downstream_max_bpc);
 
+/**
+ * drm_dp_downstream_id() - identify branch device
+ * @aux: DisplayPort AUX channel
+ *
+ * Returns branch device id on success or NULL on failure
+ */
+int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6])
+{
+	return drm_dp_dpcd_read(aux, DP_BRANCH_ID, id, 6);
+}
+EXPORT_SYMBOL(drm_dp_downstream_id);
+
 /*
  * I2C-over-AUX implementation
  */
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index d4abc38..37293a8 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -445,6 +445,7 @@
 #define DP_SOURCE_OUI			    0x300
 #define DP_SINK_OUI			    0x400
 #define DP_BRANCH_OUI			    0x500
+#define DP_BRANCH_ID                        0x503
 
 #define DP_SET_POWER                        0x600
 # define DP_SET_POWER_D0                    0x1
@@ -814,6 +815,7 @@ int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                                 const u8 port_cap[4]);
 int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                               const u8 port_cap[4]);
+int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6]);
 
 int drm_dp_aux_register(struct drm_dp_aux *aux);
 void drm_dp_aux_unregister(struct drm_dp_aux *aux);
-- 
1.9.1

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

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

* [PATCH v4 07/11] drm: Read DP branch device HW revision
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
                   ` (5 preceding siblings ...)
  2016-06-06 13:29 ` [PATCH v4 06/11] drm: Read DP branch device id Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-06 13:29 ` [PATCH v4 08/11] drm: Read DP branch device SW revision Mika Kahola
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

HW revision is mandatory field for DisplayPort branch
devices. This is defined in DPCD register field 0x509.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/drm_dp_helper.c | 21 +++++++++++++++++++++
 include/drm/drm_dp_helper.h     |  7 +++++++
 2 files changed, 28 insertions(+)

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index c25bed9..6dd9ff5 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -550,6 +550,27 @@ int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6])
 }
 EXPORT_SYMBOL(drm_dp_downstream_id);
 
+/**
+ * drm_dp_downstream_hw_rev() - read DP branch device HW revision
+ * @aux: DisplayPort AUX channel
+ *
+ * Returns HW revision on succes or negative error code on failure
+ */
+struct drm_dp_revision drm_dp_downstream_hw_rev(struct drm_dp_aux *aux)
+{
+	uint8_t tmp;
+	struct drm_dp_revision rev = { .major = -EINVAL, .minor = -EINVAL };
+
+	if (drm_dp_dpcd_read(aux, DP_BRANCH_HW_REV, &tmp, 1) != 1)
+		return rev;
+
+	rev.major = (tmp & 0xf0) >> 4;
+	rev.minor = tmp & 0xf;
+
+	return rev;
+}
+EXPORT_SYMBOL(drm_dp_downstream_hw_rev);
+
 /*
  * I2C-over-AUX implementation
  */
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 37293a8..08a10b3 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -446,6 +446,7 @@
 #define DP_SINK_OUI			    0x400
 #define DP_BRANCH_OUI			    0x500
 #define DP_BRANCH_ID                        0x503
+#define DP_BRANCH_HW_REV                    0x509
 
 #define DP_SET_POWER                        0x600
 # define DP_SET_POWER_D0                    0x1
@@ -803,6 +804,11 @@ struct drm_dp_link {
 	unsigned long capabilities;
 };
 
+struct drm_dp_revision {
+       int major;
+       int minor;
+};
+
 int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link);
 int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link);
 int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link);
@@ -816,6 +822,7 @@ int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
 int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                               const u8 port_cap[4]);
 int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6]);
+struct drm_dp_revision drm_dp_downstream_hw_rev(struct drm_dp_aux *aux);
 
 int drm_dp_aux_register(struct drm_dp_aux *aux);
 void drm_dp_aux_unregister(struct drm_dp_aux *aux);
-- 
1.9.1

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

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

* [PATCH v4 08/11] drm: Read DP branch device SW revision
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
                   ` (6 preceding siblings ...)
  2016-06-06 13:29 ` [PATCH v4 07/11] drm: Read DP branch device HW revision Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-06 13:29 ` [PATCH v4 09/11] drm/i915: Check pixel rate for DP to VGA dongle Mika Kahola
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

SW revision is mandatory field for DisplayPort branch
devices. This is defined in DPCD register field 0x50A.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/drm_dp_helper.c | 22 ++++++++++++++++++++++
 include/drm/drm_dp_helper.h     |  4 +++-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index 6dd9ff5..89b3b24 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -571,6 +571,28 @@ struct drm_dp_revision drm_dp_downstream_hw_rev(struct drm_dp_aux *aux)
 }
 EXPORT_SYMBOL(drm_dp_downstream_hw_rev);
 
+/**
+ * drm_dp_downstream_sw_rev() - read DP branch device SW revision
+ * @aux: DisplayPort AUX channel
+ *
+ * Returns SW revision on success or negative error code on failure
+ */
+struct drm_dp_revision drm_dp_downstream_sw_rev(struct drm_dp_aux *aux)
+{
+	uint8_t tmp[2];
+	struct drm_dp_revision rev = { .major = -EINVAL, .minor = -EINVAL };
+
+	if (drm_dp_dpcd_read(aux, DP_BRANCH_SW_REV, tmp, 2) != 2)
+		return rev;
+
+	rev.major = tmp[0];
+	rev.minor = tmp[1];
+
+	return rev;
+
+}
+EXPORT_SYMBOL(drm_dp_downstream_sw_rev);
+
 /*
  * I2C-over-AUX implementation
  */
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 08a10b3..1848320 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -447,6 +447,7 @@
 #define DP_BRANCH_OUI			    0x500
 #define DP_BRANCH_ID                        0x503
 #define DP_BRANCH_HW_REV                    0x509
+#define DP_BRANCH_SW_REV                    0x50A
 
 #define DP_SET_POWER                        0x600
 # define DP_SET_POWER_D0                    0x1
@@ -823,7 +824,8 @@ int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                               const u8 port_cap[4]);
 int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6]);
 struct drm_dp_revision drm_dp_downstream_hw_rev(struct drm_dp_aux *aux);
-
+struct drm_dp_revision drm_dp_downstream_sw_rev(struct drm_dp_aux *aux);
+ 
 int drm_dp_aux_register(struct drm_dp_aux *aux);
 void drm_dp_aux_unregister(struct drm_dp_aux *aux);
 
-- 
1.9.1

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

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

* [PATCH v4 09/11] drm/i915: Check pixel rate for DP to VGA dongle
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
                   ` (7 preceding siblings ...)
  2016-06-06 13:29 ` [PATCH v4 08/11] drm: Read DP branch device SW revision Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-09  8:14   ` Ville Syrjälä
  2016-06-06 13:29 ` [PATCH v4 10/11] drm/i915: Update bits per component for display info Mika Kahola
                   ` (2 subsequent siblings)
  11 siblings, 1 reply; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

Filter out a mode that exceeds the max pixel rate setting
for DP to VGA dongle. This is defined in DPCD register 0x81
if detailed cap info i.e. info field is 4 bytes long and
it is available for DP downstream port.

The register defines the pixel rate divided by 8 in MP/s.

v2: DPCD read outs and computation moved to drm (Ville, Daniel)
v3: Sink pixel rate computation moved to drm_dp_max_sink_dotclock()
    function (Daniel)
v4: Use of drm_dp_helper.c routines to compute max pixel clock (Ville)

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 096acbf0..1b94347 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -200,6 +200,23 @@ intel_dp_mode_valid(struct drm_connector *connector,
 	int target_clock = mode->clock;
 	int max_rate, mode_rate, max_lanes, max_link_clock;
 	int max_dotclk = to_i915(connector->dev)->max_dotclk_freq;
+	bool is_branch_device;
+	int max_dp_clk;
+	int type;
+	uint8_t port_cap[4];
+
+	is_branch_device = intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] &
+		DP_DWN_STRM_PORT_PRESENT;
+
+	if (is_branch_device) {
+		drm_dp_downstream_port_cap(&intel_dp->aux, intel_dp->dpcd, port_cap);
+		type = drm_dp_downstream_type(intel_dp->dpcd, port_cap);
+		max_dp_clk = drm_dp_downstream_max_clock(intel_dp->dpcd, port_cap);
+
+		if ((type == DP_DS_PORT_TYPE_VGA) && (max_dp_clk > 0)) {
+			max_dotclk = min(max_dotclk, max_dp_clk);
+		}
+	}
 
 	if (is_edp(intel_dp) && fixed_mode) {
 		if (mode->hdisplay > fixed_mode->hdisplay)
-- 
1.9.1

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

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

* [PATCH v4 10/11] drm/i915: Update bits per component for display info
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
                   ` (8 preceding siblings ...)
  2016-06-06 13:29 ` [PATCH v4 09/11] drm/i915: Check pixel rate for DP to VGA dongle Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-06 13:29 ` [PATCH v4 11/11] drm/i915: Add DP branch device info on debugfs Mika Kahola
  2016-06-06 14:03 ` ✗ Ro.CI.BAT: warning for drm/i915: DP branch devices (rev4) Patchwork
  11 siblings, 0 replies; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

DisplayPort branch device may define max supported bits per
component. Update display info based on this value if bpc
is defined.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 1b94347..ad3ff37 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -3932,6 +3932,17 @@ intel_dp_detect_dpcd(struct intel_dp *intel_dp)
 {
 	uint8_t *dpcd = intel_dp->dpcd;
 	uint8_t type;
+	uint8_t cap[4];
+
+	if (dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_PRESENT) {
+		int bpc;
+
+		drm_dp_downstream_port_cap(&intel_dp->aux, dpcd, cap);
+		bpc = drm_dp_downstream_max_bpc(dpcd, cap);
+
+		if (bpc > 0)
+			intel_dp->attached_connector->base.display_info.bpc = bpc;
+	}
 
 	if (!intel_dp_get_dpcd(intel_dp))
 		return connector_status_disconnected;
@@ -3969,6 +3980,7 @@ intel_dp_detect_dpcd(struct intel_dp *intel_dp)
 			return connector_status_unknown;
 	}
 
+
 	/* Anything else is out of spec, warn and ignore */
 	DRM_DEBUG_KMS("Broken DP branch device, ignoring\n");
 	return connector_status_disconnected;
-- 
1.9.1

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

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

* [PATCH v4 11/11] drm/i915: Add DP branch device info on debugfs
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
                   ` (9 preceding siblings ...)
  2016-06-06 13:29 ` [PATCH v4 10/11] drm/i915: Update bits per component for display info Mika Kahola
@ 2016-06-06 13:29 ` Mika Kahola
  2016-06-06 14:03 ` ✗ Ro.CI.BAT: warning for drm/i915: DP branch devices (rev4) Patchwork
  11 siblings, 0 replies; 22+ messages in thread
From: Mika Kahola @ 2016-06-06 13:29 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, intel-gfx

Read DisplayPort branch device info from through debugfs
interface.

v2: use drm_dp_helper routines to collect data

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c | 66 +++++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index ac7e569..fabfa55 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -2942,9 +2942,75 @@ static void intel_dp_info(struct seq_file *m,
 {
 	struct intel_encoder *intel_encoder = intel_connector->encoder;
 	struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base);
+	struct drm_dp_revision rev;
+	bool is_branch_device;
+	int type;
+	int clk;
+	int bpc;
+	int cap_size;
+	uint8_t cap[4];
+	char id[6];
 
 	seq_printf(m, "\tDPCD rev: %x\n", intel_dp->dpcd[DP_DPCD_REV]);
 	seq_printf(m, "\taudio support: %s\n", yesno(intel_dp->has_audio));
+
+	is_branch_device = intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] &
+		DP_DWN_STRM_PORT_PRESENT;
+	seq_printf(m, "\tbranch device: %s\n", yesno(is_branch_device));
+
+	if (is_branch_device) {
+		cap_size = drm_dp_downstream_port_cap(&intel_dp->aux,
+						      intel_dp->dpcd, cap);
+
+		type = drm_dp_downstream_type(intel_dp->dpcd, cap);
+
+		switch (type) {
+		case DP_DS_PORT_TYPE_DP:
+			seq_printf(m, "\ttype: DisplayPort\n");
+			break;
+		case DP_DS_PORT_TYPE_VGA:
+			seq_printf(m, "\ttype: VGA\n");
+			break;
+		case DP_DS_PORT_TYPE_DVI:
+			seq_printf(m, "\ttype: DVI\n");
+			break;
+		case DP_DS_PORT_TYPE_HDMI:
+			seq_printf(m, "\ttype: HDMI\n");
+			break;
+		case DP_DS_PORT_TYPE_NON_EDID:
+			seq_printf(m, "\ttype: others without EDID support\n");
+			break;
+		case DP_DS_PORT_TYPE_DP_DUALMODE:
+			seq_printf(m, "\ttype: DP++\n");
+			break;
+		case DP_DS_PORT_TYPE_WIRELESS:
+			seq_printf(m, "\ttype: Wireless\n");
+			break;
+		default:
+			seq_printf(m, "\ttype: N/A\n");
+		}
+
+		drm_dp_downstream_id(&intel_dp->aux, id);
+		seq_printf(m, "\tDevice id: %s\n", id);
+
+		rev = drm_dp_downstream_hw_rev(&intel_dp->aux);
+		seq_printf(m, "\tHW revision: %.2d.%.2d\n", rev.major, rev.minor);
+
+		rev = drm_dp_downstream_sw_rev(&intel_dp->aux);
+		seq_printf(m, "\tSW revision: %.2d.%.2d\n", rev.major, rev.minor);
+
+		if (cap_size == 4) {
+			clk = drm_dp_downstream_max_clock(intel_dp->dpcd, cap);
+			if (type == DP_DS_PORT_TYPE_VGA)
+				seq_printf(m, "\tMax dot clock: %d kHz\n", clk);
+			else
+				seq_printf(m, "\tMax TMDS clock: %d kHz\n", clk);
+
+			bpc = drm_dp_downstream_max_bpc(intel_dp->dpcd, cap);
+			seq_printf(m, "\tMax bpc: %d\n", bpc);
+		}
+	}
+
 	if (intel_encoder->type == INTEL_OUTPUT_EDP)
 		intel_panel_info(m, &intel_connector->panel);
 }
-- 
1.9.1

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

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

* ✗ Ro.CI.BAT: warning for drm/i915: DP branch devices (rev4)
  2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
                   ` (10 preceding siblings ...)
  2016-06-06 13:29 ` [PATCH v4 11/11] drm/i915: Add DP branch device info on debugfs Mika Kahola
@ 2016-06-06 14:03 ` Patchwork
  11 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2016-06-06 14:03 UTC (permalink / raw)
  To: Mika Kahola; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: DP branch devices (rev4)
URL   : https://patchwork.freedesktop.org/series/6658/
State : warning

== Summary ==

Series 6658v4 drm/i915: DP branch devices
http://patchwork.freedesktop.org/api/1.0/series/6658/revisions/4/mbox

Test gem_cs_tlb:
        Subgroup basic-default:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
Test gem_exec_flush:
        Subgroup basic-wb-rw-default:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
Test gem_mmap_gtt:
        Subgroup basic-copy:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
        Subgroup basic-small-copy:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
        Subgroup basic-write:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
        Subgroup basic-write-no-prefault:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
Test gem_pwrite:
        Subgroup basic:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
Test gem_storedw_loop:
        Subgroup basic-vebox:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
Test kms_addfb_basic:
        Subgroup bad-pitch-1024:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
        Subgroup bad-pitch-128:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
        Subgroup bad-pitch-32:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
        Subgroup bad-pitch-999:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
        Subgroup clobberred-modifier:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
        Subgroup too-wide:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
        Subgroup unused-pitches:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
Test kms_flip:
        Subgroup basic-flip-vs-wf_vblank:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)

fi-bdw-i7-5557u  total:102  pass:93   dwarn:0   dfail:0   fail:0   skip:8  
fi-hsw-i7-4770k  total:209  pass:190  dwarn:0   dfail:0   fail:0   skip:19 
fi-skl-i5-6260u  total:209  pass:198  dwarn:0   dfail:0   fail:0   skip:11 
fi-skl-i7-6700k  total:209  pass:184  dwarn:0   dfail:0   fail:0   skip:25 
fi-snb-i7-2600   total:209  pass:170  dwarn:0   dfail:0   fail:0   skip:39 
ro-bdw-i5-5250u  total:102  pass:93   dwarn:0   dfail:0   fail:0   skip:8  
ro-bdw-i7-5600u  total:102  pass:75   dwarn:0   dfail:0   fail:0   skip:26 
ro-bsw-n3050     total:209  pass:168  dwarn:0   dfail:0   fail:2   skip:39 
ro-byt-n2820     total:209  pass:169  dwarn:0   dfail:0   fail:3   skip:37 
ro-hsw-i3-4010u  total:209  pass:186  dwarn:0   dfail:0   fail:0   skip:23 
ro-hsw-i7-4770r  total:102  pass:82   dwarn:0   dfail:0   fail:0   skip:19 
ro-ilk1-i5-650   total:204  pass:146  dwarn:0   dfail:0   fail:1   skip:57 
ro-ivb-i7-3770   total:102  pass:75   dwarn:0   dfail:0   fail:0   skip:26 
ro-ivb2-i7-3770  total:102  pass:79   dwarn:0   dfail:0   fail:0   skip:22 
ro-skl-i7-6700hq total:204  pass:170  dwarn:13  dfail:0   fail:0   skip:21 
ro-snb-i7-2620M  total:102  pass:72   dwarn:0   dfail:0   fail:0   skip:29 
ro-bdw-i7-5557U failed to connect after reboot

Results at /archive/results/CI_IGT_test/RO_Patchwork_1122/

b067b4a drm-intel-nightly: 2016y-06m-06d-12h-04m-45s UTC integration manifest
5302cc8 drm/i915: Add DP branch device info on debugfs
837c11e drm/i915: Update bits per component for display info
a0f34b5 drm/i915: Check pixel rate for DP to VGA dongle
7196a2f drm: Read DP branch device SW revision
385f2e9 drm: Read DP branch device HW revision
706c3ac drm: Read DP branch device id
49c9f6f drm: Helper to read max bits per component
2168946 drm: Helper to read max clock rate
6c0c61b drm: Helper to read DP branch device type
b9833c6 drm: Read DP downstream port capabilities
3381148 drm: Add missing DP downstream port types

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

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

* Re: [PATCH v4 02/11] drm: Read DP downstream port capabilities
  2016-06-06 13:29 ` [PATCH v4 02/11] drm: Read DP downstream port capabilities Mika Kahola
@ 2016-06-06 16:00   ` kbuild test robot
  2016-06-09  7:52   ` Ville Syrjälä
  1 sibling, 0 replies; 22+ messages in thread
From: kbuild test robot @ 2016-06-06 16:00 UTC (permalink / raw)
  To: Mika Kahola; +Cc: daniel.vetter, intel-gfx, kbuild-all, dri-devel

[-- Attachment #1: Type: text/plain, Size: 20255 bytes --]

Hi,

[auto build test WARNING on drm/drm-next]
[also build test WARNING on v4.7-rc2 next-20160606]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Mika-Kahola/drm-i915-DP-branch-devices/20160606-213650
base:   git://people.freedesktop.org/~airlied/linux.git drm-next
reproduce: make htmldocs

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   include/drm/drm_crtc.h:374: warning: No description found for parameter 'mode_blob'
   include/drm/drm_crtc.h:789: warning: No description found for parameter 'name'
   include/drm/drm_crtc.h:1248: warning: No description found for parameter 'connector_id'
   include/drm/drm_crtc.h:1248: warning: No description found for parameter 'tile_blob_ptr'
   include/drm/drm_crtc.h:1287: warning: No description found for parameter 'rotation'
   include/drm/drm_crtc.h:1549: warning: No description found for parameter 'name'
   include/drm/drm_crtc.h:1549: warning: No description found for parameter 'mutex'
   include/drm/drm_crtc.h:1549: warning: No description found for parameter 'helper_private'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tile_idr'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'connector_ida'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'delayed_event'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'edid_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'dpms_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'path_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tile_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'plane_type_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'rotation_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_src_x'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_src_y'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_src_w'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_src_h'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_x'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_y'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_w'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_h'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_fb_id'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_id'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_active'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_mode_id'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'dvi_i_subconnector_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'dvi_i_select_subconnector_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_subconnector_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_select_subconnector_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_mode_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_left_margin_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_right_margin_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_top_margin_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_bottom_margin_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_brightness_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_contrast_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_flicker_reduction_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_overscan_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_saturation_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_hue_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'scaling_mode_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'aspect_ratio_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'dirty_info_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'suggested_x_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'suggested_y_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'allow_fb_modifiers'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: No description found for parameter 'nonblock'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: Excess function parameter 'nonblocking' description in 'drm_atomic_helper_commit'
   drivers/gpu/drm/drm_atomic_helper.c:2946: warning: No description found for parameter 'start'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: No description found for parameter 'nonblock'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: Excess function parameter 'nonblocking' description in 'drm_atomic_helper_commit'
   drivers/gpu/drm/drm_atomic_helper.c:2946: warning: No description found for parameter 'start'
   drivers/gpu/drm/drm_atomic_helper.c:1: warning: no structured comments found
       Was looking for 'implementing async commit'.
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: No description found for parameter 'nonblock'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: Excess function parameter 'nonblocking' description in 'drm_atomic_helper_commit'
   drivers/gpu/drm/drm_atomic_helper.c:2946: warning: No description found for parameter 'start'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: No description found for parameter 'nonblock'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: Excess function parameter 'nonblocking' description in 'drm_atomic_helper_commit'
   drivers/gpu/drm/drm_atomic_helper.c:2946: warning: No description found for parameter 'start'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'dev'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'file_priv'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'mode_cmd'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'funcs'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'dev'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'file_priv'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'mode_cmd'
   drivers/gpu/drm/drm_fb_cma_helper.c:285: warning: No description found for parameter 'm'
   drivers/gpu/drm/drm_fb_cma_helper.c:285: warning: No description found for parameter 'arg'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'dev'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'file_priv'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'mode_cmd'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'funcs'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'dev'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'file_priv'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'mode_cmd'
   drivers/gpu/drm/drm_fb_cma_helper.c:285: warning: No description found for parameter 'm'
   drivers/gpu/drm/drm_fb_cma_helper.c:285: warning: No description found for parameter 'arg'
>> drivers/gpu/drm/drm_dp_helper.c:451: warning: No description found for parameter 'aux'
   include/drm/drm_dp_helper.h:753: warning: No description found for parameter 'i2c_nack_count'
   include/drm/drm_dp_helper.h:753: warning: No description found for parameter 'i2c_defer_count'
>> drivers/gpu/drm/drm_dp_helper.c:451: warning: No description found for parameter 'aux'
   drivers/gpu/drm/drm_dp_mst_topology.c:2383: warning: No description found for parameter 'connector'
   include/drm/drm_dp_mst_helper.h:92: warning: No description found for parameter 'cached_edid'
   include/drm/drm_dp_mst_helper.h:92: warning: No description found for parameter 'has_audio'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'max_dpcd_transaction_bytes'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'sink_count'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'total_slots'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'avail_slots'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'total_pbn'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'qlock'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_msg_downq'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_down_in_progress'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'payload_lock'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'proposed_vcpis'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'payloads'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'payload_mask'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'vcpi_mask'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_waitq'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'work'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_work'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'destroy_connector_list'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'destroy_connector_lock'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'destroy_connector_work'
   drivers/gpu/drm/drm_dp_mst_topology.c:2383: warning: No description found for parameter 'connector'
   drivers/gpu/drm/drm_irq.c:158: warning: No description found for parameter 'flags'
   include/drm/drmP.h:169: warning: No description found for parameter 'fmt'
   include/drm/drmP.h:185: warning: No description found for parameter 'fmt'
   include/drm/drmP.h:203: warning: No description found for parameter 'fmt'
   include/drm/drmP.h:248: warning: No description found for parameter 'dev'
   include/drm/drmP.h:248: warning: No description found for parameter 'data'
   include/drm/drmP.h:248: warning: No description found for parameter 'file_priv'
   include/drm/drmP.h:281: warning: No description found for parameter 'ioctl'
   include/drm/drmP.h:281: warning: No description found for parameter '_func'
   include/drm/drmP.h:281: warning: No description found for parameter '_flags'
   include/drm/drmP.h:363: warning: cannot understand function prototype: 'struct drm_lock_data '
   include/drm/drmP.h:411: warning: cannot understand function prototype: 'struct drm_driver '
   include/drm/drmP.h:677: warning: cannot understand function prototype: 'struct drm_info_list '
   include/drm/drmP.h:687: warning: cannot understand function prototype: 'struct drm_info_node '
   include/drm/drmP.h:697: warning: cannot understand function prototype: 'struct drm_minor '
   include/drm/drmP.h:745: warning: cannot understand function prototype: 'struct drm_device '
   drivers/gpu/drm/i915/intel_runtime_pm.c:2416: warning: No description found for parameter 'resume'
   drivers/gpu/drm/i915/intel_runtime_pm.c:2416: warning: No description found for parameter 'resume'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   drivers/gpu/drm/i915/i915_vgpu.c:62: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_vgpu.c:62: warning: Excess function parameter 'dev' description in 'i915_check_vgpu'
   drivers/gpu/drm/i915/i915_vgpu.c:181: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_vgpu.c:181: warning: Excess function parameter 'dev_priv' description in 'intel_vgt_balloon'
   drivers/gpu/drm/i915/i915_vgpu.c:62: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_vgpu.c:62: warning: Excess function parameter 'dev' description in 'i915_check_vgpu'
   drivers/gpu/drm/i915/i915_vgpu.c:181: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_vgpu.c:181: warning: Excess function parameter 'dev_priv' description in 'intel_vgt_balloon'
   drivers/gpu/drm/i915/i915_gem.c:416: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:416: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:416: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:681: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:681: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:681: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:762: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:762: warning: No description found for parameter 'obj'
   drivers/gpu/drm/i915/i915_gem.c:762: warning: No description found for parameter 'args'
   drivers/gpu/drm/i915/i915_gem.c:762: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:1025: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:1025: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:1025: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:1231: warning: No description found for parameter 'rps'
   drivers/gpu/drm/i915/i915_gem.c:1452: warning: No description found for parameter 'req'
   drivers/gpu/drm/i915/i915_gem.c:1479: warning: No description found for parameter 'obj'
   drivers/gpu/drm/i915/i915_gem.c:1479: warning: No description found for parameter 'readonly'
   drivers/gpu/drm/i915/i915_gem.c:1596: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:1596: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:1596: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:1659: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:1659: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:1659: warning: No description found for parameter 'file'

vim +/aux +451 drivers/gpu/drm/drm_dp_helper.c

   435			return err;
   436	
   437		return 0;
   438	}
   439	EXPORT_SYMBOL(drm_dp_link_configure);
   440	
   441	/**
   442	 * drm_dp_downstream_port_cap() - read downstream port capabilities
   443	 * @dpcd: DisplayPort configuration data
   444	 * @port_cap: port capabilities
   445	 *
   446	 * returns size of the port capabilites
   447	 */
   448	int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
   449				       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
   450				       u8 port_cap[4])
 > 451	{
   452		int size;
   453		bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
   454			DP_DETAILED_CAP_INFO_AVAILABLE;
   455	
   456		if (detailed_cap_info) {
   457			size = 4;
   458			drm_dp_dpcd_read(aux, DP_DOWNSTREAM_PORT_0, port_cap, size);
   459		} else {

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 6366 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

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

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

* Re: [PATCH v4 06/11] drm: Read DP branch device id
  2016-06-06 13:29 ` [PATCH v4 06/11] drm: Read DP branch device id Mika Kahola
@ 2016-06-06 17:55   ` kbuild test robot
  0 siblings, 0 replies; 22+ messages in thread
From: kbuild test robot @ 2016-06-06 17:55 UTC (permalink / raw)
  To: Mika Kahola; +Cc: daniel.vetter, intel-gfx, kbuild-all, dri-devel

[-- Attachment #1: Type: text/plain, Size: 23320 bytes --]

Hi,

[auto build test WARNING on drm/drm-next]
[also build test WARNING on v4.7-rc2 next-20160606]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Mika-Kahola/drm-i915-DP-branch-devices/20160606-213650
base:   git://people.freedesktop.org/~airlied/linux.git drm-next
reproduce: make htmldocs

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   include/drm/drm_crtc.h:374: warning: No description found for parameter 'mode_blob'
   include/drm/drm_crtc.h:789: warning: No description found for parameter 'name'
   include/drm/drm_crtc.h:1248: warning: No description found for parameter 'connector_id'
   include/drm/drm_crtc.h:1248: warning: No description found for parameter 'tile_blob_ptr'
   include/drm/drm_crtc.h:1287: warning: No description found for parameter 'rotation'
   include/drm/drm_crtc.h:1549: warning: No description found for parameter 'name'
   include/drm/drm_crtc.h:1549: warning: No description found for parameter 'mutex'
   include/drm/drm_crtc.h:1549: warning: No description found for parameter 'helper_private'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tile_idr'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'connector_ida'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'delayed_event'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'edid_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'dpms_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'path_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tile_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'plane_type_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'rotation_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_src_x'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_src_y'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_src_w'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_src_h'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_x'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_y'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_w'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_h'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_fb_id'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_crtc_id'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_active'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'prop_mode_id'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'dvi_i_subconnector_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'dvi_i_select_subconnector_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_subconnector_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_select_subconnector_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_mode_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_left_margin_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_right_margin_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_top_margin_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_bottom_margin_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_brightness_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_contrast_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_flicker_reduction_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_overscan_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_saturation_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'tv_hue_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'scaling_mode_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'aspect_ratio_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'dirty_info_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'suggested_x_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'suggested_y_property'
   include/drm/drm_crtc.h:2185: warning: No description found for parameter 'allow_fb_modifiers'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: No description found for parameter 'nonblock'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: Excess function parameter 'nonblocking' description in 'drm_atomic_helper_commit'
   drivers/gpu/drm/drm_atomic_helper.c:2946: warning: No description found for parameter 'start'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: No description found for parameter 'nonblock'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: Excess function parameter 'nonblocking' description in 'drm_atomic_helper_commit'
   drivers/gpu/drm/drm_atomic_helper.c:2946: warning: No description found for parameter 'start'
   drivers/gpu/drm/drm_atomic_helper.c:1: warning: no structured comments found
       Was looking for 'implementing async commit'.
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: No description found for parameter 'nonblock'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: Excess function parameter 'nonblocking' description in 'drm_atomic_helper_commit'
   drivers/gpu/drm/drm_atomic_helper.c:2946: warning: No description found for parameter 'start'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: No description found for parameter 'nonblock'
   drivers/gpu/drm/drm_atomic_helper.c:1150: warning: Excess function parameter 'nonblocking' description in 'drm_atomic_helper_commit'
   drivers/gpu/drm/drm_atomic_helper.c:2946: warning: No description found for parameter 'start'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'dev'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'file_priv'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'mode_cmd'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'funcs'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'dev'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'file_priv'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'mode_cmd'
   drivers/gpu/drm/drm_fb_cma_helper.c:285: warning: No description found for parameter 'm'
   drivers/gpu/drm/drm_fb_cma_helper.c:285: warning: No description found for parameter 'arg'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'dev'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'file_priv'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'mode_cmd'
   drivers/gpu/drm/drm_fb_cma_helper.c:173: warning: No description found for parameter 'funcs'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'dev'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'file_priv'
   drivers/gpu/drm/drm_fb_cma_helper.c:233: warning: No description found for parameter 'mode_cmd'
   drivers/gpu/drm/drm_fb_cma_helper.c:285: warning: No description found for parameter 'm'
   drivers/gpu/drm/drm_fb_cma_helper.c:285: warning: No description found for parameter 'arg'
   drivers/gpu/drm/drm_dp_helper.c:451: warning: No description found for parameter 'aux'
>> drivers/gpu/drm/drm_dp_helper.c:548: warning: No description found for parameter 'id[6]'
   include/drm/drm_dp_helper.h:754: warning: No description found for parameter 'i2c_nack_count'
   include/drm/drm_dp_helper.h:754: warning: No description found for parameter 'i2c_defer_count'
   drivers/gpu/drm/drm_dp_helper.c:451: warning: No description found for parameter 'aux'
>> drivers/gpu/drm/drm_dp_helper.c:548: warning: No description found for parameter 'id[6]'
   drivers/gpu/drm/drm_dp_mst_topology.c:2383: warning: No description found for parameter 'connector'
   include/drm/drm_dp_mst_helper.h:92: warning: No description found for parameter 'cached_edid'
   include/drm/drm_dp_mst_helper.h:92: warning: No description found for parameter 'has_audio'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'max_dpcd_transaction_bytes'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'sink_count'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'total_slots'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'avail_slots'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'total_pbn'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'qlock'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_msg_downq'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_down_in_progress'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'payload_lock'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'proposed_vcpis'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'payloads'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'payload_mask'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'vcpi_mask'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_waitq'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'work'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_work'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'destroy_connector_list'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'destroy_connector_lock'
   include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'destroy_connector_work'
   drivers/gpu/drm/drm_dp_mst_topology.c:2383: warning: No description found for parameter 'connector'
   drivers/gpu/drm/drm_irq.c:158: warning: No description found for parameter 'flags'
   include/drm/drmP.h:169: warning: No description found for parameter 'fmt'
   include/drm/drmP.h:185: warning: No description found for parameter 'fmt'
   include/drm/drmP.h:203: warning: No description found for parameter 'fmt'
   include/drm/drmP.h:248: warning: No description found for parameter 'dev'
   include/drm/drmP.h:248: warning: No description found for parameter 'data'
   include/drm/drmP.h:248: warning: No description found for parameter 'file_priv'
   include/drm/drmP.h:281: warning: No description found for parameter 'ioctl'
   include/drm/drmP.h:281: warning: No description found for parameter '_func'
   include/drm/drmP.h:281: warning: No description found for parameter '_flags'
   include/drm/drmP.h:363: warning: cannot understand function prototype: 'struct drm_lock_data '
   include/drm/drmP.h:411: warning: cannot understand function prototype: 'struct drm_driver '
   include/drm/drmP.h:677: warning: cannot understand function prototype: 'struct drm_info_list '
   include/drm/drmP.h:687: warning: cannot understand function prototype: 'struct drm_info_node '
   include/drm/drmP.h:697: warning: cannot understand function prototype: 'struct drm_minor '
   include/drm/drmP.h:745: warning: cannot understand function prototype: 'struct drm_device '
   drivers/gpu/drm/i915/intel_runtime_pm.c:2416: warning: No description found for parameter 'resume'
   drivers/gpu/drm/i915/intel_runtime_pm.c:2416: warning: No description found for parameter 'resume'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:606: warning: Excess function parameter 'dev' description in 'i915_enable_asle_pipestat'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2538: warning: Excess function parameter 'dev' description in 'i915_reset_and_wakeup'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: No description found for parameter 'fmt'
   drivers/gpu/drm/i915/i915_irq.c:2700: warning: Excess function parameter 'dev' description in 'i915_handle_error'
   drivers/gpu/drm/i915/i915_vgpu.c:62: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_vgpu.c:62: warning: Excess function parameter 'dev' description in 'i915_check_vgpu'
   drivers/gpu/drm/i915/i915_vgpu.c:181: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_vgpu.c:181: warning: Excess function parameter 'dev_priv' description in 'intel_vgt_balloon'
   drivers/gpu/drm/i915/i915_vgpu.c:62: warning: No description found for parameter 'dev_priv'
   drivers/gpu/drm/i915/i915_vgpu.c:62: warning: Excess function parameter 'dev' description in 'i915_check_vgpu'
   drivers/gpu/drm/i915/i915_vgpu.c:181: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_vgpu.c:181: warning: Excess function parameter 'dev_priv' description in 'intel_vgt_balloon'
   drivers/gpu/drm/i915/i915_gem.c:416: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:416: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:416: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:681: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:681: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:681: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:762: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:762: warning: No description found for parameter 'obj'
   drivers/gpu/drm/i915/i915_gem.c:762: warning: No description found for parameter 'args'
   drivers/gpu/drm/i915/i915_gem.c:762: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:1025: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:1025: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:1025: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:1231: warning: No description found for parameter 'rps'
   drivers/gpu/drm/i915/i915_gem.c:1452: warning: No description found for parameter 'req'
   drivers/gpu/drm/i915/i915_gem.c:1479: warning: No description found for parameter 'obj'
   drivers/gpu/drm/i915/i915_gem.c:1479: warning: No description found for parameter 'readonly'
   drivers/gpu/drm/i915/i915_gem.c:1596: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:1596: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:1596: warning: No description found for parameter 'file'
   drivers/gpu/drm/i915/i915_gem.c:1659: warning: No description found for parameter 'dev'
   drivers/gpu/drm/i915/i915_gem.c:1659: warning: No description found for parameter 'data'
   drivers/gpu/drm/i915/i915_gem.c:1659: warning: No description found for parameter 'file'

vim +548 drivers/gpu/drm/drm_dp_helper.c

   445	 *
   446	 * returns size of the port capabilites
   447	 */
   448	int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
   449				       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
   450				       u8 port_cap[4])
 > 451	{
   452		int size;
   453		bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
   454			DP_DETAILED_CAP_INFO_AVAILABLE;
   455	
   456		if (detailed_cap_info) {
   457			size = 4;
   458			drm_dp_dpcd_read(aux, DP_DOWNSTREAM_PORT_0, port_cap, size);
   459		} else {
   460			size = 1;
   461			drm_dp_dpcd_read(aux, DP_DOWNSTREAM_PORT_0, &port_cap[0], size);
   462		}
   463	
   464		return size;
   465	}
   466	EXPORT_SYMBOL(drm_dp_downstream_port_cap);
   467	
   468	/**
   469	 * drm_dp_downstream_type() - extract downstream port type
   470	 * @dpcd: DisplayPort configuration data
   471	 * @port_cap: port capabilities
   472	 *
   473	 * Returns type in success or negative error code on failure
   474	 */
   475	int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
   476				   const u8 port_cap[4])
   477	{
   478		return port_cap[0] & DP_DS_PORT_TYPE_MASK;
   479	}
   480	EXPORT_SYMBOL(drm_dp_downstream_type);
   481	
   482	/**
   483	 * drm_dp_downstream_max_clock() - extract branch device max
   484	 *                                 pixel rate for legacy VGA
   485	 *                                 converter or max TMDS clock
   486	 *                                 rate for others
   487	 * @dpcd: DisplayPort configuration data
   488	 * @port_cap: port capabilities
   489	 *
   490	 * Returns max clock in kHz on success or negative error code on failure
   491	 */
   492	int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
   493	                               const u8 port_cap[4])
   494	{
   495		int type = drm_dp_downstream_type(dpcd, port_cap);
   496		bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
   497			DP_DETAILED_CAP_INFO_AVAILABLE;
   498	
   499		if (detailed_cap_info) {
   500			if (type == DP_DS_PORT_TYPE_VGA)
   501				return port_cap[1] * 8 * 1000;
   502			else if (type != DP_DS_PORT_TYPE_WIRELESS)
   503				return port_cap[1] * 2500;
   504		}
   505	
   506		return -EINVAL;
   507	}
   508	EXPORT_SYMBOL(drm_dp_downstream_max_clock);
   509	
   510	/**
   511	 * drm_dp_downstream_max_bpc() - extract branch device max
   512	 *                               bits per component
   513	 * @dpcd: DisplayPort configuration data
   514	 * @port_cap: port capabilities
   515	 *
   516	 * Returns max bpc on success or negative error code on failure
   517	 */
   518	int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
   519	                              const u8 port_cap[4])
   520	{
   521		int type = drm_dp_downstream_type(dpcd, port_cap);
   522		bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
   523			DP_DETAILED_CAP_INFO_AVAILABLE;
   524	
   525		if (detailed_cap_info) {
   526			if (type != DP_DS_PORT_TYPE_WIRELESS) {
   527				int tmp;
   528				tmp = port_cap[2] & DP_DS_VGA_MAX_BPC_MASK;
   529	
   530				if (tmp == 0)
   531					return 8;
   532				else
   533					return 8 + (1<<tmp);
   534			}
   535		}
   536	
   537		return -EINVAL;
   538	}
   539	EXPORT_SYMBOL(drm_dp_downstream_max_bpc);
   540	
   541	/**
   542	 * drm_dp_downstream_id() - identify branch device
   543	 * @aux: DisplayPort AUX channel
   544	 *
   545	 * Returns branch device id on success or NULL on failure
   546	 */
   547	int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6])
 > 548	{
   549		return drm_dp_dpcd_read(aux, DP_BRANCH_ID, id, 6);
   550	}
   551	EXPORT_SYMBOL(drm_dp_downstream_id);

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 6366 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

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

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

* Re: [PATCH v4 02/11] drm: Read DP downstream port capabilities
  2016-06-06 13:29 ` [PATCH v4 02/11] drm: Read DP downstream port capabilities Mika Kahola
  2016-06-06 16:00   ` kbuild test robot
@ 2016-06-09  7:52   ` Ville Syrjälä
  1 sibling, 0 replies; 22+ messages in thread
From: Ville Syrjälä @ 2016-06-09  7:52 UTC (permalink / raw)
  To: Mika Kahola; +Cc: daniel.vetter, intel-gfx, dri-devel

On Mon, Jun 06, 2016 at 04:29:04PM +0300, Mika Kahola wrote:
> Read DisplayPort downstream port capabilities. Depending on
> the DP port the capabilities are defined in length of 1 byte
> or 4 bytes depending if the detailed capability information is
> available.
> 
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  drivers/gpu/drm/drm_dp_helper.c | 27 +++++++++++++++++++++++++++
>  include/drm/drm_dp_helper.h     |  3 +++
>  2 files changed, 30 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
> index eeaf5a7..c4149fd 100644
> --- a/drivers/gpu/drm/drm_dp_helper.c
> +++ b/drivers/gpu/drm/drm_dp_helper.c
> @@ -438,6 +438,33 @@ int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link)
>  }
>  EXPORT_SYMBOL(drm_dp_link_configure);
>  
> +/**
> + * drm_dp_downstream_port_cap() - read downstream port capabilities
> + * @dpcd: DisplayPort configuration data
> + * @port_cap: port capabilities
> + *
> + * returns size of the port capabilites
> + */
> +int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
> +			       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> +			       u8 port_cap[4])
> +{
> +	int size;
> +	bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
> +		DP_DETAILED_CAP_INFO_AVAILABLE;
> +
> +	if (detailed_cap_info) {
> +		size = 4;
> +		drm_dp_dpcd_read(aux, DP_DOWNSTREAM_PORT_0, port_cap, size);
> +	} else {
> +		size = 1;
> +		drm_dp_dpcd_read(aux, DP_DOWNSTREAM_PORT_0, &port_cap[0], size);
> +	}

Could avoid a bit of duplicatetion. Eg.:
	if (dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DETAILED_CAP_INFO_AVAILABLE)
		size = 4;
	else
		size = 1;

	return drm_dp_dpcd_read(...);

Though perhaps we should just read out the entire 4/16 bytes to get the
caps for all the ports?

> +
> +	return size;
> +}
> +EXPORT_SYMBOL(drm_dp_downstream_port_cap);
> +
>  /*
>   * I2C-over-AUX implementation
>   */
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index e384c7f..db8d3d47 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -806,6 +806,9 @@ int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link);
>  int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link);
>  int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link);
>  int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link);
> +int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
> +			       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> +			       u8 port_cap[4]);
>  
>  int drm_dp_aux_register(struct drm_dp_aux *aux);
>  void drm_dp_aux_unregister(struct drm_dp_aux *aux);
> -- 
> 1.9.1

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH v4 03/11] drm: Helper to read DP branch device type
  2016-06-06 13:29 ` [PATCH v4 03/11] drm: Helper to read DP branch device type Mika Kahola
@ 2016-06-09  7:57   ` Ville Syrjälä
  0 siblings, 0 replies; 22+ messages in thread
From: Ville Syrjälä @ 2016-06-09  7:57 UTC (permalink / raw)
  To: Mika Kahola; +Cc: daniel.vetter, intel-gfx, jim.bride, dri-devel

On Mon, Jun 06, 2016 at 04:29:05PM +0300, Mika Kahola wrote:
> Helper routine to read out DisplayPort branch device type. The spec
> defines these type as following
> 
> 	0   DisplayPort
> 	1   Analog VGA
> 	2   DVI
> 	3   HDMI
> 	4   Others without EDID support
> 	5   DP++
> 	6   Wireless
> 	7   Reserved
> 
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  drivers/gpu/drm/drm_dp_helper.c | 14 ++++++++++++++
>  include/drm/drm_dp_helper.h     |  1 +
>  2 files changed, 15 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
> index c4149fd..7d3b245 100644
> --- a/drivers/gpu/drm/drm_dp_helper.c
> +++ b/drivers/gpu/drm/drm_dp_helper.c
> @@ -465,6 +465,20 @@ int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
>  }
>  EXPORT_SYMBOL(drm_dp_downstream_port_cap);
>  
> +/**
> + * drm_dp_downstream_type() - extract downstream port type
> + * @dpcd: DisplayPort configuration data
> + * @port_cap: port capabilities
> + *
> + * Returns type in success or negative error code on failure
> + */
> +int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> +			   const u8 port_cap[4])
> +{
> +	return port_cap[0] & DP_DS_PORT_TYPE_MASK;
> +}
> +EXPORT_SYMBOL(drm_dp_downstream_type);

Seems rather pointless to me.

> +
>  /*
>   * I2C-over-AUX implementation
>   */
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index db8d3d47..f290829 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -809,6 +809,7 @@ int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link);
>  int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
>  			       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>  			       u8 port_cap[4]);
> +int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4]);
>  
>  int drm_dp_aux_register(struct drm_dp_aux *aux);
>  void drm_dp_aux_unregister(struct drm_dp_aux *aux);
> -- 
> 1.9.1

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH v4 04/11] drm: Helper to read max clock rate
  2016-06-06 13:29 ` [PATCH v4 04/11] drm: Helper to read max clock rate Mika Kahola
@ 2016-06-09  7:59   ` Ville Syrjälä
  0 siblings, 0 replies; 22+ messages in thread
From: Ville Syrjälä @ 2016-06-09  7:59 UTC (permalink / raw)
  To: Mika Kahola; +Cc: daniel.vetter, intel-gfx, dri-devel

On Mon, Jun 06, 2016 at 04:29:06PM +0300, Mika Kahola wrote:
> Helper routine to read out maximum supported pixel rate
> for DisplayPort legay VGA converter or TMDS clock rate
> for other digital legacy converters. The helper returns
> clock rate in kHz.
> 
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  drivers/gpu/drm/drm_dp_helper.c | 28 ++++++++++++++++++++++++++++
>  include/drm/drm_dp_helper.h     |  2 ++
>  2 files changed, 30 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
> index 7d3b245..18b72eb 100644
> --- a/drivers/gpu/drm/drm_dp_helper.c
> +++ b/drivers/gpu/drm/drm_dp_helper.c
> @@ -479,6 +479,34 @@ int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>  }
>  EXPORT_SYMBOL(drm_dp_downstream_type);
>  
> +/**
> + * drm_dp_downstream_max_clock() - extract branch device max
> + *                                 pixel rate for legacy VGA
> + *                                 converter or max TMDS clock
> + *                                 rate for others
> + * @dpcd: DisplayPort configuration data
> + * @port_cap: port capabilities
> + *
> + * Returns max clock in kHz on success or negative error code on failure
> + */
> +int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> +                               const u8 port_cap[4])
> +{
> +	int type = drm_dp_downstream_type(dpcd, port_cap);
> +	bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
> +		DP_DETAILED_CAP_INFO_AVAILABLE;
> +
> +	if (detailed_cap_info) {

Could swap this over to an early return and then we don't have to indent
the actual meat of the function.

> +		if (type == DP_DS_PORT_TYPE_VGA)
> +			return port_cap[1] * 8 * 1000;
> +		else if (type != DP_DS_PORT_TYPE_WIRELESS)
> +			return port_cap[1] * 2500;

That's not correct. I suggest a switch() and deal with each type
explicitly.

> +	}
> +
> +	return -EINVAL;

I think I'd return 0 for the "we don't know" case. That way we can use
this directly without worrying about negative values.

> +}
> +EXPORT_SYMBOL(drm_dp_downstream_max_clock);
> +
>  /*
>   * I2C-over-AUX implementation
>   */
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index f290829..c3324d3 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -810,6 +810,8 @@ int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
>  			       const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>  			       u8 port_cap[4]);
>  int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4]);
> +int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> +                                const u8 port_cap[4]);
>  
>  int drm_dp_aux_register(struct drm_dp_aux *aux);
>  void drm_dp_aux_unregister(struct drm_dp_aux *aux);
> -- 
> 1.9.1

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH v4 05/11] drm: Helper to read max bits per component
  2016-06-06 13:29 ` [PATCH v4 05/11] drm: Helper to read max bits per component Mika Kahola
@ 2016-06-09  8:02   ` Ville Syrjälä
  2016-06-09 10:08     ` Mika Kahola
  0 siblings, 1 reply; 22+ messages in thread
From: Ville Syrjälä @ 2016-06-09  8:02 UTC (permalink / raw)
  To: Mika Kahola; +Cc: daniel.vetter, intel-gfx, dri-devel

On Mon, Jun 06, 2016 at 04:29:07PM +0300, Mika Kahola wrote:
> Helper routine to read out maximum supported bits per
> component for DisplayPort legay converters.
> 
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  drivers/gpu/drm/drm_dp_helper.c | 31 +++++++++++++++++++++++++++++++
>  include/drm/drm_dp_helper.h     |  2 ++
>  2 files changed, 33 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
> index 18b72eb..bac0ccc 100644
> --- a/drivers/gpu/drm/drm_dp_helper.c
> +++ b/drivers/gpu/drm/drm_dp_helper.c
> @@ -507,6 +507,37 @@ int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>  }
>  EXPORT_SYMBOL(drm_dp_downstream_max_clock);
>  
> +/**
> + * drm_dp_downstream_max_bpc() - extract branch device max
> + *                               bits per component
> + * @dpcd: DisplayPort configuration data
> + * @port_cap: port capabilities
> + *
> + * Returns max bpc on success or negative error code on failure
> + */
> +int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> +                              const u8 port_cap[4])
> +{
> +	int type = drm_dp_downstream_type(dpcd, port_cap);
> +	bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
> +		DP_DETAILED_CAP_INFO_AVAILABLE;
> +
> +	if (detailed_cap_info) {

Early return again.

> +		if (type != DP_DS_PORT_TYPE_WIRELESS) {

switch() again.

> +			int tmp;
> +			tmp = port_cap[2] & DP_DS_VGA_MAX_BPC_MASK;

Should drop the "VGA" from that stuff since it applies to more than
that.

> +
> +			if (tmp == 0)
> +				return 8;
> +			else
> +				return 8 + (1<<tmp);

switch() with each case would be less magicy.

> +		}
> +	}
> +
> +	return -EINVAL;

Again I think I'd just use 0 here.

> +}
> +EXPORT_SYMBOL(drm_dp_downstream_max_bpc);
> +
>  /*
>   * I2C-over-AUX implementation
>   */
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index c3324d3..d4abc38 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -812,6 +812,8 @@ int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
>  int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4]);
>  int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>                                  const u8 port_cap[4]);
> +int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> +                              const u8 port_cap[4]);
>  
>  int drm_dp_aux_register(struct drm_dp_aux *aux);
>  void drm_dp_aux_unregister(struct drm_dp_aux *aux);
> -- 
> 1.9.1

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH v4 09/11] drm/i915: Check pixel rate for DP to VGA dongle
  2016-06-06 13:29 ` [PATCH v4 09/11] drm/i915: Check pixel rate for DP to VGA dongle Mika Kahola
@ 2016-06-09  8:14   ` Ville Syrjälä
  2016-06-09  8:27     ` Kahola, Mika
  0 siblings, 1 reply; 22+ messages in thread
From: Ville Syrjälä @ 2016-06-09  8:14 UTC (permalink / raw)
  To: Mika Kahola; +Cc: daniel.vetter, intel-gfx, jim.bride, dri-devel

On Mon, Jun 06, 2016 at 04:29:11PM +0300, Mika Kahola wrote:
> Filter out a mode that exceeds the max pixel rate setting
> for DP to VGA dongle. This is defined in DPCD register 0x81
> if detailed cap info i.e. info field is 4 bytes long and
> it is available for DP downstream port.
> 
> The register defines the pixel rate divided by 8 in MP/s.
> 
> v2: DPCD read outs and computation moved to drm (Ville, Daniel)
> v3: Sink pixel rate computation moved to drm_dp_max_sink_dotclock()
>     function (Daniel)
> v4: Use of drm_dp_helper.c routines to compute max pixel clock (Ville)
> 
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 096acbf0..1b94347 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -200,6 +200,23 @@ intel_dp_mode_valid(struct drm_connector *connector,
>  	int target_clock = mode->clock;
>  	int max_rate, mode_rate, max_lanes, max_link_clock;
>  	int max_dotclk = to_i915(connector->dev)->max_dotclk_freq;
> +	bool is_branch_device;
> +	int max_dp_clk;
> +	int type;
> +	uint8_t port_cap[4];
> +
> +	is_branch_device = intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] &
> +		DP_DWN_STRM_PORT_PRESENT;
> +
> +	if (is_branch_device) {
> +		drm_dp_downstream_port_cap(&intel_dp->aux, intel_dp->dpcd, port_cap);

I'm pretty sure we already read out the downstream port caps in fact.
Hmm, yeah ->downstream_ports. So no need for this, and I suppose no need
for your helper for the readout either. Just always readoing out the
full 16 bytes should be fine.

> +		type = drm_dp_downstream_type(intel_dp->dpcd, port_cap);
> +		max_dp_clk = drm_dp_downstream_max_clock(intel_dp->dpcd, port_cap);
> +
> +		if ((type == DP_DS_PORT_TYPE_VGA) && (max_dp_clk > 0)) {

Type check can be skipped if drm_dp_downstream_max_clock() just returns
0 for the "don't know" case.

> +			max_dotclk = min(max_dotclk, max_dp_clk);
> +		}
> +	}
>  
>  	if (is_edp(intel_dp) && fixed_mode) {
>  		if (mode->hdisplay > fixed_mode->hdisplay)
> -- 
> 1.9.1

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH v4 09/11] drm/i915: Check pixel rate for DP to VGA dongle
  2016-06-09  8:14   ` Ville Syrjälä
@ 2016-06-09  8:27     ` Kahola, Mika
  0 siblings, 0 replies; 22+ messages in thread
From: Kahola, Mika @ 2016-06-09  8:27 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: daniel.vetter, intel-gfx, dri-devel



> -----Original Message-----
> From: Ville Syrjälä [mailto:ville.syrjala@linux.intel.com]
> Sent: Thursday, June 9, 2016 11:14 AM
> To: Kahola, Mika <mika.kahola@intel.com>
> Cc: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org;
> jim.bride@linux.intel.com; daniel.vetter@ffwll.ch
> Subject: Re: [PATCH v4 09/11] drm/i915: Check pixel rate for DP to VGA
> dongle
> 
> On Mon, Jun 06, 2016 at 04:29:11PM +0300, Mika Kahola wrote:
> > Filter out a mode that exceeds the max pixel rate setting for DP to
> > VGA dongle. This is defined in DPCD register 0x81 if detailed cap info
> > i.e. info field is 4 bytes long and it is available for DP downstream
> > port.
> >
> > The register defines the pixel rate divided by 8 in MP/s.
> >
> > v2: DPCD read outs and computation moved to drm (Ville, Daniel)
> > v3: Sink pixel rate computation moved to drm_dp_max_sink_dotclock()
> >     function (Daniel)
> > v4: Use of drm_dp_helper.c routines to compute max pixel clock (Ville)
> >
> > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_dp.c | 17 +++++++++++++++++
> >  1 file changed, 17 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_dp.c
> > b/drivers/gpu/drm/i915/intel_dp.c index 096acbf0..1b94347 100644
> > --- a/drivers/gpu/drm/i915/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > @@ -200,6 +200,23 @@ intel_dp_mode_valid(struct drm_connector
> *connector,
> >  	int target_clock = mode->clock;
> >  	int max_rate, mode_rate, max_lanes, max_link_clock;
> >  	int max_dotclk = to_i915(connector->dev)->max_dotclk_freq;
> > +	bool is_branch_device;
> > +	int max_dp_clk;
> > +	int type;
> > +	uint8_t port_cap[4];
> > +
> > +	is_branch_device = intel_dp-
> >dpcd[DP_DOWNSTREAMPORT_PRESENT] &
> > +		DP_DWN_STRM_PORT_PRESENT;
> > +
> > +	if (is_branch_device) {
> > +		drm_dp_downstream_port_cap(&intel_dp->aux, intel_dp-
> >dpcd,
> > +port_cap);
> 
> I'm pretty sure we already read out the downstream port caps in fact.
> Hmm, yeah ->downstream_ports. So no need for this, and I suppose no
> need for your helper for the readout either. Just always readoing out the full
> 16 bytes should be fine.

Right, I missed that one. We do read port caps with ->downstream_ports. I'll skip the helper routines regarding reading out port cap info.

> 
> > +		type = drm_dp_downstream_type(intel_dp->dpcd,
> port_cap);
> > +		max_dp_clk = drm_dp_downstream_max_clock(intel_dp-
> >dpcd, port_cap);
> > +
> > +		if ((type == DP_DS_PORT_TYPE_VGA) && (max_dp_clk > 0))
> {
> 
> Type check can be skipped if drm_dp_downstream_max_clock() just returns
> 0 for the "don't know" case.
> 
> > +			max_dotclk = min(max_dotclk, max_dp_clk);
> > +		}
> > +	}
> >
> >  	if (is_edp(intel_dp) && fixed_mode) {
> >  		if (mode->hdisplay > fixed_mode->hdisplay)
> > --
> > 1.9.1
> 
> --
> Ville Syrjälä
> Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH v4 05/11] drm: Helper to read max bits per component
  2016-06-09  8:02   ` Ville Syrjälä
@ 2016-06-09 10:08     ` Mika Kahola
  0 siblings, 0 replies; 22+ messages in thread
From: Mika Kahola @ 2016-06-09 10:08 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: daniel.vetter, intel-gfx, dri-devel

On Thu, 2016-06-09 at 11:02 +0300, Ville Syrjälä wrote:
> On Mon, Jun 06, 2016 at 04:29:07PM +0300, Mika Kahola wrote:
> > Helper routine to read out maximum supported bits per
> > component for DisplayPort legay converters.
> > 
> > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > ---
> >  drivers/gpu/drm/drm_dp_helper.c | 31 +++++++++++++++++++++++++++++++
> >  include/drm/drm_dp_helper.h     |  2 ++
> >  2 files changed, 33 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
> > index 18b72eb..bac0ccc 100644
> > --- a/drivers/gpu/drm/drm_dp_helper.c
> > +++ b/drivers/gpu/drm/drm_dp_helper.c
> > @@ -507,6 +507,37 @@ int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> >  }
> >  EXPORT_SYMBOL(drm_dp_downstream_max_clock);
> >  
> > +/**
> > + * drm_dp_downstream_max_bpc() - extract branch device max
> > + *                               bits per component
> > + * @dpcd: DisplayPort configuration data
> > + * @port_cap: port capabilities
> > + *
> > + * Returns max bpc on success or negative error code on failure
> > + */
> > +int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> > +                              const u8 port_cap[4])
> > +{
> > +	int type = drm_dp_downstream_type(dpcd, port_cap);
> > +	bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
> > +		DP_DETAILED_CAP_INFO_AVAILABLE;
> > +
> > +	if (detailed_cap_info) {
> 
> Early return again.
> 
> > +		if (type != DP_DS_PORT_TYPE_WIRELESS) {
> 
> switch() again.
> 
> > +			int tmp;
> > +			tmp = port_cap[2] & DP_DS_VGA_MAX_BPC_MASK;
> 
> Should drop the "VGA" from that stuff since it applies to more than
> that.

Agreed. Maybe we could rename it as DP_DS_MAX_BPC_MASK instead.

> 
> > +
> > +			if (tmp == 0)
> > +				return 8;
> > +			else
> > +				return 8 + (1<<tmp);
> 
> switch() with each case would be less magicy.
> 
> > +		}
> > +	}
> > +
> > +	return -EINVAL;
> 
> Again I think I'd just use 0 here.
> 
> > +}
> > +EXPORT_SYMBOL(drm_dp_downstream_max_bpc);
> > +
> >  /*
> >   * I2C-over-AUX implementation
> >   */
> > diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> > index c3324d3..d4abc38 100644
> > --- a/include/drm/drm_dp_helper.h
> > +++ b/include/drm/drm_dp_helper.h
> > @@ -812,6 +812,8 @@ int drm_dp_downstream_port_cap(struct drm_dp_aux *aux,
> >  int drm_dp_downstream_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4]);
> >  int drm_dp_downstream_max_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> >                                  const u8 port_cap[4]);
> > +int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
> > +                              const u8 port_cap[4]);
> >  
> >  int drm_dp_aux_register(struct drm_dp_aux *aux);
> >  void drm_dp_aux_unregister(struct drm_dp_aux *aux);
> > -- 
> > 1.9.1
> 

-- 
Mika Kahola - Intel OTC

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

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

end of thread, other threads:[~2016-06-09 10:08 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-06 13:29 [PATCH v4 00/11] drm/i915: DP branch devices Mika Kahola
2016-06-06 13:29 ` [PATCH v4 01/11] drm: Add missing DP downstream port types Mika Kahola
2016-06-06 13:29 ` [PATCH v4 02/11] drm: Read DP downstream port capabilities Mika Kahola
2016-06-06 16:00   ` kbuild test robot
2016-06-09  7:52   ` Ville Syrjälä
2016-06-06 13:29 ` [PATCH v4 03/11] drm: Helper to read DP branch device type Mika Kahola
2016-06-09  7:57   ` Ville Syrjälä
2016-06-06 13:29 ` [PATCH v4 04/11] drm: Helper to read max clock rate Mika Kahola
2016-06-09  7:59   ` Ville Syrjälä
2016-06-06 13:29 ` [PATCH v4 05/11] drm: Helper to read max bits per component Mika Kahola
2016-06-09  8:02   ` Ville Syrjälä
2016-06-09 10:08     ` Mika Kahola
2016-06-06 13:29 ` [PATCH v4 06/11] drm: Read DP branch device id Mika Kahola
2016-06-06 17:55   ` kbuild test robot
2016-06-06 13:29 ` [PATCH v4 07/11] drm: Read DP branch device HW revision Mika Kahola
2016-06-06 13:29 ` [PATCH v4 08/11] drm: Read DP branch device SW revision Mika Kahola
2016-06-06 13:29 ` [PATCH v4 09/11] drm/i915: Check pixel rate for DP to VGA dongle Mika Kahola
2016-06-09  8:14   ` Ville Syrjälä
2016-06-09  8:27     ` Kahola, Mika
2016-06-06 13:29 ` [PATCH v4 10/11] drm/i915: Update bits per component for display info Mika Kahola
2016-06-06 13:29 ` [PATCH v4 11/11] drm/i915: Add DP branch device info on debugfs Mika Kahola
2016-06-06 14:03 ` ✗ Ro.CI.BAT: warning for drm/i915: DP branch devices (rev4) Patchwork

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.