• Jani Nikula's avatar
    drm/i915/edp: wait power off delay at driver remove to optimize probe · 36d35716
    Jani Nikula authored
    Panel power off delay is the time the panel power needs to remain off
    after being switched off, before it can be switched on again.
    
    For the purpose of respecting panel power off delay at driver probe,
    assuming the panel was last switched off at driver probe is overly
    pessimistic. If the panel was never on, we'd end up waiting for no
    reason.
    
    We don't know what has happened before kernel boot, but we can make some
    assumptions:
    
    - The panel may have been switched off right before kernel boot by some
      pre-os environment.
    
    - After kernel boot, the panel may only be switched off by i915.
    
    - At i915 driver probe, only a previously loaded and removed i915 may
      have switched the panel power off.
    
    With these assumptions, we can initialize the last power off time to
    kernel boot time, if we also ensure i915 driver remove waits for the
    panel power off delay after switching panel power off.
    
    This shaves off the time it takes from kernel boot to i915 probe from
    the first panel enable, if (and only if) the panel was not already
    enabled at boot.
    
    The encoder destroy hook is pretty much the last place where we can
    wait, right after we've ensured the panel power has been switched off,
    and before the whole encoder is destroyed.
    
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/7417
    Cc: Lee Shawn C <shawn.c.lee@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Tested-by: default avatarLee Shawn C <shawn.c.lee@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20221116150657.1347504-1-jani.nikula@intel.com
    36d35716
intel_dp.c 159 KB