mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
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> 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>
This commit is contained in:
committed by
popcornmix
parent
8b270f9317
commit
1b6d9ce01b
@@ -231,6 +231,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));
|
||||
@@ -240,7 +249,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
|
||||
@@ -309,6 +346,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);
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@ 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_GET_FIRMWARE_HASH = 0x00000003,
|
||||
|
||||
RPI_FIRMWARE_SET_CURSOR_INFO = 0x00008010,
|
||||
RPI_FIRMWARE_SET_CURSOR_STATE = 0x00008011,
|
||||
|
||||
Reference in New Issue
Block a user