* [PATCH v4 1/3] drm/edid: Add drm_edid_get_monitor_name()
@ 2016-04-14 17:18 Jim Bride
2016-04-14 17:18 ` [PATCH v4 2/3] drm/dp/mst: Enhance DP MST debugfs output Jim Bride
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Jim Bride @ 2016-04-14 17:18 UTC (permalink / raw)
To: intel-gfx; +Cc: dri-devel
In order to include monitor name information in debugfs
output we needed to add a function that would extract the
monitor name from the EDID, and that function needed to
reside in the file where the rest of the EDID helper
functions are implemented.
v2: Refactor to have drm_edid_get_monitor_name() and drm_edid_to_eld()
use a common helper function to extract the monitor name from the
edid. [Jani] + rebase.
v3: Minor changes suggested by Jani + rebase.
v4: Few more minor changes suggested by Jani + rebase.
cc: dri-devel@lists.freedesktop.org
cc: Jani Nikula <jani.nikula@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Jim Bride <jim.bride@linux.intel.com>
---
drivers/gpu/drm/drm_edid.c | 51 ++++++++++++++++++++++++++++++++++++++--------
include/drm/drm_crtc.h | 2 ++
2 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 558ef9f..96b181a 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -3293,6 +3293,46 @@ monitor_name(struct detailed_timing *t, void *data)
*(u8 **)data = t->data.other_data.data.str.str;
}
+static int get_monitor_name(struct edid *edid, char name[13])
+{
+ char *edid_name = NULL;
+ int mnl;
+
+ if (!edid || !name)
+ return 0;
+
+ drm_for_each_detailed_block((u8 *)edid, monitor_name, &edid_name);
+ for (mnl = 0; edid_name && mnl < 13; mnl++) {
+ if (edid_name[mnl] == 0x0a)
+ break;
+
+ name[mnl] = edid_name[mnl];
+ }
+
+ return mnl;
+}
+
+/**
+ * drm_edid_get_monitor_name - fetch the monitor name from the edid
+ * @edid: monitor EDID information
+ * @name: pointer to a character array to hold the name of the monitor
+ * @bufsize: The size of the name buffer (should be at least 14 chars.)
+ *
+ */
+void drm_edid_get_monitor_name(struct edid *edid, char *name, int bufsize)
+{
+ int name_length;
+ char buf[13];
+
+ if (bufsize <= 0)
+ return;
+
+ name_length = min(get_monitor_name(edid, buf), bufsize - 1);
+ memcpy(name, buf, name_length);
+ name[name_length] = '\0';
+}
+EXPORT_SYMBOL(drm_edid_get_monitor_name);
+
/**
* drm_edid_to_eld - build ELD from EDID
* @connector: connector corresponding to the HDMI/DP sink
@@ -3306,7 +3346,6 @@ void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
{
uint8_t *eld = connector->eld;
u8 *cea;
- u8 *name;
u8 *db;
int total_sad_count = 0;
int mnl;
@@ -3320,14 +3359,8 @@ void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
return;
}
- name = NULL;
- drm_for_each_detailed_block((u8 *)edid, monitor_name, &name);
- /* max: 13 bytes EDID, 16 bytes ELD */
- for (mnl = 0; name && mnl < 13; mnl++) {
- if (name[mnl] == 0x0a)
- break;
- eld[20 + mnl] = name[mnl];
- }
+ mnl = get_monitor_name(edid, eld + 20);
+
eld[4] = (cea[1] << 5) | mnl;
DRM_DEBUG_KMS("ELD monitor %s\n", eld + 20);
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 8cb377c..6d46842 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -2500,6 +2500,8 @@ extern int drm_edid_header_is_valid(const u8 *raw_edid);
extern bool drm_edid_block_valid(u8 *raw_edid, int block, bool print_bad_edid,
bool *edid_corrupt);
extern bool drm_edid_is_valid(struct edid *edid);
+extern void drm_edid_get_monitor_name(struct edid *edid, char *name,
+ int buflen);
extern struct drm_tile_group *drm_mode_create_tile_group(struct drm_device *dev,
char topology[8]);
--
2.5.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v4 2/3] drm/dp/mst: Enhance DP MST debugfs output
2016-04-14 17:18 [PATCH v4 1/3] drm/edid: Add drm_edid_get_monitor_name() Jim Bride
@ 2016-04-14 17:18 ` Jim Bride
2016-04-14 17:18 ` [PATCH v4 3/3] drm/i915/dp/mst: Add source port info to " Jim Bride
2016-04-15 6:26 ` ✗ Fi.CI.BAT: failure for series starting with [v4,1/3] drm/edid: Add drm_edid_get_monitor_name() Patchwork
2 siblings, 0 replies; 5+ messages in thread
From: Jim Bride @ 2016-04-14 17:18 UTC (permalink / raw)
To: intel-gfx; +Cc: dri-devel
Add some additional information (input vs. output port, sink associated
with VC, peer device type, max number of VCs supported) and ensure that
any embedded '\0' characters in a branch device's devid string are not
written to debugfs.
v2: Rebase + change drm_edid_get_monitor_name() call to reflect new
signature.
v3: Minor changes suggested by Jani + rebase.
v4: Rebase
cc: dri-devel@lists.freedesktop.org
cc: Jani Nikula <jani.nikula@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Jim Bride <jim.bride@linux.intel.com>
---
drivers/gpu/drm/drm_dp_mst_topology.c | 29 ++++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
index 27fbd79..06d8b0a 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -2729,7 +2729,7 @@ static void drm_dp_mst_dump_mstb(struct seq_file *m,
seq_printf(m, "%smst: %p, %d\n", prefix, mstb, mstb->num_ports);
list_for_each_entry(port, &mstb->ports, next) {
- seq_printf(m, "%sport: %d: ddps: %d ldps: %d, sdp: %d/%d, %p, conn: %p\n", prefix, port->port_num, port->ddps, port->ldps, port->num_sdp_streams, port->num_sdp_stream_sinks, port, port->connector);
+ seq_printf(m, "%sport: %d: input: %d: pdt: %d, ddps: %d ldps: %d, sdp: %d/%d, %p, conn: %p\n", prefix, port->port_num, port->input, port->pdt, port->ddps, port->ldps, port->num_sdp_streams, port->num_sdp_stream_sinks, port, port->connector);
if (port->mstb)
drm_dp_mst_dump_mstb(m, port->mstb);
}
@@ -2750,6 +2750,16 @@ static bool dump_dp_payload_table(struct drm_dp_mst_topology_mgr *mgr,
return false;
}
+static void fetch_monitor_name(struct drm_dp_mst_topology_mgr *mgr,
+ struct drm_dp_mst_port *port, char *name,
+ int namelen)
+{
+ struct edid *mst_edid;
+
+ mst_edid = drm_dp_mst_get_edid(port->connector, mgr, port);
+ drm_edid_get_monitor_name(mst_edid, name, namelen);
+}
+
/**
* drm_dp_mst_dump_topology(): dump topology to seq file.
* @m: seq_file to dump output to
@@ -2762,6 +2772,7 @@ void drm_dp_mst_dump_topology(struct seq_file *m,
{
int i;
struct drm_dp_mst_port *port;
+
mutex_lock(&mgr->lock);
if (mgr->mst_primary)
drm_dp_mst_dump_mstb(m, mgr->mst_primary);
@@ -2770,14 +2781,21 @@ void drm_dp_mst_dump_topology(struct seq_file *m,
mutex_unlock(&mgr->lock);
mutex_lock(&mgr->payload_lock);
- seq_printf(m, "vcpi: %lx %lx\n", mgr->payload_mask, mgr->vcpi_mask);
+ seq_printf(m, "vcpi: %lx %lx %d\n", mgr->payload_mask, mgr->vcpi_mask,
+ mgr->max_payloads);
for (i = 0; i < mgr->max_payloads; i++) {
if (mgr->proposed_vcpis[i]) {
+ char name[14];
+
port = container_of(mgr->proposed_vcpis[i], struct drm_dp_mst_port, vcpi);
- seq_printf(m, "vcpi %d: %d %d %d\n", i, port->port_num, port->vcpi.vcpi, port->vcpi.num_slots);
+ fetch_monitor_name(mgr, port, name, sizeof(name));
+ seq_printf(m, "vcpi %d: %d %d %d sink name: %s\n", i,
+ port->port_num, port->vcpi.vcpi,
+ port->vcpi.num_slots,
+ (*name != 0) ? name : "Unknown");
} else
- seq_printf(m, "vcpi %d:unsed\n", i);
+ seq_printf(m, "vcpi %d:unused\n", i);
}
for (i = 0; i < mgr->max_payloads; i++) {
seq_printf(m, "payload %d: %d, %d, %d\n",
@@ -2817,8 +2835,9 @@ void drm_dp_mst_dump_topology(struct seq_file *m,
for (i = 0; i < 0x3; i++)
seq_printf(m, "%02x", buf[i]);
seq_printf(m, " devid: ");
- for (i = 0x3; i < 0x8; i++)
+ for (i = 0x3; i < 0x8 && buf[i]; i++)
seq_printf(m, "%c", buf[i]);
+
seq_printf(m, " revision: hw: %x.%x sw: %x.%x", buf[0x9] >> 4, buf[0x9] & 0xf, buf[0xa], buf[0xb]);
seq_printf(m, "\n");
bret = dump_dp_payload_table(mgr, buf);
--
2.5.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v4 3/3] drm/i915/dp/mst: Add source port info to debugfs output
2016-04-14 17:18 [PATCH v4 1/3] drm/edid: Add drm_edid_get_monitor_name() Jim Bride
2016-04-14 17:18 ` [PATCH v4 2/3] drm/dp/mst: Enhance DP MST debugfs output Jim Bride
@ 2016-04-14 17:18 ` Jim Bride
2016-04-15 6:26 ` ✗ Fi.CI.BAT: failure for series starting with [v4,1/3] drm/edid: Add drm_edid_get_monitor_name() Patchwork
2 siblings, 0 replies; 5+ messages in thread
From: Jim Bride @ 2016-04-14 17:18 UTC (permalink / raw)
To: intel-gfx
Modify the debugfs output for i915_dp_mst_info to list the source port for
the DP MST topology in question.
v2: rebase
v3: rebase
v4: rebase
cc: Jani Nikula <jani.nikula@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Jim Bride <jim.bride@linux.intel.com>
---
drivers/gpu/drm/i915/i915_debugfs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 46cc03b..dd8c5c9 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -3446,7 +3446,8 @@ static int i915_dp_mst_info(struct seq_file *m, void *unused)
intel_dig_port = enc_to_dig_port(encoder);
if (!intel_dig_port->dp.can_mst)
continue;
-
+ seq_printf(m, "MST Source Port %c\n",
+ port_name(intel_dig_port->port));
drm_dp_mst_dump_topology(m, &intel_dig_port->dp.mst_mgr);
}
drm_modeset_unlock_all(dev);
--
2.5.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 5+ messages in thread
* ✗ Fi.CI.BAT: failure for series starting with [v4,1/3] drm/edid: Add drm_edid_get_monitor_name()
2016-04-14 17:18 [PATCH v4 1/3] drm/edid: Add drm_edid_get_monitor_name() Jim Bride
2016-04-14 17:18 ` [PATCH v4 2/3] drm/dp/mst: Enhance DP MST debugfs output Jim Bride
2016-04-14 17:18 ` [PATCH v4 3/3] drm/i915/dp/mst: Add source port info to " Jim Bride
@ 2016-04-15 6:26 ` Patchwork
2016-04-15 12:37 ` Daniel Vetter
2 siblings, 1 reply; 5+ messages in thread
From: Patchwork @ 2016-04-15 6:26 UTC (permalink / raw)
To: jim.bride; +Cc: intel-gfx
== Series Details ==
Series: series starting with [v4,1/3] drm/edid: Add drm_edid_get_monitor_name()
URL : https://patchwork.freedesktop.org/series/5731/
State : failure
== Summary ==
Series 5731v1 Series without cover letter
http://patchwork.freedesktop.org/api/1.0/series/5731/revisions/1/mbox/
bdw-ultra total:203 pass:179 dwarn:0 dfail:0 fail:1 skip:23
bsw-nuc-2 total:202 pass:162 dwarn:0 dfail:0 fail:1 skip:39
byt-nuc total:202 pass:164 dwarn:0 dfail:0 fail:0 skip:38
hsw-brixbox total:203 pass:178 dwarn:0 dfail:0 fail:1 skip:24
ivb-t430s total:203 pass:174 dwarn:0 dfail:0 fail:1 skip:28
skl-i7k-2 total:203 pass:177 dwarn:0 dfail:0 fail:1 skip:25
skl-nuci5 total:203 pass:191 dwarn:0 dfail:0 fail:1 skip:11
snb-dellxps total:203 pass:164 dwarn:0 dfail:0 fail:1 skip:38
snb-x220t total:203 pass:164 dwarn:0 dfail:0 fail:2 skip:37
BOOT FAILED for ilk-hp8440p
Results at /archive/results/CI_IGT_test/Patchwork_1905/
c7583aec08ba04e2336bd9879a10f30d4e0cdc60 drm-intel-nightly: 2016y-04m-14d-14h-53m-34s UTC integration manifest
2171235 drm/i915/dp/mst: Add source port info to debugfs output
b92ba82 drm/dp/mst: Enhance DP MST debugfs output
c6df32b drm/edid: Add drm_edid_get_monitor_name()
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: ✗ Fi.CI.BAT: failure for series starting with [v4,1/3] drm/edid: Add drm_edid_get_monitor_name()
2016-04-15 6:26 ` ✗ Fi.CI.BAT: failure for series starting with [v4,1/3] drm/edid: Add drm_edid_get_monitor_name() Patchwork
@ 2016-04-15 12:37 ` Daniel Vetter
0 siblings, 0 replies; 5+ messages in thread
From: Daniel Vetter @ 2016-04-15 12:37 UTC (permalink / raw)
To: intel-gfx
On Fri, Apr 15, 2016 at 06:26:18AM -0000, Patchwork wrote:
> == Series Details ==
>
> Series: series starting with [v4,1/3] drm/edid: Add drm_edid_get_monitor_name()
> URL : https://patchwork.freedesktop.org/series/5731/
> State : failure
>
> == Summary ==
>
> Series 5731v1 Series without cover letter
> http://patchwork.freedesktop.org/api/1.0/series/5731/revisions/1/mbox/
>
>
> bdw-ultra total:203 pass:179 dwarn:0 dfail:0 fail:1 skip:23
> bsw-nuc-2 total:202 pass:162 dwarn:0 dfail:0 fail:1 skip:39
> byt-nuc total:202 pass:164 dwarn:0 dfail:0 fail:0 skip:38
> hsw-brixbox total:203 pass:178 dwarn:0 dfail:0 fail:1 skip:24
> ivb-t430s total:203 pass:174 dwarn:0 dfail:0 fail:1 skip:28
> skl-i7k-2 total:203 pass:177 dwarn:0 dfail:0 fail:1 skip:25
> skl-nuci5 total:203 pass:191 dwarn:0 dfail:0 fail:1 skip:11
> snb-dellxps total:203 pass:164 dwarn:0 dfail:0 fail:1 skip:38
> snb-x220t total:203 pass:164 dwarn:0 dfail:0 fail:2 skip:37
> BOOT FAILED for ilk-hp8440p
Discussed with Tomi, this box isn't wired up with a reset switch and
therefore can die on unrelated bad kernels. Without CI being able to
figure this out.
So should be fairly safe to ignore (but I'm not really happy that we don't
have more reliable information).
Applied all 3 patches to drm-misc, for easier merging.
-Daniel
>
> Results at /archive/results/CI_IGT_test/Patchwork_1905/
>
> c7583aec08ba04e2336bd9879a10f30d4e0cdc60 drm-intel-nightly: 2016y-04m-14d-14h-53m-34s UTC integration manifest
> 2171235 drm/i915/dp/mst: Add source port info to debugfs output
> b92ba82 drm/dp/mst: Enhance DP MST debugfs output
> c6df32b drm/edid: Add drm_edid_get_monitor_name()
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-04-15 12:37 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-14 17:18 [PATCH v4 1/3] drm/edid: Add drm_edid_get_monitor_name() Jim Bride
2016-04-14 17:18 ` [PATCH v4 2/3] drm/dp/mst: Enhance DP MST debugfs output Jim Bride
2016-04-14 17:18 ` [PATCH v4 3/3] drm/i915/dp/mst: Add source port info to " Jim Bride
2016-04-15 6:26 ` ✗ Fi.CI.BAT: failure for series starting with [v4,1/3] drm/edid: Add drm_edid_get_monitor_name() Patchwork
2016-04-15 12:37 ` Daniel Vetter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox