提交 b4901795 编写于 作者: D Dave Stevenson 提交者: Zheng Zengkai

firmware: raspberrypi: Report the fw variant during probe

raspberrypi inclusion
category: feature
bugzilla: 50432

--------------------------------

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: NDave 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: NDave Stevenson <dave.stevenson@raspberrypi.org>
Signed-off-by: NFang Yafen <yafen@iscas.ac.cn>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 8670abfa
...@@ -231,6 +231,15 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) ...@@ -231,6 +231,15 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{ {
time64_t date_and_time; time64_t date_and_time;
u32 packet; 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, int ret = rpi_firmware_property(fw,
RPI_FIRMWARE_GET_FIRMWARE_REVISION, RPI_FIRMWARE_GET_FIRMWARE_REVISION,
&packet, sizeof(packet)); &packet, sizeof(packet));
...@@ -240,7 +249,35 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) ...@@ -240,7 +249,35 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
/* This is not compatible with y2038 */ /* This is not compatible with y2038 */
date_and_time = packet; 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 static void
...@@ -309,6 +346,7 @@ static int rpi_firmware_probe(struct platform_device *pdev) ...@@ -309,6 +346,7 @@ static int rpi_firmware_probe(struct platform_device *pdev)
g_pdev = pdev; g_pdev = pdev;
rpi_firmware_print_firmware_revision(fw); rpi_firmware_print_firmware_revision(fw);
rpi_firmware_print_firmware_hash(fw);
rpi_register_hwmon_driver(dev, fw); rpi_register_hwmon_driver(dev, fw);
rpi_register_clk_driver(dev); rpi_register_clk_driver(dev);
......
...@@ -38,6 +38,8 @@ struct rpi_firmware_property_tag_header { ...@@ -38,6 +38,8 @@ struct rpi_firmware_property_tag_header {
enum rpi_firmware_property_tag { enum rpi_firmware_property_tag {
RPI_FIRMWARE_PROPERTY_END = 0, RPI_FIRMWARE_PROPERTY_END = 0,
RPI_FIRMWARE_GET_FIRMWARE_REVISION = 0x00000001, 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_INFO = 0x00008010,
RPI_FIRMWARE_SET_CURSOR_STATE = 0x00008011, RPI_FIRMWARE_SET_CURSOR_STATE = 0x00008011,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册