From: Simon Ser <simon.ser@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: martin.peres@intel.com
Subject: [igt-dev] [PATCH i-g-t v4 07/10] lib/igt_chamelium: set EDID serial
Date: Tue, 25 Jun 2019 16:14:28 +0300 [thread overview]
Message-ID: <20190625131431.29336-8-simon.ser@intel.com> (raw)
In-Reply-To: <20190625131431.29336-1-simon.ser@intel.com>
Set a different EDID serial string for each Chamelium port, so that we can
easily tell which DRM connector maps to a Chamelium port.
Signed-off-by: Simon Ser <simon.ser@intel.com>
---
lib/igt_chamelium.c | 43 ++++++++++++++++++++++++++++++++++++++-----
1 file changed, 38 insertions(+), 5 deletions(-)
diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
index 467f1a458516..959a14333ed9 100644
--- a/lib/igt_chamelium.c
+++ b/lib/igt_chamelium.c
@@ -82,7 +82,9 @@
*/
struct chamelium_edid {
- struct edid *raw;
+ struct chamelium *chamelium;
+ struct edid *base;
+ struct edid *raw[CHAMELIUM_MAX_PORTS];
int ids[CHAMELIUM_MAX_PORTS];
struct igt_list link;
};
@@ -566,13 +568,33 @@ struct chamelium_edid *chamelium_new_edid(struct chamelium *chamelium,
size_t edid_size = edid_get_size(edid);
chamelium_edid = calloc(1, sizeof(struct chamelium_edid));
- chamelium_edid->raw = malloc(edid_size);
- memcpy(chamelium_edid->raw, edid, edid_get_size(edid));
+ chamelium_edid->chamelium = chamelium;
+ chamelium_edid->base = malloc(edid_size);
+ memcpy(chamelium_edid->base, edid, edid_get_size(edid));
igt_list_add(&chamelium_edid->link, &chamelium->edids);
return chamelium_edid;
}
+/**
+ * chamelium_port_tag_edid: tag the EDID with the provided Chamelium port.
+ */
+static void chamelium_port_tag_edid(struct chamelium_port *port,
+ struct edid *edid)
+{
+ uint32_t *serial;
+
+ /* Product code: Chamelium */
+ edid->prod_code[0] = 'C';
+ edid->prod_code[1] = 'H';
+
+ /* Serial: Chamelium port ID */
+ serial = (uint32_t *) &edid->serial;
+ *serial = port->id;
+
+ edid_update_checksum(edid);
+}
+
/**
* chamelium_edid_get_raw: get the raw EDID
* @edid: the Chamelium EDID
@@ -587,7 +609,17 @@ struct chamelium_edid *chamelium_new_edid(struct chamelium *chamelium,
const struct edid *chamelium_edid_get_raw(struct chamelium_edid *edid,
struct chamelium_port *port)
{
- return edid->raw;
+ size_t port_index = port - edid->chamelium->ports;
+ size_t edid_size;
+
+ if (!edid->raw[port_index]) {
+ edid_size = edid_get_size(edid->base);
+ edid->raw[port_index] = malloc(edid_size);
+ memcpy(edid->raw[port_index], edid->base, edid_size);
+ chamelium_port_tag_edid(port, edid->raw[port_index]);
+ }
+
+ return edid->raw[port_index];
}
/**
@@ -1943,8 +1975,9 @@ void chamelium_deinit(struct chamelium *chamelium)
for (i = 0; i < CHAMELIUM_MAX_PORTS; i++) {
if (pos->ids[i])
chamelium_destroy_edid(chamelium, pos->ids[i]);
+ free(pos->raw[i]);
}
- free(pos->raw);
+ free(pos->base);
free(pos);
}
--
2.22.0
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2019-06-25 13:14 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-25 13:14 [igt-dev] [PATCH i-g-t v4 00/10] Chamelium port mapping auto-discovery Simon Ser
2019-06-25 13:14 ` [igt-dev] [PATCH i-g-t v4 01/10] lib/igt_edid: add edid_get_size Simon Ser
2019-06-25 14:19 ` Ville Syrjälä
2019-06-25 13:14 ` [igt-dev] [PATCH i-g-t v4 02/10] lib/igt_chamelium: fix chamelium_port_set_edid docs Simon Ser
2019-07-18 10:08 ` Arkadiusz Hiler
2019-06-25 13:14 ` [igt-dev] [PATCH i-g-t v4 03/10] lib/igt_chamelium: allow EDIDs to be mutated for each port Simon Ser
2019-07-18 10:10 ` Arkadiusz Hiler
2019-06-25 13:14 ` [igt-dev] [PATCH i-g-t v4 04/10] lib/igt_chamelium: split chamelium_new_edid Simon Ser
2019-07-18 10:24 ` Arkadiusz Hiler
2019-06-25 13:14 ` [igt-dev] [PATCH i-g-t v4 05/10] lib/igt_chamelium: add CHAMELIUM_MAX_PORTS Simon Ser
2019-07-18 10:41 ` Arkadiusz Hiler
2019-06-25 13:14 ` [igt-dev] [PATCH i-g-t v4 06/10] lib/igt_chamelium: upload one EDID per port Simon Ser
2019-07-18 11:44 ` Arkadiusz Hiler
2019-06-25 13:14 ` Simon Ser [this message]
2019-07-18 12:05 ` [igt-dev] [PATCH i-g-t v4 07/10] lib/igt_chamelium: set EDID serial Arkadiusz Hiler
2019-06-25 13:14 ` [igt-dev] [PATCH i-g-t v4 08/10] lib/igt_edid: add edid_get_mfg Simon Ser
2019-06-25 14:22 ` Ville Syrjälä
2019-06-25 13:14 ` [igt-dev] [PATCH i-g-t v4 09/10] lib/igt_chamelium: add chamelium_get_video_ports Simon Ser
2019-07-18 12:17 ` Arkadiusz Hiler
2019-06-25 13:14 ` [igt-dev] [PATCH i-g-t v4 10/10] lib/igt_chamelium: autodiscover Chamelium port mappings Simon Ser
2019-07-19 6:14 ` Arkadiusz Hiler
2019-06-25 14:33 ` [igt-dev] ✓ Fi.CI.BAT: success for Chamelium port mapping auto-discovery (rev3) Patchwork
2019-06-25 15:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190625131431.29336-8-simon.ser@intel.com \
--to=simon.ser@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=martin.peres@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox