Skip to content

Commit

Permalink
firmware: raspberrypi: Report the fw variant during probe
Browse files Browse the repository at this point in the history
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>

firmware: raspberrypi: Report the fw git hash during probe

The firmware can now report the git hash from which it was built
via the mailbox, so report it during probe.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
  • Loading branch information
6by9 authored and popcornmix committed Sep 6, 2024
1 parent c66e268 commit 615abf7
Showing 1 changed file with 39 additions and 1 deletion.
40 changes: 39 additions & 1 deletion drivers/firmware/raspberrypi.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,15 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
time64_t date_and_time;
u32 packet;
static const char * const variant_strs[] = {
"unknown",
"start",
"start_x",
"start_db",
"start_cd",
};
const char *variant_str = "cmd unsupported";
u32 variant;
int ret = rpi_firmware_property(fw,
RPI_FIRMWARE_GET_FIRMWARE_REVISION,
&packet, sizeof(packet));
Expand All @@ -244,7 +253,35 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)

/* This is not compatible with y2038 */
date_and_time = packet;
dev_info(fw->cl.dev, "Attached to firmware from %ptT\n", &date_and_time);

ret = rpi_firmware_property(fw, RPI_FIRMWARE_GET_FIRMWARE_VARIANT,
&variant, sizeof(variant));

if (!ret) {
if (variant >= ARRAY_SIZE(variant_strs))
variant = 0;
variant_str = variant_strs[variant];
}

dev_info(fw->cl.dev,
"Attached to firmware from %ptT, variant %s\n",
&date_and_time, variant_str);
}

static void
rpi_firmware_print_firmware_hash(struct rpi_firmware *fw)
{
u32 hash[5];
int ret = rpi_firmware_property(fw,
RPI_FIRMWARE_GET_FIRMWARE_HASH,
hash, sizeof(hash));

if (ret)
return;

dev_info(fw->cl.dev,
"Firmware hash is %08x%08x%08x%08x%08x\n",
hash[0], hash[1], hash[2], hash[3], hash[4]);
}

static void
Expand Down Expand Up @@ -359,6 +396,7 @@ static int rpi_firmware_probe(struct platform_device *pdev)
g_pdev = pdev;

rpi_firmware_print_firmware_revision(fw);
rpi_firmware_print_firmware_hash(fw);
rpi_register_hwmon_driver(dev, fw);
rpi_register_clk_driver(dev);

Expand Down

0 comments on commit 615abf7

Please sign in to comment.