• Todd Previte's avatar
    drm/i915: Implement the intel_dp_autotest_edid function for DP EDID complaince tests · 559be30c
    Todd Previte authored
    Updates the EDID compliance test function to perform the analyze and react to
    the EDID data read as a result of a hot plug event. The results of this
    analysis are handed off to userspace so that the userspace app can set the
    display mode appropriately for the test result/response.
    
    The compliance_test_active flag now appears at the end of the individual
    test handling functions. This is so that the kernel-side operations can
    be completed without the risk of interruption from the userspace app
    that is polling on that flag.
    
    V2:
    - Addressed mailing list feedback
    - Removed excess debug messages
    - Removed extraneous comments
    - Fixed formatting issues (line length > 80)
    - Updated the debug message in compute_edid_checksum to output hex values
      instead of decimal
    V3:
    - Addressed more list feedback
    - Added the test_active flag to the autotest function
    - Removed test_active flag from handler
    - Added failsafe check on the compliance test active flag
      at the end of the test handler
    - Fixed checkpatch.pl issues
    V4:
    - Removed the checksum computation function and its use as it has been
      rendered superfluous by changes to the core DRM EDID functions
    - Updated to use the raw header corruption detection mechanism
    - Moved the declaration of the test_data variable here
    V5:
    - Update test active flag variable name to match the change in the
      first patch of the series.
    - Relocated the test active flag declaration and initialization
      to this patch
    V6:
    - Updated to use the new flag for raw EDID header corruption
    - Removed the extra EDID read from the autotest function
    - Added the edid_checksum variable to struct intel_dp so that the
      autotest function can write it to the sink device
    - Moved the update to the hpd_pulse function to another patch
    - Removed extraneous constants
    V7:
    - Fixed erroneous placement of the checksum assignment. In some cases
      such as when the EDID read fails and is NULL, this causes a NULL ptr
      dereference in the kernel. Bad news. Fixed now.
    V8:
    - Updated to support the kfree() on the EDID data added previously
    V9:
    - Updated for the long_hpd flag propagation
    V10:
    - Updated to use actual checksum from the EDID read that occurs during
      normal hot plug path execution
    - Removed variables from intel_dp struct that are no longer needed
    - Updated the patch subject to more closely match the nature and contents
      of the patch
    - Fixed formatting problem (long line)
    V11:
    - Removed extra debug messages
    - Updated comments to be more informative
    - Removed extra variable
    V12:
    - Removed the 4 bit offset of the resolution setting in compliance data
    - Changed to DRM_DEBUG_KMS instead of DRM_DEBUG_DRIVER
    Signed-off-by: default avatarTodd Previte <tprevite@gmail.com>
    Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    559be30c
intel_dp.c 166 KB