drm/aperture: Convert drivers to aperture interfaces
authorThomas Zimmermann <tzimmermann@suse.de>
Mon, 12 Apr 2021 13:10:42 +0000 (15:10 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Wed, 14 Apr 2021 07:00:04 +0000 (09:00 +0200)
Mass-convert all drivers from FB helpers to aperture interfaces. No
functional changes besides checking for returned errno codes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210412131043.5787-3-tzimmermann@suse.de
19 files changed:
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
drivers/gpu/drm/armada/armada_drv.c
drivers/gpu/drm/ast/ast_drv.c
drivers/gpu/drm/bochs/bochs_drv.c
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/meson/meson_drv.c
drivers/gpu/drm/mgag200/mgag200_drv.c
drivers/gpu/drm/msm/msm_fbdev.c
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/qxl/qxl_drv.c
drivers/gpu/drm/radeon/radeon_drv.c
drivers/gpu/drm/sun4i/sun4i_drv.c
drivers/gpu/drm/tegra/drm.c
drivers/gpu/drm/tiny/cirrus.c
drivers/gpu/drm/vboxvideo/vbox_drv.c
drivers/gpu/drm/vc4/vc4_drv.c
drivers/gpu/drm/virtio/virtgpu_drv.c
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c

index b26e2fd..671ec10 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include <drm/amdgpu_drm.h>
+#include <drm/drm_aperture.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_gem.h>
 #include <drm/drm_vblank.h>
@@ -1196,7 +1197,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
 #endif
 
        /* Get rid of things like offb */
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "amdgpudrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "amdgpudrmfb");
        if (ret)
                return ret;
 
index 44fe9f9..dab0a1f 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/of_graph.h>
 #include <linux/platform_device.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_ioctl.h>
@@ -94,9 +95,7 @@ static int armada_drm_bind(struct device *dev)
        }
 
        /* Remove early framebuffers */
-       ret = drm_fb_helper_remove_conflicting_framebuffers(NULL,
-                                                           "armada-drm-fb",
-                                                           false);
+       ret = drm_aperture_remove_framebuffers(false, "armada-drm-fb");
        if (ret) {
                dev_err(dev, "[" DRM_NAME ":%s] can't kick out simple-fb: %d\n",
                        __func__, ret);
index 01837be..5aa452b 100644 (file)
 #include <linux/module.h>
 #include <linux/pci.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
-#include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_vram_helper.h>
 #include <drm/drm_probe_helper.h>
 
@@ -89,23 +89,18 @@ static const struct pci_device_id ast_pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, ast_pciidlist);
 
-static void ast_kick_out_firmware_fb(struct pci_dev *pdev)
+static int ast_remove_conflicting_framebuffers(struct pci_dev *pdev)
 {
-       struct apertures_struct *ap;
        bool primary = false;
+       resource_size_t base, size;
 
-       ap = alloc_apertures(1);
-       if (!ap)
-               return;
-
-       ap->ranges[0].base = pci_resource_start(pdev, 0);
-       ap->ranges[0].size = pci_resource_len(pdev, 0);
-
+       base = pci_resource_start(pdev, 0);
+       size = pci_resource_len(pdev, 0);
 #ifdef CONFIG_X86
        primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW;
 #endif
-       drm_fb_helper_remove_conflicting_framebuffers(ap, "astdrmfb", primary);
-       kfree(ap);
+
+       return drm_aperture_remove_conflicting_framebuffers(base, size, primary, "astdrmfb");
 }
 
 static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
@@ -114,7 +109,9 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct drm_device *dev;
        int ret;
 
-       ast_kick_out_firmware_fb(pdev);
+       ret = ast_remove_conflicting_framebuffers(pdev);
+       if (ret)
+               return ret;
 
        ret = pcim_enable_device(pdev);
        if (ret)
index b469624..c828cad 100644 (file)
@@ -6,6 +6,7 @@
 #include <linux/pci.h>
 
 #include <drm/drm_drv.h>
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_managed.h>
 
@@ -109,7 +110,7 @@ static int bochs_pci_probe(struct pci_dev *pdev,
                return -ENOMEM;
        }
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "bochsdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "bochsdrmfb");
        if (ret)
                return ret;
 
