• Hans de Goede's avatar
    drm/i915/dsi: Fix pipe_bpp for handling for 6 bpc pixel-formats · ca0b04db
    Hans de Goede authored
    There are 3 problems with the dsi code's pipe_bpp handling for 6 bpc
    pixel-formats which this commit addresses:
    
    1) It assumes that the pipe_bpp is the same as the bpp going over the dsi
    lanes. This assumption is not valid for MIPI_DSI_FMT_RGB666, where pipe_bpp
    should be 18 so that we do proper dithering but we actually send 24 bpp
    over the dsi lanes (MIPI_DSI_FMT_RGB666_PACKED sends 18 bpp).
    
    This assumption is enforced by an assert in *_dsi_get_pclk(). This assert
    triggers on the initial hw-state readback on BYT/CHT devices which use
    MIPI_DSI_FMT_RGB666, such as the Prowise PT301 tablet. PIPECONF is set to
    6BPC / 18 bpp by the GOP, while mipi_dsi_pixel_format_to_bpp() returns 24.
    
    This commits switches the calculations in *_dsi_get_pclk() to use the bpp
    from mipi_dsi_pixel_format_to_bpp(intel_dsi->pixel_format) which
    returns the bpp going over the mipi lanes and drops the assert.
    
    2) On BXT bxt_dsi_get_pipe_config() wrongly overrides the pipe_bpp which
    i9xx_get_pipe_config() reads from PIPECONF with the return value from
    mipi_dsi_pixel_format_to_bpp(). This avoids the assert from 1. but is wrong
    since the pipe is actually running at the value configured in PIPECONF.
    
    This commit drops the override of pipe_bpp from bxt_dsi_get_pipe_config().
    
    3) The dsi encoder's compute_config() never assigns a value to pipe_bpp,
    unlike most other encoders. Falling back on compute_baseline_pipe_bpp()
    which always picks 24. 24 is only correct for MIPI_DSI_FMT_RGB88 for the
    others we should use 18 bpp so that we correctly do 6bpc color dithering.
    
    This commit adds code to intel_dsi_compute_config() to properly set
    pipe_bpp based on intel_dsi->pixel_format.
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181201113148.23184-1-hdegoede@redhat.com
    ca0b04db
intel_dsi.h 5.65 KB