Simon Ser
598bde5846
edid: fix missing color point descriptor cleanup
...
This wasn't caught by ASan in CI because we don't have a blob with
color point descriptors.
Signed-off-by: Simon Ser <contact@emersion.fr>
2023-04-14 13:00:50 +02:00
Sebastian Wick
4a8684d1b0
edid: add support for CVT timing code descriptors
...
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-04 02:12:22 +01:00
Sebastian Wick
ef67125056
edid: add support for Color Management Data descriptors
...
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2022-09-26 21:51:58 +02:00
Simon Ser
28beee232c
edid: parse established timings III
...
This display descriptor contains a bitfield indicating support for
DMT timings.
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-09-26 09:18:59 +02:00
Sebastian Wick
cc7597d9cc
edid: add support for color point descriptors
...
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2022-09-15 16:26:03 +02:00
Simon Ser
c637a9daf8
edid: parse timing data from CVT range limit descriptor
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-09-06 09:27:32 +02:00
Simon Ser
7c8bcb09eb
edid: parse timing data from secondary GTF range limit descriptor
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-09-06 09:26:32 +02:00
Simon Ser
7a6d694b1a
Add basic support for DisplayID in EDID extension blocks
...
Establish the new headers and structs, and just parse the
version/revision for now.
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-09-02 06:42:06 +00:00
Sebastian Wick
44e1810f2b
edid: split the detailed timing signal union into separate structs
...
Nested structs makes it impossible to extend the nested struct after
extending the base struct. The union acts as a single struct in this
case but the nesting is still an issue. Use pointers to those structs instead
to keep all of them extensible. Only the struct which is applicable for the
signal type is not a null pointer to make sure only valid data is accessed.
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2022-08-30 12:24:46 +02:00
Simon Ser
93b0fd18de
edid: add support for standard timings descriptor
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-08-29 11:54:48 +00:00
Simon Ser
92c0933b44
edid: parse analog video input params
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-08-09 09:07:17 +00:00
Simon Ser
7275f65131
edid: expose _di_edid_parse_detailed_timing_def
...
This is a private function which parses DTDs. This will be useful
in the next commit to parse DTDs from the CTA extension.
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-08-08 18:37:52 +02:00
Simon Ser
501c20f854
edid: parse established timings I and II
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-08-08 16:33:14 +00:00
Simon Ser
7834b6ba22
info: introduce di_logger
...
This can be used by parsers (EDID, CTA, DisplayID, etc) to report
errors.
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-08-04 08:40:36 +02:00
Simon Ser
afdacff9f8
cta: introduce new API for CTA-861
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-08-01 16:41:33 +02:00
Simon Ser
a1f97e89fe
Add failure message reporting functions
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-29 12:25:48 +02:00
Simon Ser
fed3a18b64
edid: add support for chromaticity coordinates
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-21 16:14:52 +02:00
Simon Ser
2b6f3804a0
edid: parse standard timings
...
The edid-decode output uses data from the DMT, so we're not able
to replicate it yet.
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-21 16:07:52 +02:00
Simon Ser
669bdac3c8
edid: parse display color type
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-21 12:48:49 +00:00
Simon Ser
c8b9b8f42d
edid: parse display range limits descriptor
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-15 17:29:33 +02:00
Simon Ser
13a9287e40
edid: add support for detailed timing definitions
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-14 16:37:57 +02:00
Simon Ser
c383417629
edid: prefix private functions with "_di_"
...
The extra underscore indicates that it's not a function which is
part of our public API. This will allow the next commit to setup the
linker to export functions based on their name.
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-14 11:40:07 +00:00
Simon Ser
10435a83e8
edid: parse other feature support flags
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-10 11:49:20 +00:00
Simon Ser
0473e12c54
edid: parse supported color encoding formats
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-10 11:49:20 +00:00
Simon Ser
039a2a15f7
edid: parse supported DPMS states
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-10 11:49:20 +00:00
Simon Ser
83396e28e3
edid: parse basic gamma
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-10 11:49:20 +00:00
Simon Ser
5b156d8370
edid: parse screen size
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-10 11:49:20 +00:00
Simon Ser
b1bce19f03
edid: parse digital video input definition
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-10 11:49:20 +00:00
Simon Ser
7a31791343
edid: add support for product serial, name and data strings
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-09 07:28:16 +00:00
Simon Ser
2f8f41ea48
edid: add basic support for display descriptors
...
Expose an API to list display descriptors. Detailed timing
descriptors are not parsed.
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-09 07:28:16 +00:00
Simon Ser
6cbaf27c91
edid: switch to a statically allocated extension array
...
The spec defines an upper bound for the extension block count,
which means we don't need to dynamically allocate the array. This
simplifies our logic a bit by removing an allocation error codepath.
The array is NULL-terminated, so EDID_MAX_BLOCK_COUNT is suitable
since it's the max number of extension blocks including the base
block, and the array doesn't include the base block.
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-06-02 10:24:28 +02:00
Simon Ser
ef4661147e
edid: validate extension block tag
...
Skip any extension block with an unsupported tag to make sure we don't
return a bogus enum value to the user.
Signed-off-by: Simon Ser <contact@emersion.fr>
References: https://gitlab.freedesktop.org/emersion/libdisplay-info/-/merge_requests/16#note_1396993
2022-05-25 11:32:59 +02:00
Simon Ser
1c0f7497f5
edid: add low-level API to enumerate extension blocks
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-05-09 14:33:58 +02:00
Simon Ser
882d34cebb
edid: add vendor and product identification data
...
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-05-09 14:33:58 +02:00
Simon Ser
ad1e3f4167
Add very basic EDID functions
...
Introduce an opaque struct di_edid to host EDID structures. Add
a function to create a di_edid (with basic size, header and
checksum validation). Add functions to fetch the EDID version and
revision.
This doesn't do much, but hopefully can be used as a fundation.
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-05-05 16:42:10 +02:00