[igt-dev] [PATCH i-g-t v4 01/10] lib/igt_edid: add edid_get_size

Simon Ser
2019-06-25T13:14:27Z

This is a simple helper to get the size in bytes of an arbitrary EDID.

Signed-off-by: Simon Ser <simon.ser@intel.com>
---
lib/igt_chamelium.c | 6 ++----
lib/igt_edid.c | 10 ++++++++++
lib/igt_edid.h | 1 +
3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
index b83ff395d44b..966d78dce146 100644
--- a/lib/igt_chamelium.c
+++ b/lib/igt_chamelium.c
@@ -538,12 +538,10 @@ struct chamelium_edid *chamelium_new_edid(struct chamelium *chamelium,
xmlrpc_value *res;
struct chamelium_edid *chamelium_edid;
int edid_id;
- struct edid *edid = (struct edid *) raw_edid;
- size_t edid_size = sizeof(struct edid) +
- edid->extensions_len * sizeof(struct edid_ext);
+ const struct edid *edid = (struct edid *) raw_edid;

res = chamelium_rpc(chamelium, NULL, "CreateEdid", "(6)",
- raw_edid, edid_size);
+ raw_edid, edid_get_size(edid));

xmlrpc_read_int(&chamelium->env, res, &edid_id);
xmlrpc_DECREF(res);
diff --git a/lib/igt_edid.c b/lib/igt_edid.c
index e71136f48e14..6cc5e7dd42c4 100644
--- a/lib/igt_edid.c
+++ b/lib/igt_edid.c
@@ -274,6 +274,16 @@ void edid_update_checksum(struct edid *edid)
sizeof(struct edid));
}

+/**
+ * edid_get_size: return the size of the EDID block in bytes including EDID
+ * extensions, if any.
+ */
+size_t edid_get_size(const struct edid *edid)
+{
+ return sizeof(struct edid) +
+ edid->extensions_len * sizeof(struct edid_ext);
+}
+
/**
* cea_sad_init_pcm:
* @channels: the number of supported channels (max. 8)
diff --git a/lib/igt_edid.h b/lib/igt_edid.h
index 00596ef1a46f..8d8e30ec0554 100644
--- a/lib/igt_edid.h
+++ b/lib/igt_edid.h
@@ -297,6 +297,7 @@ struct edid {
void edid_init(struct edid *edid);
void edid_init_with_mode(struct edid *edid, drmModeModeInfo *mode);
void edid_update_checksum(struct edid *edid);
+size_t edid_get_size(const struct edid *edid);
void detailed_timing_set_mode(struct detailed_timing *dt, drmModeModeInfo *mode,
int width_mm, int height_mm);
void detailed_timing_set_monitor_range_mode(struct detailed_timing *dt,
--
2.22.0