hw/arm/raspi: Extract the board model from the board revision
The board revision encode the model type. Add a helper to extract the model, and use it. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20200208165645.15657-12-f4bug@amsat.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
975f3402fa
commit
98b541e1b2
@ -101,6 +101,20 @@ static const char *board_soc_type(uint32_t board_rev)
|
||||
return soc_types[proc_id];
|
||||
}
|
||||
|
||||
static const char *board_type(uint32_t board_rev)
|
||||
{
|
||||
static const char *types[] = {
|
||||
"A", "B", "A+", "B+", "2B", "Alpha", "CM1", NULL, "3B", "Zero",
|
||||
"CM3", NULL, "Zero W", "3B+", "3A+", NULL, "CM3+", "4B",
|
||||
};
|
||||
assert(FIELD_EX32(board_rev, REV_CODE, STYLE)); /* Only new style */
|
||||
int bt = FIELD_EX32(board_rev, REV_CODE, TYPE);
|
||||
if (bt >= ARRAY_SIZE(types) || !types[bt]) {
|
||||
return "Unknown";
|
||||
}
|
||||
return types[bt];
|
||||
}
|
||||
|
||||
static void write_smpboot(ARMCPU *cpu, const struct arm_boot_info *info)
|
||||
{
|
||||
static const uint32_t smpboot[] = {
|
||||
@ -287,7 +301,7 @@ static void raspi2_machine_class_init(ObjectClass *oc, void *data)
|
||||
uint32_t board_rev = (uint32_t)(uintptr_t)data;
|
||||
|
||||
rmc->board_rev = board_rev;
|
||||
mc->desc = "Raspberry Pi 2B";
|
||||
mc->desc = g_strdup_printf("Raspberry Pi %s", board_type(board_rev));
|
||||
mc->init = raspi_machine_init;
|
||||
mc->block_default_type = IF_SD;
|
||||
mc->no_parallel = 1;
|
||||
@ -308,7 +322,7 @@ static void raspi3_machine_class_init(ObjectClass *oc, void *data)
|
||||
uint32_t board_rev = (uint32_t)(uintptr_t)data;
|
||||
|
||||
rmc->board_rev = board_rev;
|
||||
mc->desc = "Raspberry Pi 3B";
|
||||
mc->desc = g_strdup_printf("Raspberry Pi %s", board_type(board_rev));
|
||||
mc->init = raspi_machine_init;
|
||||
mc->block_default_type = IF_SD;
|
||||
mc->no_parallel = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user