• Uma Shankar's avatar
    drm/i915/icl: Enable Plane Input CSC for YUV to RGB Conversion · bfe60a02
    Uma Shankar authored
    Plane input CSC needs to be enabled to convert frambuffers from
    YUV to RGB. This is needed for bottom 3 planes on ICL, rest of
    the planes have hardcoded conversion and taken care by the legacy
    code.
    
    This patch defines the co-efficient values for YUV to RGB conversion
    in BT709 and BT601 formats. It programs the coefficients and enables
    the plane input csc unit in hardware.
    
    This has been verified and tested by Maarten and the change is working
    as expecpted.
    
    v2: Addressed Maarten's and Ville's review comments and added the
    coefficients in a 2D array instead of independent Macros.
    
    v3: Added individual coefficient matrix (9 values) instead of 6
    register values as per Maarten's comment. Also addresed a shift
    issue with B channel coefficient.
    
    v4: Added support for Limited Range Color Handling
    
    v5: Fixed Matt and Maarten's review comments.
    
    v6: Added human readable matrix values for YUV to RGB Conversion along
    with just the bspec register values, as per Matt's suggestion.
    
    v7: Refactored the code, move csc coefficient programming function to
    intel_sprite.c and made it static as per Ville's review comment.
    
    v8: Addressed Ville's review comment. Called the coefficient programming
    from within the skl_program_plane and used I915_WRITE_FW instead of
    I915_WRITE.
    
    v9: Fixed Ville's review comments.
    Signed-off-by: default avatarUma Shankar <uma.shankar@intel.com>
    Reviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1541099420-12419-3-git-send-email-uma.shankar@intel.com
    bfe60a02
intel_sprite.c 63.4 KB