1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-13 20:01:55 +00:00
openmptcprouter/root/target/linux/bcm27xx/patches-5.15/0477-drm-vc4-Notify-the-firmware-when-DRM-is-in-charge.patch
2021-11-24 18:32:01 +01:00

61 lines
1.7 KiB
Diff

From 69f5c55779c1953ead79e807ef8823478887dbec Mon Sep 17 00:00:00 2001
From: Maxime Ripard <maxime@cerno.tech>
Date: Wed, 23 Jun 2021 11:54:58 +0200
Subject: [PATCH 477/634] drm/vc4: Notify the firmware when DRM is in charge
Once the call to drm_fb_helper_remove_conflicting_framebuffers() has
been made, simplefb has been unregistered and the KMS driver is entirely
in charge of the display.
Thus, we can notify the firmware it can free whatever resource it was
using to maintain simplefb functional.
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
drivers/gpu/drm/vc4/vc4_drv.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
index 556bf17a6573..88d6d2c6fa23 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
@@ -37,6 +37,8 @@
#include <drm/drm_fb_helper.h>
#include <drm/drm_vblank.h>
+#include <soc/bcm2835/raspberrypi-firmware.h>
+
#include "uapi/drm/vc4_drm.h"
#include "vc4_drv.h"
@@ -273,10 +275,27 @@ static int vc4_drm_bind(struct device *dev)
if (ret)
return ret;
+ node = of_parse_phandle(dev->of_node, "raspberrypi,firmware", 0);
+ if (node) {
+ vc4->firmware = rpi_firmware_get(node);
+ of_node_put(node);
+
+ if (!vc4->firmware)
+ return -EPROBE_DEFER;
+ }
+
ret = drm_aperture_remove_framebuffers(false, &vc4_drm_driver);
if (ret)
return ret;
+ if (vc4->firmware) {
+ ret = rpi_firmware_property(vc4->firmware,
+ RPI_FIRMWARE_NOTIFY_DISPLAY_DONE,
+ NULL, 0);
+ if (ret)
+ drm_warn(drm, "Couldn't stop firmware display driver: %d\n", ret);
+ }
+
ret = component_bind_all(dev, drm);
if (ret)
return ret;
--
2.33.1