From: Egbert Eich <eich@suse.de>
To: dri-devel@lists.freedesktop.org
Cc: Egbert Eich <eich@suse.de>, Takashi Iwai <tiwai@suse.com>
Subject: [PATCH 00/17] DRM/KMS/EDID: Various EDID handling related fixes.
Date: Mon, 19 Nov 2012 15:23:01 -0500 [thread overview]
Message-ID: <1353356598-10634-1-git-send-email-eich@suse.de> (raw)
This patchset fixes issues about EDID and EDID Extension block handling:
1. We currently don't return any EDID information if there are issues with
reading extension blocks. There are devices however which announce to
have EDID extension blocks although these are not readable.
If reading extension blocks fails we should at least return the base
block (with a corrected extension blcok flag).
2. There are broken legacy DDC devices around which wrongly announce to have ED
extension blocks. Since the segment address is ignored on these devices
we will get a base block returned for any uneven block number. Detect this
situation and abort reading further blocks.
3. When we read EDID extension blocks but fail to validate them we discard
them and correct the EDID block count in the base block. There may however
be a block map in the first extesion block which we should also fix.
Similarly, don't fail if we cannot allocate enough contiguous memory for
all EDID extension blocks: rather than failing completely, it is better
to return at least the base block and if possible all extension blocks
for which there is memory.
4. EDID 'firmware'-files:
* Treat the, the same way as EDIDs read from DDC channels:
- use the same routines to validate and fix them.
- feed them when reading
* Support different EDID files for different connectors.
5. Consolidate EDID error handling:
Store information about the error status of the last DDC read in the
drm_connector structure. This data can be used:
- in the driver to detect certain issues with DDC read out.
- provide a finer control over repeated error logging - instead
of disabling EDID error logging entirely if an EDID error has
been detected, only disable it for those errors which have been
seen also on the previous DDC read cycle.
6. Move EDID-related functions to drm_edid.h
The handling of EDID related DRM functions seemed to be a bit arbitrary:
although drm_edid.h had been created, new functions were often added to
drm_crtc.h
Egbert Eich (17):
DRM/KMS/EDID: Mask out Segment Bits when calculating Offset.
DRM/KMS/EDID: 0x7e -> EDID_EXTENSION_FLAG_OFFSET
DRM/KMS/EDID: Return Base EDID block if reading EEDID Blocks fails.
DRM/KMS/EDID: Test EDDC if EDID announces more than one Extension
Block.
DRM/KMS/EDID: Fix up EEDID Map Blocks if Extension block count has
changed.
DRM/exynos: Fix Memory Leak: free EDID blcok returned by
drm_get_edid().
DRM/KMS/EDID: Move drm_edid_load.o to drm.ko
DRM/KMS/EDID: Use Extension Block Fixup Code also for 'firmware'
EDID.
DRM/KMS/EDID: Feed 'firmware' supplied EDID blocks whenever the EDID
is read.
DRM/KMS/EDID: Cache EDID blobs with extensions.
DRM/KMS/EDID: Avoid failing on krealloc on EDID blocks.
DRM/KMS/EDID: Consolidate EDID Error Handling.
DRM/KMS/EDID: Allow for multiple Connectors when specifying
'firmware'-EDID Files.
DRM/KMS/ast: Include drm_edid.h in file using drm_get_edid().
DRM/KMS/gma500: Include drm_edid.h in file using drm_get_edid().
DRM/KMS/mgag200: Include drm_edid.h in file using drm_get_edid().
DRM/KMS/EDID: Move EDID related Functions to drm_edid.h.
drivers/gpu/drm/Makefile | 2 +-
drivers/gpu/drm/ast/ast_mode.c | 1 +
drivers/gpu/drm/drm_crtc.c | 1 +
drivers/gpu/drm/drm_crtc_helper.c | 6 +-
drivers/gpu/drm/drm_edid.c | 303 ++++++++++++++++++++++++----
drivers/gpu/drm/drm_edid_load.c | 115 +++++------
drivers/gpu/drm/exynos/exynos_hdmi.c | 1 +
drivers/gpu/drm/gma500/cdv_intel_dp.c | 1 +
drivers/gpu/drm/gma500/oaktrail_lvds.c | 1 +
drivers/gpu/drm/gma500/psb_intel_modes.c | 1 +
drivers/gpu/drm/mgag200/mgag200_mode.c | 1 +
drivers/gpu/drm/radeon/radeon_connectors.c | 2 +-
include/drm/drm_crtc.h | 13 +-
include/drm/drm_edid.h | 24 ++-
14 files changed, 348 insertions(+), 124 deletions(-)
--
1.7.7
next reply other threads:[~2012-11-19 20:41 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-19 20:23 Egbert Eich [this message]
2012-11-19 20:23 ` [PATCH 01/17] DRM/KMS/EDID: Mask out Segment Bits when calculating Offset Egbert Eich
2012-11-19 20:23 ` [PATCH 03/17] DRM/KMS/EDID: Return Base EDID block if reading EEDID Blocks fails Egbert Eich
2012-11-19 20:23 ` [PATCH 04/17] DRM/KMS/EDID: Test EDDC if EDID announces more than one Extension Block Egbert Eich
2012-11-19 20:23 ` [PATCH 05/17] DRM/KMS/EDID: Fix up EEDID Map Blocks if Extension block count has changed Egbert Eich
2012-11-20 8:13 ` Takashi Iwai
2012-11-19 20:23 ` [PATCH 06/17] DRM/exynos: Fix Memory Leak: free EDID blcok returned by drm_get_edid() Egbert Eich
2012-11-20 4:17 ` Inki Dae
2012-11-20 9:30 ` [PATCH] drm/exynos: fix memory leak: free EDID block Egbert Eich
2012-11-20 19:58 ` Sean Paul
2012-11-20 20:29 ` Egbert Eich
2012-11-20 21:18 ` Sean Paul
2012-12-14 10:24 ` Jani Nikula
2012-11-21 3:50 ` Inki Dae
2012-11-19 20:23 ` [PATCH 07/17] DRM/KMS/EDID: Move drm_edid_load.o to drm.ko Egbert Eich
2012-11-20 8:26 ` Takashi Iwai
2012-11-19 20:23 ` [PATCH 08/17] DRM/KMS/EDID: Use Extension Block Fixup Code also for 'firmware' EDID Egbert Eich
2012-11-20 8:21 ` Takashi Iwai
2012-11-19 20:23 ` [PATCH 09/17] DRM/KMS/EDID: Feed 'firmware' supplied EDID blocks whenever the EDID is read Egbert Eich
2012-11-19 20:23 ` [PATCH 10/17] DRM/KMS/EDID: Cache EDID blobs with extensions Egbert Eich
2012-11-20 8:29 ` Takashi Iwai
2012-11-19 20:23 ` [PATCH 11/17] DRM/KMS/EDID: Avoid failing on krealloc on EDID blocks Egbert Eich
2012-11-19 20:23 ` [PATCH 12/17] DRM/KMS/EDID: Consolidate EDID Error Handling Egbert Eich
2012-11-19 20:23 ` [PATCH 13/17] DRM/KMS/EDID: Allow for multiple Connectors when specifying 'firmware'-EDID Files Egbert Eich
2012-11-20 8:38 ` Takashi Iwai
2012-11-19 20:23 ` [PATCH 14/17] DRM/KMS/ast: Include drm_edid.h in file using drm_get_edid() Egbert Eich
2012-11-19 20:23 ` [PATCH 15/17] DRM/KMS/gma500: " Egbert Eich
2012-11-19 20:23 ` [PATCH 16/17] DRM/KMS/mgag200: " Egbert Eich
2012-11-19 20:23 ` [PATCH 17/17] DRM/KMS/EDID: Move EDID related Functions to drm_edid.h Egbert Eich
2012-11-22 10:22 ` [PATCH v2 00/18] DRM/KMS/EDID: Various EDID handling related fixes Egbert Eich
2012-11-22 10:22 ` [PATCH v2 01/18] DRM/KMS/EDID: Mask out Segment Bits when calculating Offset Egbert Eich
2012-11-22 10:22 ` [PATCH v2 02/18] DRM/KMS/EDID: 0x7e -> EDID_EXTENSION_FLAG_OFFSET (v2) Egbert Eich
2012-11-22 10:22 ` [PATCH v2 03/18] DRM/KMS/EDID: Return Base EDID block if reading EEDID Blocks fails (v2) Egbert Eich
2012-11-22 10:22 ` [PATCH v2 04/18] DRM/KMS/EDID: Don't fail when failing to allocate memory for EDID extensions Egbert Eich
2012-11-22 10:22 ` [PATCH v2 05/18] DRM/KMS/EDID: Test EDDC if EDID announces more than one Extension Block (v2) Egbert Eich
2012-11-22 11:20 ` Ville Syrjälä
2012-11-22 12:07 ` Egbert Eich
2012-11-22 12:29 ` Ville Syrjälä
2012-11-22 13:18 ` Egbert Eich
2012-11-22 14:39 ` [PATCH v3] DRM/KMS/EDID: Test EDDC if EDID announces more than one Extension Block (v3) Egbert Eich
2012-11-22 10:22 ` [PATCH v2 06/18] DRM/KMS/EDID: Don't expect extension blocks for EDID Versions < 1.3 Egbert Eich
2012-11-22 10:22 ` [PATCH v2 07/18] DRM/KMS/EDID: Don't reallocate EDID blob when size has shrunk Egbert Eich
2012-11-22 10:22 ` [PATCH v2 08/18] DRM/KMS/EDID: Fix up EEDID Map Blogs if Extension Block Count has changed (v2) Egbert Eich
2012-11-22 10:22 ` [PATCH v2 09/18] DRM/KMS/EDID: Move drm_edid_load.o to drm.ko (v2) Egbert Eich
2012-11-22 10:23 ` [PATCH v2 10/18] DRM/KMS/EDID: Feed 'firmware' supplied EDID blocks whenever the EDID is read (v2) Egbert Eich
2012-11-22 10:23 ` [PATCH v2 11/18] DRM/KMS/EDID: Allow for multiple Connectors when specifying 'firmware'-EDID Files (v2) Egbert Eich
2012-11-22 10:23 ` [PATCH v2 12/18] DRM/KMS/EDID: Use Extension Block Fixup Code also for 'firmware' EDID (v2) Egbert Eich
2012-11-22 10:23 ` [PATCH v2 13/18] DRM/KMS/EDID: Cache EDID blobs with extensions (v2) Egbert Eich
2012-11-22 14:14 ` Ville Syrjälä
2012-11-22 14:29 ` Egbert Eich
2012-11-22 14:43 ` [PATCH v3] DRM/KMS/EDID: Cache EDID blobs with extensions (v3) Egbert Eich
2012-11-22 10:23 ` [PATCH v2 14/18] DRM/KMS/EDID: Consolidate EDID Error Handling (v2) Egbert Eich
2012-11-22 14:44 ` [PATCH v3] DRM/KMS/EDID: Consolidate EDID Error Handling (v3) Egbert Eich
2012-11-22 16:09 ` Ville Syrjälä
2012-11-22 18:28 ` Egbert Eich
2012-11-22 18:54 ` Ville Syrjälä
2012-11-22 20:01 ` Egbert Eich
2012-11-22 18:57 ` [PATCH v4] DRM/KMS/EDID: Consolidate EDID Error Handling (v4) Egbert Eich
2012-11-22 20:29 ` [PATCH v5] DRM/KMS/EDID: Consolidate EDID Error Handling (v5) Egbert Eich
2012-11-22 10:23 ` [PATCH v2 15/18] DRM/KMS/ast: Include drm_edid.h in file using drm_get_edid() Egbert Eich
2012-11-22 10:23 ` [PATCH v2 16/18] DRM/KMS/gma500: " Egbert Eich
2012-11-22 10:23 ` [PATCH v2 17/18] DRM/KMS/mgag200: " Egbert Eich
2012-11-22 10:23 ` [PATCH v2 18/18] DRM/KMS/EDID: Move EDID related Functions to drm_edid.h Egbert Eich
2012-11-22 19:00 ` [PATCH v4] DRM/KMS/EDID: Move EDID related Functions to drm_edid.h (v2) Egbert Eich
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=1353356598-10634-1-git-send-email-eich@suse.de \
--to=eich@suse.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=tiwai@suse.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.