Message ID | 6b73f3e8cbb286c9323057445afbcd81606af82e.1681379167.git.jani.nikula@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/display: split out high level display entry points | expand |
Quoting Jani Nikula (2023-04-13 06:47:28) > The only way to truly clean up intel_display.[ch] is to move stuff out > of them until there's absolutely nothing left. > > Start moving the high level display driver entry points, i.e. functions > called from top level driver code only, to a new file, which we'll call > intel_display_driver.c. The intention is that there's no low-level > display code or details here. This is an in-between layer. > > Initially, move intel_display_driver_register() and > intel_display_driver_unregister() there. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com> > --- > drivers/gpu/drm/i915/Makefile | 1 + > drivers/gpu/drm/i915/display/intel_display.c | 53 -------------- > drivers/gpu/drm/i915/display/intel_display.h | 3 - > .../drm/i915/display/intel_display_driver.c | 71 +++++++++++++++++++ > .../drm/i915/display/intel_display_driver.h | 15 ++++ > drivers/gpu/drm/i915/i915_driver.c | 1 + > 6 files changed, 88 insertions(+), 56 deletions(-) > create mode 100644 drivers/gpu/drm/i915/display/intel_display_driver.c > create mode 100644 drivers/gpu/drm/i915/display/intel_display_driver.h > > diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile > index 97b0d4ae221a..91f0c214ef28 100644 > --- a/drivers/gpu/drm/i915/Makefile > +++ b/drivers/gpu/drm/i915/Makefile > @@ -237,6 +237,7 @@ i915-y += \ > display/intel_crtc_state_dump.o \ > display/intel_cursor.o \ > display/intel_display.o \ > + display/intel_display_driver.o \ > display/intel_display_power.o \ > display/intel_display_power_map.o \ > display/intel_display_power_well.o \ > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index 1c0149adcf49..7c66b9ce0db5 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -32,7 +32,6 @@ > #include <linux/slab.h> > #include <linux/string_helpers.h> > #include <linux/vga_switcheroo.h> > -#include <acpi/video.h> > > #include <drm/display/drm_dp_helper.h> > #include <drm/drm_atomic.h> > @@ -70,7 +69,6 @@ > #include "intel_crtc_state_dump.h" > #include "intel_ddi.h" > #include "intel_de.h" > -#include "intel_display_debugfs.h" > #include "intel_display_power.h" > #include "intel_display_types.h" > #include "intel_dmc.h" > @@ -8833,57 +8831,6 @@ bool intel_modeset_probe_defer(struct pci_dev *pdev) > return false; > } > > -void intel_display_driver_register(struct drm_i915_private *i915) > -{ > - if (!HAS_DISPLAY(i915)) > - return; > - > - /* Must be done after probing outputs */ > - intel_opregion_register(i915); > - intel_acpi_video_register(i915); > - > - intel_audio_init(i915); > - > - intel_display_debugfs_register(i915); > - > - /* > - * Some ports require correctly set-up hpd registers for > - * detection to work properly (leading to ghost connected > - * connector status), e.g. VGA on gm45. Hence we can only set > - * up the initial fbdev config after hpd irqs are fully > - * enabled. We do it last so that the async config cannot run > - * before the connectors are registered. > - */ > - intel_fbdev_initial_config_async(i915); > - > - /* > - * We need to coordinate the hotplugs with the asynchronous > - * fbdev configuration, for which we use the > - * fbdev->async_cookie. > - */ > - drm_kms_helper_poll_init(&i915->drm); > -} > - > -void intel_display_driver_unregister(struct drm_i915_private *i915) > -{ > - if (!HAS_DISPLAY(i915)) > - return; > - > - intel_fbdev_unregister(i915); > - intel_audio_deinit(i915); > - > - /* > - * After flushing the fbdev (incl. a late async config which > - * will have delayed queuing of a hotplug event), then flush > - * the hotplug events. > - */ > - drm_kms_helper_poll_fini(&i915->drm); > - drm_atomic_helper_shutdown(&i915->drm); > - > - acpi_video_unregister(); > - intel_opregion_unregister(i915); > -} > - > bool intel_scanout_needs_vtd_wa(struct drm_i915_private *i915) > { > return DISPLAY_VER(i915) >= 6 && i915_vtd_active(i915); > diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h > index 287159bdeb0d..e46732d26b7c 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.h > +++ b/drivers/gpu/drm/i915/display/intel_display.h > @@ -518,9 +518,6 @@ void intel_set_plane_visible(struct intel_crtc_state *crtc_state, > bool visible); > void intel_plane_fixup_bitmasks(struct intel_crtc_state *crtc_state); > > -void intel_display_driver_register(struct drm_i915_private *i915); > -void intel_display_driver_unregister(struct drm_i915_private *i915); > - > void intel_update_watermarks(struct drm_i915_private *i915); > > /* modesetting */ > diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c > new file mode 100644 > index 000000000000..d4a1893e9218 > --- /dev/null > +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c > @@ -0,0 +1,71 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright © 2022-2023 Intel Corporation > + * > + * High level display driver entry points. This is a layer between top level > + * driver code and low level display functionality; no low level display code or > + * details here. > + */ > + > +#include <acpi/video.h> > +#include <drm/drm_atomic_helper.h> > +#include <drm/drm_probe_helper.h> > + > +#include "i915_drv.h" > +#include "intel_acpi.h" > +#include "intel_audio.h" > +#include "intel_display_debugfs.h" > +#include "intel_display_driver.h" > +#include "intel_fbdev.h" > +#include "intel_opregion.h" > + > +void intel_display_driver_register(struct drm_i915_private *i915) > +{ > + if (!HAS_DISPLAY(i915)) > + return; > + > + /* Must be done after probing outputs */ > + intel_opregion_register(i915); > + intel_acpi_video_register(i915); > + > + intel_audio_init(i915); > + > + intel_display_debugfs_register(i915); > + > + /* > + * Some ports require correctly set-up hpd registers for > + * detection to work properly (leading to ghost connected > + * connector status), e.g. VGA on gm45. Hence we can only set > + * up the initial fbdev config after hpd irqs are fully > + * enabled. We do it last so that the async config cannot run > + * before the connectors are registered. > + */ > + intel_fbdev_initial_config_async(i915); > + > + /* > + * We need to coordinate the hotplugs with the asynchronous > + * fbdev configuration, for which we use the > + * fbdev->async_cookie. > + */ > + drm_kms_helper_poll_init(&i915->drm); > +} > + > +void intel_display_driver_unregister(struct drm_i915_private *i915) > +{ > + if (!HAS_DISPLAY(i915)) > + return; > + > + intel_fbdev_unregister(i915); > + intel_audio_deinit(i915); > + > + /* > + * After flushing the fbdev (incl. a late async config which > + * will have delayed queuing of a hotplug event), then flush > + * the hotplug events. > + */ > + drm_kms_helper_poll_fini(&i915->drm); > + drm_atomic_helper_shutdown(&i915->drm); > + > + acpi_video_unregister(); > + intel_opregion_unregister(i915); > +} > diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.h b/drivers/gpu/drm/i915/display/intel_display_driver.h > new file mode 100644 > index 000000000000..4f6deef5a23f > --- /dev/null > +++ b/drivers/gpu/drm/i915/display/intel_display_driver.h > @@ -0,0 +1,15 @@ > +/* SPDX-License-Identifier: MIT */ > +/* > + * Copyright © 2022-2023 Intel Corporation > + */ > + > +#ifndef __INTEL_DISPLAY_DRIVER_H__ > +#define __INTEL_DISPLAY_DRIVER_H__ > + > +struct drm_i915_private; > + > +void intel_display_driver_register(struct drm_i915_private *i915); > +void intel_display_driver_unregister(struct drm_i915_private *i915); > + > +#endif /* __INTEL_DISPLAY_DRIVER_H__ */ > + > diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c > index 93fdc40d724f..5ccb24498cbf 100644 > --- a/drivers/gpu/drm/i915/i915_driver.c > +++ b/drivers/gpu/drm/i915/i915_driver.c > @@ -48,6 +48,7 @@ > #include "display/intel_acpi.h" > #include "display/intel_bw.h" > #include "display/intel_cdclk.h" > +#include "display/intel_display_driver.h" > #include "display/intel_display_types.h" > #include "display/intel_dmc.h" > #include "display/intel_dp.h" > -- > 2.39.2 >
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index 97b0d4ae221a..91f0c214ef28 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -237,6 +237,7 @@ i915-y += \ display/intel_crtc_state_dump.o \ display/intel_cursor.o \ display/intel_display.o \ + display/intel_display_driver.o \ display/intel_display_power.o \ display/intel_display_power_map.o \ display/intel_display_power_well.o \ diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 1c0149adcf49..7c66b9ce0db5 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -32,7 +32,6 @@ #include <linux/slab.h> #include <linux/string_helpers.h> #include <linux/vga_switcheroo.h> -#include <acpi/video.h> #include <drm/display/drm_dp_helper.h> #include <drm/drm_atomic.h> @@ -70,7 +69,6 @@ #include "intel_crtc_state_dump.h" #include "intel_ddi.h" #include "intel_de.h" -#include "intel_display_debugfs.h" #include "intel_display_power.h" #include "intel_display_types.h" #include "intel_dmc.h" @@ -8833,57 +8831,6 @@ bool intel_modeset_probe_defer(struct pci_dev *pdev) return false; } -void intel_display_driver_register(struct drm_i915_private *i915) -{ - if (!HAS_DISPLAY(i915)) - return; - - /* Must be done after probing outputs */ - intel_opregion_register(i915); - intel_acpi_video_register(i915); - - intel_audio_init(i915); - - intel_display_debugfs_register(i915); - - /* - * Some ports require correctly set-up hpd registers for - * detection to work properly (leading to ghost connected - * connector status), e.g. VGA on gm45. Hence we can only set - * up the initial fbdev config after hpd irqs are fully - * enabled. We do it last so that the async config cannot run - * before the connectors are registered. - */ - intel_fbdev_initial_config_async(i915); - - /* - * We need to coordinate the hotplugs with the asynchronous - * fbdev configuration, for which we use the - * fbdev->async_cookie. - */ - drm_kms_helper_poll_init(&i915->drm); -} - -void intel_display_driver_unregister(struct drm_i915_private *i915) -{ - if (!HAS_DISPLAY(i915)) - return; - - intel_fbdev_unregister(i915); - intel_audio_deinit(i915); - - /* - * After flushing the fbdev (incl. a late async config which - * will have delayed queuing of a hotplug event), then flush - * the hotplug events. - */ - drm_kms_helper_poll_fini(&i915->drm); - drm_atomic_helper_shutdown(&i915->drm); - - acpi_video_unregister(); - intel_opregion_unregister(i915); -} - bool intel_scanout_needs_vtd_wa(struct drm_i915_private *i915) { return DISPLAY_VER(i915) >= 6 && i915_vtd_active(i915); diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index 287159bdeb0d..e46732d26b7c 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -518,9 +518,6 @@ void intel_set_plane_visible(struct intel_crtc_state *crtc_state, bool visible); void intel_plane_fixup_bitmasks(struct intel_crtc_state *crtc_state); -void intel_display_driver_register(struct drm_i915_private *i915); -void intel_display_driver_unregister(struct drm_i915_private *i915); - void intel_update_watermarks(struct drm_i915_private *i915); /* modesetting */ diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c new file mode 100644 index 000000000000..d4a1893e9218 --- /dev/null +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2022-2023 Intel Corporation + * + * High level display driver entry points. This is a layer between top level + * driver code and low level display functionality; no low level display code or + * details here. + */ + +#include <acpi/video.h> +#include <drm/drm_atomic_helper.h> +#include <drm/drm_probe_helper.h> + +#include "i915_drv.h" +#include "intel_acpi.h" +#include "intel_audio.h" +#include "intel_display_debugfs.h" +#include "intel_display_driver.h" +#include "intel_fbdev.h" +#include "intel_opregion.h" + +void intel_display_driver_register(struct drm_i915_private *i915) +{ + if (!HAS_DISPLAY(i915)) + return; + + /* Must be done after probing outputs */ + intel_opregion_register(i915); + intel_acpi_video_register(i915); + + intel_audio_init(i915); + + intel_display_debugfs_register(i915); + + /* + * Some ports require correctly set-up hpd registers for + * detection to work properly (leading to ghost connected + * connector status), e.g. VGA on gm45. Hence we can only set + * up the initial fbdev config after hpd irqs are fully + * enabled. We do it last so that the async config cannot run + * before the connectors are registered. + */ + intel_fbdev_initial_config_async(i915); + + /* + * We need to coordinate the hotplugs with the asynchronous + * fbdev configuration, for which we use the + * fbdev->async_cookie. + */ + drm_kms_helper_poll_init(&i915->drm); +} + +void intel_display_driver_unregister(struct drm_i915_private *i915) +{ + if (!HAS_DISPLAY(i915)) + return; + + intel_fbdev_unregister(i915); + intel_audio_deinit(i915); + + /* + * After flushing the fbdev (incl. a late async config which + * will have delayed queuing of a hotplug event), then flush + * the hotplug events. + */ + drm_kms_helper_poll_fini(&i915->drm); + drm_atomic_helper_shutdown(&i915->drm); + + acpi_video_unregister(); + intel_opregion_unregister(i915); +} diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.h b/drivers/gpu/drm/i915/display/intel_display_driver.h new file mode 100644 index 000000000000..4f6deef5a23f --- /dev/null +++ b/drivers/gpu/drm/i915/display/intel_display_driver.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2022-2023 Intel Corporation + */ + +#ifndef __INTEL_DISPLAY_DRIVER_H__ +#define __INTEL_DISPLAY_DRIVER_H__ + +struct drm_i915_private; + +void intel_display_driver_register(struct drm_i915_private *i915); +void intel_display_driver_unregister(struct drm_i915_private *i915); + +#endif /* __INTEL_DISPLAY_DRIVER_H__ */ + diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c index 93fdc40d724f..5ccb24498cbf 100644 --- a/drivers/gpu/drm/i915/i915_driver.c +++ b/drivers/gpu/drm/i915/i915_driver.c @@ -48,6 +48,7 @@ #include "display/intel_acpi.h" #include "display/intel_bw.h" #include "display/intel_cdclk.h" +#include "display/intel_display_driver.h" #include "display/intel_display_types.h" #include "display/intel_dmc.h" #include "display/intel_dp.h"
The only way to truly clean up intel_display.[ch] is to move stuff out of them until there's absolutely nothing left. Start moving the high level display driver entry points, i.e. functions called from top level driver code only, to a new file, which we'll call intel_display_driver.c. The intention is that there's no low-level display code or details here. This is an in-between layer. Initially, move intel_display_driver_register() and intel_display_driver_unregister() there. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/display/intel_display.c | 53 -------------- drivers/gpu/drm/i915/display/intel_display.h | 3 - .../drm/i915/display/intel_display_driver.c | 71 +++++++++++++++++++ .../drm/i915/display/intel_display_driver.h | 15 ++++ drivers/gpu/drm/i915/i915_driver.c | 1 + 6 files changed, 88 insertions(+), 56 deletions(-) create mode 100644 drivers/gpu/drm/i915/display/intel_display_driver.c create mode 100644 drivers/gpu/drm/i915/display/intel_display_driver.h