@@ -70,6 +70,7 @@ typedef enum RaspiProcessorId {
PROCESSOR_ID_BCM2836 = 1,
PROCESSOR_ID_BCM2837 = 2,
PROCESSOR_ID_BCM2838 = 3,
+ PROCESSOR_ID_BCM2711 = 3,
} RaspiProcessorId;
static const struct {
@@ -82,6 +83,30 @@ static const struct {
[PROCESSOR_ID_BCM2838] = {TYPE_BCM2838, BCM283X_NCPUS},
};
+static const struct {
+ RaspiProcessorId proc_id;
+ const char *model;
+} types[] = {
+ {PROCESSOR_ID_BCM2835, "A"},
+ {PROCESSOR_ID_BCM2835, "B"},
+ {PROCESSOR_ID_BCM2835, "A+"},
+ {PROCESSOR_ID_BCM2835, "B+"},
+ {PROCESSOR_ID_BCM2836, "2B"},
+ { },
+ {PROCESSOR_ID_BCM2835, "CM1"},
+ { },
+ {PROCESSOR_ID_BCM2837, "3B"},
+ {PROCESSOR_ID_BCM2835, "Zero"},
+ {PROCESSOR_ID_BCM2837, "CM3"},
+ { },
+ {PROCESSOR_ID_BCM2835, "ZeroW"},
+ {PROCESSOR_ID_BCM2837, "3B+"},
+ {PROCESSOR_ID_BCM2837, "3A+"},
+ { },
+ {PROCESSOR_ID_BCM2837, "CM3+"},
+ {PROCESSOR_ID_BCM2711, "4B"},
+};
+
uint64_t board_ram_size(uint32_t board_rev)
{
assert(FIELD_EX32(board_rev, REV_CODE, STYLE)); /* Only new style */
@@ -110,16 +135,12 @@ static int cores_count(uint32_t board_rev)
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]) {
+ if (bt >= ARRAY_SIZE(types) || !types[bt].model) {
return "Unknown";
}
- return types[bt];
+ return types[bt].model;
}
static void write_smpboot(ARMCPU *cpu, const struct arm_boot_info *info)
Expand the current type2model array to include the processor id. Since the BCM2838 is indistinctly used as BCM2711 (within the Linux community), add it as alias in RaspiProcessorId. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/arm/raspi.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-)