• Archit Taneja's avatar
    drm/msm/dsi: Calculate link clock rates with updated dsi->lanes · d4cea38e
    Archit Taneja authored
    After the commit mentioned below, we start computing the byte and pixel
    clocks (dsi_calc_clk_rate) in the DSI bridge's mode_set() op. The
    calculation involves the number of DSI lanes being used by the
    downstream bridge/panel.
    
    If the downstream bridge/panel tries to change the number of DSI lanes
    (as done in the ADV7533 driver) in its mode_set() op, then our DSI
    host driver will not have the correct number of lanes when computing
    byte/pixel clocks.
    
    Fix this by delaying the clock rate calculation in the DSI bridge
    enable path. In particular, compute the clock rates in
    msm_dsi_host_get_phy_clk_req().
    
    This fixes the DSI host error interrupts seen when we try to switch
    between modes that require different number of lanes (4 to 3 lanes, or
    vice versa) on db410c. The error interrupts occur since the byte/pixel
    clock rates aren't according to what the DSI video mode timing engine
    expects.
    
    Fixes: b62aa70a ("drm/msm/dsi: Move PHY operations out of host")
    Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
    Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
    d4cea38e
dsi_host.c 57.6 KB