index 89edc79..f4bc538 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/pci.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_gem_framebuffer_helper.h>
@@ -313,8 +314,7 @@ static int hibmc_pci_probe(struct pci_dev *pdev,
        struct drm_device *dev;
        int ret;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev,
-                                                               "hibmcdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "hibmcdrmfb");
        if (ret)
                return ret;
 
index 8e9cb44..e1ae7b8 100644 (file)
@@ -40,6 +40,7 @@
 #include <linux/vt.h>
 #include <acpi/video.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_ioctl.h>
 #include <drm/drm_irq.h>
@@ -557,7 +558,7 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
        if (ret)
                goto err_perf;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "inteldrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "inteldrmfb");
        if (ret)
                goto err_ggtt;
 
index 453d8b4..66de3f4 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/platform_device.h>
 #include <linux/soc/amlogic/meson-canvas.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
@@ -156,23 +157,6 @@ static void meson_vpu_init(struct meson_drm *priv)
        writel_relaxed(value, priv->io_base + _REG(VPU_WRARB_MODE_L2C1));
 }
 
-static void meson_remove_framebuffers(void)
-{
-       struct apertures_struct *ap;
-
-       ap = alloc_apertures(1);
-       if (!ap)
-               return;
-
-       /* The framebuffer can be located anywhere in RAM */
-       ap->ranges[0].base = 0;
-       ap->ranges[0].size = ~0;
-
-       drm_fb_helper_remove_conflicting_framebuffers(ap, "meson-drm-fb",
-                                                     false);
-       kfree(ap);
-}
-
 struct meson_drm_soc_attr {
        struct meson_drm_soc_limits limits;
        const struct soc_device_attribute *attrs;
@@ -297,8 +281,13 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
                }
        }
 
-       /* Remove early framebuffers (ie. simplefb) */
-       meson_remove_framebuffers();
+       /*
+        * Remove early framebuffers (ie. simplefb). The framebuffer can be
+        * located anywhere in RAM
+        */
+       ret = drm_aperture_remove_framebuffers(false, "meson-drm-fb");
+       if (ret)
+               goto free_drm;
 
        ret = drmm_mode_config_init(drm);
        if (ret)
index 4e4c105..a701d95 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/pci.h>
 #include <linux/vmalloc.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_file.h>
 #include <drm/drm_ioctl.h>
@@ -341,7 +342,9 @@ mgag200_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct drm_device *dev;
        int ret;
 
-       drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "mgag200drmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "mgag200drmfb");
+       if (ret)
+               return ret;
 
        ret = pcim_enable_device(pdev);
        if (ret)
index 678dba1..2274040 100644 (file)
@@ -4,6 +4,7 @@
  * Author: Rob Clark <robdclark@gmail.com>
  */
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
@@ -168,7 +169,9 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev)
        }
 
        /* the fw fb could be anywhere in memory */
-       drm_fb_helper_remove_conflicting_framebuffers(NULL, "msm", false);
+       ret = drm_aperture_remove_framebuffers(false, "msm");
+       if (ret)
+               goto fini;
 
        ret = drm_fb_helper_initial_config(helper, 32);
        if (ret)
index 9766218..3204fc0 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/vga_switcheroo.h>
 #include <linux/mmu_notifier.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_gem_ttm_helper.h>
 #include <drm/drm_ioctl.h>
@@ -737,7 +738,7 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
        nvkm_device_del(&device);
 
        /* Remove conflicting drivers (vesafb, efifb etc). */
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "nouveaufb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "nouveaufb");
        if (ret)
                return ret;
 
index db92eec..bba0fc3 100644 (file)
  */
 
 #include "qxl_drv.h"
+
 #include <linux/console.h>
 #include <linux/module.h>
 #include <linux/pci.h>
+#include <linux/vgaarb.h>
 
 #include <drm/drm.h>
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_file.h>
@@ -93,7 +96,7 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (ret)
                return ret;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "qxl");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "qxl");
        if (ret)
                goto disable_pci;
 
index efeb115..8885e84 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/mmu_notifier.h>
 #include <linux/pci.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_agpsupport.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
@@ -330,7 +331,7 @@ static int radeon_pci_probe(struct pci_dev *pdev,
                return -EPROBE_DEFER;
 
        /* Get rid of things like offb */
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "radeondrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "radeondrmfb");
        if (ret)
                return ret;
 
index 9150293..af335f5 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/of_reserved_mem.h>
 #include <linux/platform_device.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_cma_helper.h>
@@ -99,7 +100,9 @@ static int sun4i_drv_bind(struct device *dev)
        drm->irq_enabled = true;
 
        /* Remove early framebuffers (ie. simplefb) */
-       drm_fb_helper_remove_conflicting_framebuffers(NULL, "sun4i-drm-fb", false);
+       ret = drm_aperture_remove_framebuffers(false, "sun4i-drm-fb");
+       if (ret)
+               goto cleanup_mode_config;
 
        sun4i_framebuffer_init(drm);
 
index 90709c3..e32c0dc 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_debugfs.h>
@@ -1198,8 +1199,7 @@ static int host1x_drm_probe(struct host1x_device *dev)
 
        drm_mode_config_reset(drm);
 
-       err = drm_fb_helper_remove_conflicting_framebuffers(NULL, "tegradrmfb",
-                                                           false);
+       err = drm_aperture_remove_framebuffers(false, "tegradrmfb");
        if (err < 0)
                goto hub;
 
index ad922c3..e3afb45 100644 (file)
@@ -24,6 +24,7 @@
 #include <video/cirrus.h>
 #include <video/vga.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_atomic_state_helper.h>
 #include <drm/drm_connector.h>
@@ -549,7 +550,7 @@ static int cirrus_pci_probe(struct pci_dev *pdev,
        struct cirrus_device *cirrus;
        int ret;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "cirrusdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "cirrusdrmfb");
        if (ret)
                return ret;
 
index e534896..6d4b32d 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/pci.h>
 #include <linux/vt_kern.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
@@ -42,7 +43,7 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (!vbox_check_supported(VBE_DISPI_ID_HGSMI))
                return -ENODEV;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "vboxvideodrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "vboxvideodrmfb");
        if (ret)
                return ret;
 
index 556ad0f..68ac0e7 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_cma_helper.h>
@@ -266,7 +267,9 @@ static int vc4_drm_bind(struct device *dev)
        if (ret)
                goto unbind_all;
 
-       drm_fb_helper_remove_conflicting_framebuffers(NULL, "vc4drmfb", false);
+       ret = drm_aperture_remove_framebuffers(false, "vc4drmfb");
+       if (ret)
+               goto unbind_all;
 
        ret = vc4_kms_load(drm);
        if (ret < 0)
index a21dc3a..33bf5f5 100644 (file)
@@ -31,6 +31,7 @@
 #include <linux/pci.h>
 
 #include <drm/drm.h>
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_file.h>
@@ -50,13 +51,16 @@ static int virtio_gpu_pci_quirk(struct drm_device *dev, struct virtio_device *vd
        const char *pname = dev_name(&pdev->dev);
        bool vga = (pdev->class >> 8) == PCI_CLASS_DISPLAY_VGA;
        char unique[20];
+       int ret;
 
        DRM_INFO("pci: %s detected at %s\n",
                 vga ? "virtio-vga" : "virtio-gpu-pci",
                 pname);
-       if (vga)
-               drm_fb_helper_remove_conflicting_pci_framebuffers(pdev,
-                                                                 "virtiodrmfb");
+       if (vga) {
+               ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "virtiodrmfb");
+               if (ret)
+                       return ret;
+       }
 
        /*
         * Normally the drm_dev_set_unique() call is done by core DRM.
index 4e41d82..997dadc 100644 (file)
@@ -31,8 +31,8 @@
 #include <linux/pci.h>
 #include <linux/mem_encrypt.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_drv.h>
-#include <drm/drm_fb_helper.h>
 #include <drm/drm_ioctl.h>
 #include <drm/drm_sysfs.h>
 #include <drm/ttm/ttm_bo_driver.h>
@@ -1491,7 +1491,7 @@ static int vmw_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct vmw_private *vmw;
        int ret;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "svgadrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "svgadrmfb");
        if (ret)
                return ret;