* [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