OSDN Git Service

drm/i915/display: move register functions to display/
authorLucas De Marchi <lucas.demarchi@intel.com>
Sat, 13 Feb 2021 04:27:55 +0000 (20:27 -0800)
committerLucas De Marchi <lucas.demarchi@intel.com>
Sat, 13 Feb 2021 20:52:58 +0000 (12:52 -0800)
Now that all display-related functions are grouped in
i915_driver_register(), move them to display/ so we reduce the amount of
display calls from the rest of the driver.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20210213042756.953007-3-lucas.demarchi@intel.com
drivers/gpu/drm/i915/display/intel_display.c
drivers/gpu/drm/i915/display/intel_display.h
drivers/gpu/drm/i915/i915_drv.c

index 8df65d6..b777497 100644 (file)
@@ -24,6 +24,7 @@
  *     Eric Anholt <eric@anholt.net>
  */
 
+#include <acpi/video.h>
 #include <linux/i2c.h>
 #include <linux/input.h>
 #include <linux/intel-iommu.h>
@@ -43,6 +44,7 @@
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_rect.h>
 
+#include "display/intel_audio.h"
 #include "display/intel_crt.h"
 #include "display/intel_ddi.h"
 #include "display/intel_display_debugfs.h"
@@ -13954,6 +13956,57 @@ void intel_modeset_driver_remove_nogem(struct drm_i915_private *i915)
        intel_bios_driver_remove(i915);
 }
 
+void intel_display_driver_register(struct drm_i915_private *i915)
+{
+       if (!HAS_DISPLAY(i915))
+               return;
+
+       intel_display_debugfs_register(i915);
+
+       /* Must be done after probing outputs */
+       intel_opregion_register(i915);
+       acpi_video_register();
+
+       intel_audio_init(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->drm);
+
+       /*
+        * 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);
+}
+
 #if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
 
 struct intel_display_error_state {
index e3757ec..375ec2b 100644 (file)
@@ -654,6 +654,9 @@ u32 intel_plane_adjust_aligned_offset(int *x, int *y,
 unsigned int intel_tile_width_bytes(const struct drm_framebuffer *fb, int color_plane);
 unsigned int intel_tile_height(const struct drm_framebuffer *fb, int color_plane);
 
+void intel_display_driver_register(struct drm_i915_private *i915);
+void intel_display_driver_unregister(struct drm_i915_private *i915);
+
 /* modesetting */
 void intel_modeset_init_hw(struct drm_i915_private *i915);
 int intel_modeset_init_noirq(struct drm_i915_private *i915);
index 4e8caf8..fd93fed 100644 (file)
@@ -38,7 +38,6 @@
 #include <linux/slab.h>
 #include <linux/vga_switcheroo.h>
 #include <linux/vt.h>
-#include <acpi/video.h>
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_ioctl.h>
@@ -51,7 +50,6 @@
 #include "display/intel_bw.h"
 #include "display/intel_cdclk.h"
 #include "display/intel_csr.h"
-#include "display/intel_display_debugfs.h"
 #include "display/intel_display_types.h"
 #include "display/intel_dp.h"
 #include "display/intel_fbdev.h"
@@ -678,32 +676,7 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
 
        intel_gt_driver_register(&dev_priv->gt);
 
-       if (HAS_DISPLAY(dev_priv)) {
-               intel_display_debugfs_register(dev_priv);
-
-               /* Must be done after probing outputs */
-               intel_opregion_register(dev_priv);
-               acpi_video_register();
-
-               intel_audio_init(dev_priv);
-
-               /*
-                * 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(dev);
-
-               /*
-                * We need to coordinate the hotplugs with the asynchronous
-                * fbdev configuration, for which we use the
-                * fbdev->async_cookie.
-                */
-               drm_kms_helper_poll_init(dev);
-       }
+       intel_display_driver_register(dev_priv);
 
        intel_power_domains_enable(dev_priv);
        intel_runtime_pm_enable(&dev_priv->runtime_pm);
@@ -727,21 +700,7 @@ static void i915_driver_unregister(struct drm_i915_private *dev_priv)
        intel_runtime_pm_disable(&dev_priv->runtime_pm);
        intel_power_domains_disable(dev_priv);
 
-       if (HAS_DISPLAY(dev_priv)) {
-               intel_fbdev_unregister(dev_priv);
-               intel_audio_deinit(dev_priv);
-
-               /*
-                * 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(&dev_priv->drm);
-               drm_atomic_helper_shutdown(&dev_priv->drm);
-
-               acpi_video_unregister();
-               intel_opregion_unregister(dev_priv);
-       }
+       intel_display_driver_unregister(dev_priv);
 
        intel_gt_driver_unregister(&dev_priv->gt);