On Tue, Feb 04, 2020 at 03:42:26PM +0200, Jani Nikula wrote:
> Turn current intel_modeset_init() to a pre-gem init function, and add a
> new intel_modeset_init() function and move all post-gem modeset init
> there, in the correct layer. Again, apart from possible failure paths,
> no functional changes.
> 
> Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nik...@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 26 ++++++++++++++++++--
>  drivers/gpu/drm/i915/display/intel_display.h |  1 +
>  drivers/gpu/drm/i915/i915_drv.c              | 14 ++---------
>  3 files changed, 27 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 2cac6d61dba2..39c12a608103 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -17884,8 +17884,8 @@ int intel_modeset_init_noirq(struct drm_i915_private 
> *i915)
>       return 0;
>  }
>  
> -/* part #2: call after irq install */
> -int intel_modeset_init(struct drm_i915_private *i915)
> +/* part #2: call after irq install, but before gem init */
> +int intel_modeset_init_nogem(struct drm_i915_private *i915)
>  {
>       struct drm_device *dev = &i915->drm;
>       enum pipe pipe;
> @@ -17974,6 +17974,28 @@ int intel_modeset_init(struct drm_i915_private *i915)
>       return 0;
>  }
>  
> +/* part #3: call after gem init */
> +int intel_modeset_init(struct drm_i915_private *i915)
> +{
> +     int ret;
> +
> +     intel_overlay_setup(i915);
> +
> +     if (!HAS_DISPLAY(i915) || !INTEL_DISPLAY_ENABLED(i915))
> +             return 0;
> +
> +     ret = intel_fbdev_init(&i915->drm);
> +     if (ret)
> +             return ret;
> +
> +     /* Only enable hotplug handling once the fbdev is fully set up. */
> +     intel_hpd_init(i915);
> +
> +     intel_init_ipc(i915);

BTW that init_ipc() looks totally misplaced. Should probably be part of
the regular wm init stuff. But that's not for this patch to fix.

Reviewed-by: Ville Syrjälä <ville.syrj...@linux.intel.com>

> +
> +     return 0;
> +}
> +
>  void i830_enable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe)
>  {
>       struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h 
> b/drivers/gpu/drm/i915/display/intel_display.h
> index 8f994244ccc7..62ee9b9d212c 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -615,6 +615,7 @@ intel_format_info_is_yuv_semiplanar(const struct 
> drm_format_info *info,
>  /* modesetting */
>  void intel_modeset_init_hw(struct drm_i915_private *i915);
>  int intel_modeset_init_noirq(struct drm_i915_private *i915);
> +int intel_modeset_init_nogem(struct drm_i915_private *i915);
>  int intel_modeset_init(struct drm_i915_private *i915);
>  void intel_modeset_driver_remove(struct drm_i915_private *i915);
>  void intel_modeset_driver_remove_noirq(struct drm_i915_private *i915);
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 905277490024..21f07709dc9e 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -316,7 +316,7 @@ static int i915_driver_modeset_probe(struct 
> drm_i915_private *i915)
>  
>       /* Important: The output setup functions called by modeset_init need
>        * working irqs for e.g. gmbus and dp aux transfers. */
> -     ret = intel_modeset_init(i915);
> +     ret = intel_modeset_init_nogem(i915);
>       if (ret)
>               goto out;
>  
> @@ -324,20 +324,10 @@ static int i915_driver_modeset_probe(struct 
> drm_i915_private *i915)
>       if (ret)
>               goto cleanup_modeset;
>  
> -     intel_overlay_setup(i915);
> -
> -     if (!HAS_DISPLAY(i915) || !INTEL_DISPLAY_ENABLED(i915))
> -             return 0;
> -
> -     ret = intel_fbdev_init(&i915->drm);
> +     ret = intel_modeset_init(i915);
>       if (ret)
>               goto cleanup_gem;
>  
> -     /* Only enable hotplug handling once the fbdev is fully set up. */
> -     intel_hpd_init(i915);
> -
> -     intel_init_ipc(i915);
> -
>       return 0;
>  
>  cleanup_gem:
> -- 
> 2.20.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to