All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/17] DRM/KMS/EDID: Various EDID handling related fixes.
@ 2012-11-19 20:23 Egbert Eich
  2012-11-19 20:23 ` [PATCH 01/17] DRM/KMS/EDID: Mask out Segment Bits when calculating Offset Egbert Eich
                   ` (17 more replies)
  0 siblings, 18 replies; 64+ messages in thread
From: Egbert Eich @ 2012-11-19 20:23 UTC (permalink / raw)
  To: dri-devel; +Cc: Egbert Eich, Takashi Iwai

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

^ permalink raw reply	[flat|nested] 64+ messages in thread

end of thread, other threads:[~2012-12-14 10:23 UTC | newest]

Thread overview: 64+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-19 20:23 [PATCH 00/17] DRM/KMS/EDID: Various EDID handling related fixes Egbert Eich
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

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.