title: s/dislay/display/ On Thu, Nov 05, 2026 at 12:18:34AM GMT, Ville Syrjala wrote: > From: Ville Syrjälä <[email protected]> > > Add a place for upcoming mmio stuff in the form of > a display->mmio struct and intel_de_init() to fill it up. > For now we'll just stick the uncore pointer there, but > it'll get replaced by something else eventually. > > I originally wanted to call intel_de_init() just after > intel_display_device_probe(), but i915 calls that before > the uncore/mmio setup has been done. Right now that wouldn't > matter since the &i915->uncore is valid nonetheless. But > eventually I think we'll just want to get the 'void __iomem *' > from the core driver and that of course need to be mapped > before intel_de_init() is called. So put the init call into > __intel_display_device_info_runtime_init() which should be the > first place where we call any intel_de_*() stuff > > Signed-off-by: Ville Syrjälä <[email protected]>
Reviewed-by: Michał Grzelak <[email protected]> BR, Michał > --- > drivers/gpu/drm/i915/display/intel_de.c | 5 +++++ > drivers/gpu/drm/i915/display/intel_de.h | 4 +++- > drivers/gpu/drm/i915/display/intel_display_core.h | 5 +++++ > drivers/gpu/drm/i915/display/intel_display_device.c | 7 +++++++ > 4 files changed, 20 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_de.c > b/drivers/gpu/drm/i915/display/intel_de.c > index a7417905192d..6b3d06147e58 100644 > --- a/drivers/gpu/drm/i915/display/intel_de.c > +++ b/drivers/gpu/drm/i915/display/intel_de.c > @@ -162,3 +162,8 @@ u16 intel_de_read16(struct intel_display *display, > intel_reg_t reg) > > return intel_uncore_read16(__to_uncore(display), reg); > } > + > +void intel_de_init(struct intel_display *display) > +{ > + display->mmio.uncore = to_intel_uncore(display->drm); > +} > diff --git a/drivers/gpu/drm/i915/display/intel_de.h > b/drivers/gpu/drm/i915/display/intel_de.h > index d0a239a36980..f1135ee5071b 100644 > --- a/drivers/gpu/drm/i915/display/intel_de.h > +++ b/drivers/gpu/drm/i915/display/intel_de.h > @@ -14,9 +14,11 @@ > > static inline struct intel_uncore *__to_uncore(struct intel_display *display) > { > - return to_intel_uncore(display->drm); > + return display->mmio.uncore; > } > > +void intel_de_init(struct intel_display *display); > + > u8 intel_de_read8(struct intel_display *display, intel_reg_t reg); > void intel_de_write8(struct intel_display *display, intel_reg_t reg, u8 val); > u16 intel_de_read16(struct intel_display *display, intel_reg_t reg); > diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h > b/drivers/gpu/drm/i915/display/intel_display_core.h > index c80b4a2f74f9..35409f9abb2f 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_core.h > +++ b/drivers/gpu/drm/i915/display/intel_display_core.h > @@ -51,6 +51,7 @@ struct intel_hotplug_irq_funcs; > struct intel_initial_plane_config; > struct intel_opregion; > struct intel_overlay; > +struct intel_uncore; > struct task_struct; > > /* Amount of SAGV/QGV points, BSpec precisely defines this */ > @@ -530,6 +531,10 @@ struct intel_display { > const struct intel_modeset_funcs *funcs; > } modeset; > > + struct { > + struct intel_uncore *uncore; > + } mmio; > + > struct { > /* protected by wm.wm_mutex */ > u16 linetime[I915_MAX_PIPES]; > diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c > b/drivers/gpu/drm/i915/display/intel_display_device.c > index c74256359c25..f1bd1252a960 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_device.c > +++ b/drivers/gpu/drm/i915/display/intel_display_device.c > @@ -1798,6 +1798,13 @@ static void > __intel_display_device_info_runtime_init(struct intel_display *displ > struct intel_display_runtime_info *display_runtime = > DISPLAY_RUNTIME_INFO(display); > enum pipe pipe; > > + /* > + * TODO end of intel_display_device_probe() would be a more > + * logical place, but at the moment i915 calls that super > + * early when things aren't fully set up yet. > + */ > + intel_de_init(display); > + > BUILD_BUG_ON(BITS_PER_TYPE(display_runtime->pipe_mask) < > I915_MAX_PIPES); > BUILD_BUG_ON(BITS_PER_TYPE(display_runtime->cpu_transcoder_mask) < > I915_MAX_TRANSCODERS); > BUILD_BUG_ON(BITS_PER_TYPE(display_runtime->port_mask) < > I915_MAX_PORTS); > -- > 2.56.0 >
