drm/i915: remove the extra modeset init layer
authorJani Nikula <jani.nikula@intel.com>
Wed, 2 Sep 2020 14:30:23 +0000 (17:30 +0300)
committerJani Nikula <jani.nikula@intel.com>
Fri, 4 Sep 2020 10:41:43 +0000 (13:41 +0300)
Streamline the modeset init by removing the extra init layer.

No functional changes, which means the cleanup path looks hideous.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/62c32c35683b843ecdc2eca2bd2d3e62cb705e96.1599056955.git.jani.nikula@intel.com
drivers/gpu/drm/i915/i915_drv.c

index 452c86a..2746f3d 100644 (file)
@@ -215,46 +215,6 @@ intel_teardown_mchbar(struct drm_i915_private *dev_priv)
                release_resource(&dev_priv->mch_res);
 }
 
-/* part #1: call before irq install */
-static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
-{
-       return intel_modeset_init_noirq(i915);
-}
-
-/* part #2: call after irq install */
-static int i915_driver_modeset_probe(struct drm_i915_private *i915)
-{
-       int ret;
-
-       /* Important: The output setup functions called by modeset_init need
-        * working irqs for e.g. gmbus and dp aux transfers. */
-       ret = intel_modeset_init_nogem(i915);
-       if (ret)
-               goto out;
-
-       ret = i915_gem_init(i915);
-       if (ret)
-               goto cleanup_modeset;
-
-       ret = intel_modeset_init(i915);
-       if (ret)
-               goto cleanup_gem;
-
-       return 0;
-
-cleanup_gem:
-       i915_gem_suspend(i915);
-       i915_gem_driver_remove(i915);
-       i915_gem_driver_release(i915);
-cleanup_modeset:
-       /* FIXME */
-       intel_modeset_driver_remove(i915);
-       intel_irq_uninstall(i915);
-       intel_modeset_driver_remove_noirq(i915);
-out:
-       return ret;
-}
-
 static void intel_init_dpio(struct drm_i915_private *dev_priv)
 {
        /*
@@ -923,7 +883,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (ret < 0)
                goto out_cleanup_mmio;
 
-       ret = i915_driver_modeset_probe_noirq(i915);
+       ret = intel_modeset_init_noirq(i915);
        if (ret < 0)
                goto out_cleanup_hw;
 
@@ -931,10 +891,18 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (ret)
                goto out_cleanup_modeset;
 
-       ret = i915_driver_modeset_probe(i915);
-       if (ret < 0)
+       ret = intel_modeset_init_nogem(i915);
+       if (ret)
                goto out_cleanup_irq;
 
+       ret = i915_gem_init(i915);
+       if (ret)
+               goto out_cleanup_modeset2;
+
+       ret = intel_modeset_init(i915);
+       if (ret)
+               goto out_cleanup_gem;
+
        i915_driver_register(i915);
 
        enable_rpm_wakeref_asserts(&i915->runtime_pm);
@@ -945,6 +913,16 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        return 0;
 
+out_cleanup_gem:
+       i915_gem_suspend(i915);
+       i915_gem_driver_remove(i915);
+       i915_gem_driver_release(i915);
+out_cleanup_modeset2:
+       /* FIXME clean up the error path */
+       intel_modeset_driver_remove(i915);
+       intel_irq_uninstall(i915);
+       intel_modeset_driver_remove_noirq(i915);
+       goto out_cleanup_modeset;
 out_cleanup_irq:
        intel_irq_uninstall(i915);
 out_cleanup_modeset: