bcm27xx: remove kernel v5.15 support
[openwrt/openwrt.git] / target / linux / bcm27xx / patches-5.15 / 950-0901-drm-vc4-drv-Register-a-different-driver-on-BCM2711.patch
diff --git a/target/linux/bcm27xx/patches-5.15/950-0901-drm-vc4-drv-Register-a-different-driver-on-BCM2711.patch b/target/linux/bcm27xx/patches-5.15/950-0901-drm-vc4-drv-Register-a-different-driver-on-BCM2711.patch
deleted file mode 100644 (file)
index 81859f8..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-From bf001e8bacbf627525ec90027bfea19b788d6d8e Mon Sep 17 00:00:00 2001
-From: Maxime Ripard <maxime@cerno.tech>
-Date: Thu, 21 Apr 2022 11:08:22 +0200
-Subject: [PATCH] drm/vc4: drv: Register a different driver on BCM2711
-
-Prior to the BCM2711/RaspberryPi4, the GPU was a part of the display
-components of the SoC. It was thus a part of the vc4 driver.
-
-However, with the BCM2711, it got split out and thus the v3d driver was
-created. The vc4 driver now only handles the display part.
-
-We didn't properly split out the code when doing the BCM2711 support
-though, and most of the code around buffer allocations is still
-involved, even though it doesn't have the backing hardware anymore.
-
-Let's start the split out by creating a new drm_driver that only reports
-and uses what we support on the BCM2711. The ioctl were properly
-filtered already, but we were still exposing a .gem_create_object hook,
-as well as having an .open and .postclose hooks which are only relevant
-on older generations.
-
-Signed-off-by: Maxime Ripard <maxime@cerno.tech>
----
- drivers/gpu/drm/vc4/vc4_drv.c | 51 ++++++++++++++++++++++++++++-------
- 1 file changed, 42 insertions(+), 9 deletions(-)
-
---- a/drivers/gpu/drm/vc4/vc4_drv.c
-+++ b/drivers/gpu/drm/vc4/vc4_drv.c
-@@ -78,6 +78,19 @@ int vc4_dumb_fixup_args(struct drm_mode_
-       return 0;
- }
-+static int vc4_dumb_create(struct drm_file *file_priv,
-+                         struct drm_device *dev,
-+                         struct drm_mode_create_dumb *args)
-+{
-+      int ret;
-+
-+      ret = vc4_dumb_fixup_args(args);
-+      if (ret)
-+              return ret;
-+
-+      return drm_gem_cma_dumb_create_internal(file_priv, dev, args);
-+}
-+
- static int vc4_get_param_ioctl(struct drm_device *dev, void *data,
-                              struct drm_file *file_priv)
- {
-@@ -175,7 +188,7 @@ static const struct drm_ioctl_desc vc4_d
-       DRM_IOCTL_DEF_DRV(VC4_PERFMON_GET_VALUES, vc4_perfmon_get_values_ioctl, DRM_RENDER_ALLOW),
- };
--static struct drm_driver vc4_drm_driver = {
-+static const struct drm_driver vc4_drm_driver = {
-       .driver_features = (DRIVER_MODESET |
-                           DRIVER_ATOMIC |
-                           DRIVER_GEM |
-@@ -204,6 +217,27 @@ static struct drm_driver vc4_drm_driver
-       .patchlevel = DRIVER_PATCHLEVEL,
- };
-+static const struct drm_driver vc5_drm_driver = {
-+      .driver_features = (DRIVER_MODESET |
-+                          DRIVER_ATOMIC |
-+                          DRIVER_GEM),
-+
-+#if defined(CONFIG_DEBUG_FS)
-+      .debugfs_init = vc4_debugfs_init,
-+#endif
-+
-+      DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(vc4_dumb_create),
-+
-+      .fops = &vc4_drm_fops,
-+
-+      .name = DRIVER_NAME,
-+      .desc = DRIVER_DESC,
-+      .date = DRIVER_DATE,
-+      .major = DRIVER_MAJOR,
-+      .minor = DRIVER_MINOR,
-+      .patchlevel = DRIVER_PATCHLEVEL,
-+};
-+
- static int compare_dev(struct device *dev, void *data)
- {
-       return dev == data;
-@@ -255,6 +289,7 @@ static bool firmware_kms(void)
- static int vc4_drm_bind(struct device *dev)
- {
-       struct platform_device *pdev = to_platform_device(dev);
-+      const struct drm_driver *driver;
-       struct rpi_firmware *firmware = NULL;
-       struct drm_device *drm;
-       struct vc4_dev *vc4;
-@@ -266,12 +301,10 @@ static int vc4_drm_bind(struct device *d
-       dev->coherent_dma_mask = DMA_BIT_MASK(32);
-       is_vc5 = of_device_is_compatible(dev->of_node, "brcm,bcm2711-vc5");
--
--      /* If VC4 V3D is missing, don't advertise render nodes. */
--      node = of_find_matching_node_and_match(NULL, vc4_v3d_dt_match, NULL);
--      if (!node || !of_device_is_available(node))
--              vc4_drm_driver.driver_features &= ~DRIVER_RENDER;
--      of_node_put(node);
-+      if (is_vc5)
-+              driver = &vc5_drm_driver;
-+      else
-+              driver = &vc4_drm_driver;
-       node = of_find_matching_node_and_match(NULL, vc4_dma_range_matches,
-                                              NULL);
-@@ -283,7 +316,7 @@ static int vc4_drm_bind(struct device *d
-                       return ret;
-       }
--      vc4 = devm_drm_dev_alloc(dev, &vc4_drm_driver, struct vc4_dev, base);
-+      vc4 = devm_drm_dev_alloc(dev, driver, struct vc4_dev, base);
-       if (IS_ERR(vc4))
-               return PTR_ERR(vc4);
-       vc4->is_vc5 = is_vc5;
-@@ -315,7 +348,7 @@ static int vc4_drm_bind(struct device *d
-                       return -EPROBE_DEFER;
-       }
--      ret = drm_aperture_remove_framebuffers(false, &vc4_drm_driver);
-+      ret = drm_aperture_remove_framebuffers(false, driver);
-       if (ret)
-               return ret;