diff options
author | Álvaro Fernández Rojas <noltari@gmail.com> | 2022-05-16 23:40:32 +0200 |
---|---|---|
committer | Álvaro Fernández Rojas <noltari@gmail.com> | 2022-05-17 15:11:22 +0200 |
commit | 20ea6adbf199097c4f5f591ffee088340630dae4 (patch) | |
tree | d6719d95e136611a1c25bbf7789652d6d402779d /target/linux/bcm27xx/patches-5.15/950-0024-drm-vc4-Notify-the-firmware-when-DRM-is-in-charge.patch | |
parent | bca05bd072180dc38ef740b37ded9572a6db1981 (diff) | |
download | upstream-20ea6adbf199097c4f5f591ffee088340630dae4.tar.gz upstream-20ea6adbf199097c4f5f591ffee088340630dae4.tar.bz2 upstream-20ea6adbf199097c4f5f591ffee088340630dae4.zip |
bcm27xx: add support for linux v5.15
Build system: x86_64
Build-tested: bcm2708, bcm2709, bcm2710, bcm2711
Run-tested: bcm2708/RPiB+, bcm2709/RPi3B, bcm2710/RPi3B, bcm2711/RPi4B
Signed-off-by: Marty Jones <mj8263788@gmail.com>
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0024-drm-vc4-Notify-the-firmware-when-DRM-is-in-charge.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.15/950-0024-drm-vc4-Notify-the-firmware-when-DRM-is-in-charge.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0024-drm-vc4-Notify-the-firmware-when-DRM-is-in-charge.patch b/target/linux/bcm27xx/patches-5.15/950-0024-drm-vc4-Notify-the-firmware-when-DRM-is-in-charge.patch new file mode 100644 index 0000000000..04db8fb1d5 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.15/950-0024-drm-vc4-Notify-the-firmware-when-DRM-is-in-charge.patch @@ -0,0 +1,69 @@ +From 9e9177db83609c19bbe523cc4d20119cf09ea787 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard <maxime@cerno.tech> +Date: Wed, 15 Dec 2021 10:51:17 +0100 +Subject: [PATCH] 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> +Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> +Acked-by: Thomas Zimmermann <tzimmermann@suse.de> +Link: https://patchwork.freedesktop.org/patch/msgid/20211215095117.176435-5-maxime@cerno.tech +--- + drivers/gpu/drm/vc4/vc4_drv.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +--- 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" +@@ -217,6 +219,7 @@ static void vc4_match_add_drivers(struct + static int vc4_drm_bind(struct device *dev) + { + struct platform_device *pdev = to_platform_device(dev); ++ struct rpi_firmware *firmware = NULL; + struct drm_device *drm; + struct vc4_dev *vc4; + struct device_node *node; +@@ -253,10 +256,29 @@ static int vc4_drm_bind(struct device *d + if (ret) + return ret; + ++ node = of_find_compatible_node(NULL, NULL, "raspberrypi,bcm2835-firmware"); ++ if (node) { ++ firmware = rpi_firmware_get(node); ++ of_node_put(node); ++ ++ if (!firmware) ++ return -EPROBE_DEFER; ++ } ++ + ret = drm_aperture_remove_framebuffers(false, &vc4_drm_driver); + if (ret) + return ret; + ++ if (firmware) { ++ ret = rpi_firmware_property(firmware, ++ RPI_FIRMWARE_NOTIFY_DISPLAY_DONE, ++ NULL, 0); ++ if (ret) ++ drm_warn(drm, "Couldn't stop firmware display driver: %d\n", ret); ++ ++ rpi_firmware_put(firmware); ++ } ++ + ret = component_bind_all(dev, drm); + if (ret) + return ret; |