summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSimon Ser <simon.ser@intel.com>2019-06-19 14:33:31 +0300
committerSimon Ser <simon.ser@intel.com>2019-07-02 13:59:32 +0300
commit4009375fd4e7153f21507046f97ee145c751cef9 (patch)
tree3344bd20a455fbecc9acdf87eb9eeda6a04f1778 /lib
parent44af059741593587f1c500b00e7b07c5d7240c61 (diff)
lib/igt_edid: add edid_get_mfg
This returns the 3-letter manufacturer identifier of an EDID. Signed-off-by: Simon Ser <simon.ser@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/igt_edid.c13
-rw-r--r--lib/igt_edid.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/igt_edid.c b/lib/igt_edid.c
index 6cc5e7dd..cbb7eeff 100644
--- a/lib/igt_edid.c
+++ b/lib/igt_edid.c
@@ -172,6 +172,19 @@ void detailed_timing_set_string(struct detailed_timing *dt,
ds->str[len] = '\n';
}
+/**
+ * edid_get_mfg: reads the 3-letter manufacturer identifier
+ *
+ * The string is *not* NULL-terminated.
+ */
+void edid_get_mfg(const struct edid *edid, char out[static 3])
+{
+ out[0] = ((edid->mfg_id[0] & 0x7C) >> 2) + '@';
+ out[1] = (((edid->mfg_id[0] & 0x03) << 3) |
+ ((edid->mfg_id[1] & 0xE0) >> 5)) + '@';
+ out[2] = (edid->mfg_id[1] & 0x1F) + '@';
+}
+
static void edid_set_mfg(struct edid *edid, const char mfg[static 3])
{
edid->mfg_id[0] = (mfg[0] - '@') << 2 | (mfg[1] - '@') >> 3;
diff --git a/lib/igt_edid.h b/lib/igt_edid.h
index 8d8e30ec..47581bb7 100644
--- a/lib/igt_edid.h
+++ b/lib/igt_edid.h
@@ -298,6 +298,7 @@ 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 edid_get_mfg(const struct edid *edid, char out[static 3]);
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,