• Douglas Anderson's avatar
    drm/bridge: ti-sn65dsi86: If refclk, DP AUX can happen w/out pre-enable · b137406d
    Douglas Anderson authored
    Let's reorganize how we init and turn on the reference clock in the
    code to allow us to turn it on early (even before pre_enable()) so
    that we can read the EDID early. This is handy for eDP because:
    - We always assume that a panel is there.
    - Once we report that a panel is there we get asked to read the EDID.
    - Pre-enable isn't called until we know what pixel clock we want to
      use and we're ready to turn everything on. That's _after_ we get
      asked to read the EDID.
    
    NOTE: the above only works out OK if we "refclk" is provided. Though I
    don't have access to any hardware that uses ti-sn65dsi86 and _doesn't_
    provide a "refclk", I believe that we'll have trouble reading the EDID
    at bootup in that case. Specifically I believe that if there's no
    "refclk" we need the MIPI source clock to be active before we can
    successfully read the EDID. My evidence here is that, in testing, I
    couldn't read the EDID until I turned on the DPPLL in the bridge chip
    and that the DPPLL needs the input clock to be active.
    
    Since this is hard to support, let's punt trying to handle this case
    if there's no "refclk". In that case we'll enable comms in
    pre_enable() like we always did.
    
    I don't believe there are any users of the ti-sn65dsi86 bridge chip
    that _don't_ use "refclk". The bridge chip is _very_ inflexible in
    that mode. The only time I've seen that mode used was for some really
    early prototype hardware that was thrown in the e-waste bin years ago
    when we realized how inflexible it was.
    
    Even if someone is using the bridge chip without the "refclk" they're
    in no worse shape than they were before the (fairly recent) commit
    58074b08 ("drm/bridge: ti-sn65dsi86: Read EDID blob over DDC").
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
    Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210423095743.v5.13.Ie8cf556114953c6e7634564cc0d3ddbd103cb96c@changeid
    b137406d
ti-sn65dsi86.c 43.7 KB