From a1383655cfaa71609d6236ae0fcf3b6047462b98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Sat, 29 Feb 2020 09:25:20 +0100 Subject: bcm27xx: add linux 5.4 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tested on bcm2710 (Raspberry Pi 3B). Signed-off-by: Álvaro Fernández Rojas --- ...e-raspberrypi-Notify-firmware-of-a-reboot.patch | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 target/linux/bcm27xx/patches-5.4/950-0114-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch (limited to 'target/linux/bcm27xx/patches-5.4/950-0114-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch') diff --git a/target/linux/bcm27xx/patches-5.4/950-0114-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch b/target/linux/bcm27xx/patches-5.4/950-0114-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch new file mode 100644 index 0000000000..1db30c9cc1 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0114-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch @@ -0,0 +1,84 @@ +From 3386d22d3b3bcb202ef186d699d9dddfa681e13b Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Sat, 12 May 2018 21:35:43 +0100 +Subject: [PATCH] firmware/raspberrypi: Notify firmware of a reboot + +Register for reboot notifications, sending RPI_FIRMWARE_NOTIFY_REBOOT +over the mailbox interface on reception. + +Signed-off-by: Phil Elwell +--- + drivers/firmware/raspberrypi.c | 40 +++++++++++++++++++++++++++++++++- + 1 file changed, 39 insertions(+), 1 deletion(-) + +--- a/drivers/firmware/raspberrypi.c ++++ b/drivers/firmware/raspberrypi.c +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + #include + + #define MBOX_MSG(chan, data28) (((data28) & ~0xf) | ((chan) & 0xf)) +@@ -177,6 +178,26 @@ int rpi_firmware_property(struct rpi_fir + } + EXPORT_SYMBOL_GPL(rpi_firmware_property); + ++static int rpi_firmware_notify_reboot(struct notifier_block *nb, ++ unsigned long action, ++ void *data) ++{ ++ struct rpi_firmware *fw; ++ struct platform_device *pdev = g_pdev; ++ ++ if (!pdev) ++ return 0; ++ ++ fw = platform_get_drvdata(pdev); ++ if (!fw) ++ return 0; ++ ++ (void)rpi_firmware_property(fw, RPI_FIRMWARE_NOTIFY_REBOOT, ++ 0, 0); ++ ++ return 0; ++} ++ + static void + rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) + { +@@ -307,15 +328,32 @@ static struct platform_driver rpi_firmwa + .remove = rpi_firmware_remove, + }; + ++static struct notifier_block rpi_firmware_reboot_notifier = { ++ .notifier_call = rpi_firmware_notify_reboot, ++}; ++ + static int __init rpi_firmware_init(void) + { +- return platform_driver_register(&rpi_firmware_driver); ++ int ret = register_reboot_notifier(&rpi_firmware_reboot_notifier); ++ if (ret) ++ goto out1; ++ ret = platform_driver_register(&rpi_firmware_driver); ++ if (ret) ++ goto out2; ++ ++ return 0; ++ ++out2: ++ unregister_reboot_notifier(&rpi_firmware_reboot_notifier); ++out1: ++ return ret; + } + subsys_initcall(rpi_firmware_init); + + static void __init rpi_firmware_exit(void) + { + platform_driver_unregister(&rpi_firmware_driver); ++ unregister_reboot_notifier(&rpi_firmware_reboot_notifier); + } + module_exit(rpi_firmware_exit); + -- cgit v1.2.3