• Daniel Vetter's avatar
    drm/i915: add ->display.modeset_global_resources callback · 47fab737
    Daniel Vetter authored
    After all relevant pipes are disabled and after we've updated all the
    state with the staged state, but before we call the per-crtc
    ->mode_set functions there's a very natural point to set up any
    shared/global resources like
    - shared plls (obviously only the setup, the enabling needs to be
      separately handling with a separate refcount)
    - global watermark state like the DSPARB on gmch platforms
    - workaround bits that depend upon the exact global output
      configuration
    - enabling the right set of refclocks
    - enabling/disabling manual power wells.
    
    Now for a lot of these things we can't move them into this function
    yet, most often because we only compute the required information in
    the per-crtc ->mode_set callback. Which is too late. But due to a
    bunch of reasons (check-only atomic modeset, fastboot&hw state checks,
    ...) we need to separate the computation of that state from the actual
    hw frobbery anyway. So we can move things into this new callback step-
    by-step.
    
    Others can't be moved here (or implemented at all) because our code
    lacks the smarts to properly update them. E.g. the DSPARB can only be
    updated when all pipes are disabled, so if we decide to change it's
    value, we need to disable _all_ pipes. The infrastructure for that is
    already in place (with the various pipe masks that driver the modeset
    logic). But again we need to move a few things out of ->mode_set
    first before we can even implement the correct decision making.
    
    In any case, we need to start somewhere, so let's start with the
    callback: Some small follow-up patches will make immediate good use of
    it.
    Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    47fab737
intel_display.c 241 KB