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.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > 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.syrjala@xxxxxxxxxxxxxxx> > + > + 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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx