brcm2708: update to latest patches from RPi foundation
[openwrt/staging/dedeckeh.git] / target / linux / brcm2708 / patches-4.19 / 950-0254-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0254-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch b/target/linux/brcm2708/patches-4.19/950-0254-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch
new file mode 100644 (file)
index 0000000..a41e46b
--- /dev/null
@@ -0,0 +1,79 @@
+From dfd66230d2d538e7f290436d2952124d6eadeb3d Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Thu, 10 Jan 2019 17:58:06 +0000
+Subject: [PATCH] firmware: raspberrypi: Report the fw variant during
+ probe
+
+The driver already reported the firmware build date during probe.
+The mailbox calls have been extended to also report the variant
+ 1 = standard start.elf
+ 2 = start_x.elf (includes camera stack)
+ 3 = start_db.elf (includes assert logging)
+ 4 = start_cd.elf (cutdown version for smallest memory footprint).
+Log the variant during probe.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/firmware/raspberrypi.c             | 32 +++++++++++++++++-----
+ include/soc/bcm2835/raspberrypi-firmware.h |  1 +
+ 2 files changed, 26 insertions(+), 7 deletions(-)
+
+--- a/drivers/firmware/raspberrypi.c
++++ b/drivers/firmware/raspberrypi.c
+@@ -227,21 +227,39 @@ static const struct attribute_group rpi_
+ static void
+ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
+ {
++      static const char * const variant_strs[] = {
++              "unknown",
++              "start",
++              "start_x",
++              "start_db",
++              "start_cd",
++      };
++      const char *variant_str = "cmd unsupported";
+       u32 packet;
++      u32 variant;
++      struct tm tm;
+       int ret = rpi_firmware_property(fw,
+                                       RPI_FIRMWARE_GET_FIRMWARE_REVISION,
+                                       &packet, sizeof(packet));
+-      if (ret == 0) {
+-              struct tm tm;
++      if (ret)
++              return;
+-              time64_to_tm(packet, 0, &tm);
++      ret = rpi_firmware_property(fw, RPI_FIRMWARE_GET_FIRMWARE_VARIANT,
++                                  &variant, sizeof(variant));
+-              dev_info(fw->cl.dev,
+-                       "Attached to firmware from %04ld-%02d-%02d %02d:%02d\n",
+-                       tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+-                       tm.tm_hour, tm.tm_min);
++      if (!ret) {
++              if (variant >= ARRAY_SIZE(variant_strs))
++                      variant = 0;
++              variant_str = variant_strs[variant];
+       }
++
++      time64_to_tm(packet, 0, &tm);
++
++      dev_info(fw->cl.dev,
++               "Attached to firmware from %04ld-%02d-%02d %02d:%02d, variant %s\n",
++               tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour,
++               tm.tm_min, variant_str);
+ }
+ static void
+--- a/include/soc/bcm2835/raspberrypi-firmware.h
++++ b/include/soc/bcm2835/raspberrypi-firmware.h
+@@ -41,6 +41,7 @@ struct rpi_firmware_property_tag_header
+ enum rpi_firmware_property_tag {
+       RPI_FIRMWARE_PROPERTY_END =                           0,
+       RPI_FIRMWARE_GET_FIRMWARE_REVISION =                  0x00000001,
++      RPI_FIRMWARE_GET_FIRMWARE_VARIANT =                   0x00000002,
+       RPI_FIRMWARE_SET_CURSOR_INFO =                        0x00008010,
+       RPI_FIRMWARE_SET_CURSOR_STATE =                       0x00008011,