• Shashank Sharma's avatar
    drm/i915: enable scrambling · 15953637
    Shashank Sharma authored
    Geminilake platform sports a native HDMI 2.0 controller, and is
    capable of driving pixel-clocks upto 594Mhz. HDMI 2.0 spec
    mendates scrambling for these higher clocks, for reduced RF footprint.
    
    This patch checks if the monitor supports scrambling, and if required,
    enables it during the modeset.
    
    V2: Addressed review comments from Ville:
     - Do not track scrambling status in DRM layer, track somewhere in
       driver like in intel_crtc_state.
     - Don't talk to monitor at such a low layer, set monitor scrambling
       in intel_enable_ddi() before enabling the port.
    
    V3: Addressed review comments from Jani
     - In comments, function names, use "sink" instead of "monitor",
       so that the implementation could be close to the language of
       HDMI spec.
    
    V4: Addressed review comment from Maarten
     - scrambling -> hdmi_scrambling
     - high_tmds_clock_ratio -> hdmi_high_tmds_clock_ratio
    
    V5: Addressed review comments from Ville and Ander
     - Do not modifiy the crtc_state after compute_config. Move all
       scrambling and tmds_clock_ratio calcutations to compute_config.
     - While setting scrambling for source/sink, do not check the
       conditions again, just go by the crtc_state flags. This will
       simplyfy the condition checks.
    
    V6: Addressed review comments from Ville
     - Do not add IS_GLK check in disable/enable function, instead add it
       in compute_config, while setting state flags.
     - Remove unnecessary paranthesis.
     - Simplyfy handle_sink_scrambling function as suggested.
     - Add readout code for scrambling status in get_ddi_config and add a
       check for the same in pipe_config_compare.
    
    V7: Addressed review comments from Ander/Ville
     - No separate function for source scrambling, make it inline
     - Align the last line of the macro TRANS_DDI_HDMI_SCRAMBLING_MASK
     - Do not add platform check while setting source scrambling
     - Use pipe_config instead of crtc->config to set sink scrambling
     - To readout scrambling status, Compare with SCRAMBLING_MASK
       not any of its bits
     - Remove platform check in intel_pipe_config_compare while checking
       scrambling status
    
    V8: Fixed mege conflict, Addressed review comments from Ander
     - Remove the desciption/comment about scrambling fom the caller, move
       it to the function
     - Move the IS_GLK check into scrambling function
     - Fix alignment
    
    V9: Fixed review comments from Ville, Ander
     - Pass the scrambling state variables as bool input to the sink_scrambling
       function and let the disable call be unconditional.
     - Fix alignments in function calls and debug messages.
     - Add kernel doc for function intel_hdmi_handle_sink_scrambling
    
    V10: Rebase
    Signed-off-by: default avatarShashank Sharma <shashank.sharma@intel.com>
    Reviewed-by: default avatarAnder Conselvan de Oliveira <conselvan2@gmail.com>
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1489404244-16608-6-git-send-email-shashank.sharma@intel.com
    15953637
i915_reg.h 345 KB