[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 04/13] hw/arm/raspi: Introduce RaspiProcessorId enum
From: |
Luc Michel |
Subject: |
Re: [PATCH v2 04/13] hw/arm/raspi: Introduce RaspiProcessorId enum |
Date: |
Tue, 18 Feb 2020 09:24:02 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 |
Hi Phil,
On 2/17/20 12:45 PM, Philippe Mathieu-Daudé wrote:
> As we only support a reduced set of the REV_CODE_PROCESSOR id
> encoded in the board revision, define the PROCESSOR_ID values
> as an enum. We can simplify the board_soc_type and cores_count
> methods.
>
> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> hw/arm/raspi.c | 45 +++++++++++++++++++++------------------------
> 1 file changed, 21 insertions(+), 24 deletions(-)
>
> diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c
> index d9e8acfe3b..b628dadf34 100644
> --- a/hw/arm/raspi.c
> +++ b/hw/arm/raspi.c
> @@ -69,16 +69,33 @@ FIELD(REV_CODE, MANUFACTURER, 16, 4);
> FIELD(REV_CODE, MEMORY_SIZE, 20, 3);
> FIELD(REV_CODE, STYLE, 23, 1);
>
> +typedef enum RaspiProcessorId {
> + PROCESSOR_ID_BCM2836 = 1,
> + PROCESSOR_ID_BCM2837 = 2,
> +} RaspiProcessorId;
> +
> +static const struct {
> + const char *type;
> + int cores_count;
> +} soc_property[] = {
> + [PROCESSOR_ID_BCM2836] = {TYPE_BCM2836, BCM283X_NCPUS},
> + [PROCESSOR_ID_BCM2837] = {TYPE_BCM2837, BCM283X_NCPUS},
> +};
> +
> static uint64_t board_ram_size(uint32_t board_rev)
> {
> assert(FIELD_EX32(board_rev, REV_CODE, STYLE)); /* Only new style */
> return 256 * MiB << FIELD_EX32(board_rev, REV_CODE, MEMORY_SIZE);
> }
>
> -static int board_processor_id(uint32_t board_rev)
> +static RaspiProcessorId board_processor_id(uint32_t board_rev)
> {
> + int proc_id = FIELD_EX32(board_rev, REV_CODE, PROCESSOR);;
You have a superfluous semicolon here.
Apart from that:
Reviewed-by: Luc Michel <address@hidden>
> +
> assert(FIELD_EX32(board_rev, REV_CODE, STYLE)); /* Only new style */
> - return FIELD_EX32(board_rev, REV_CODE, PROCESSOR);
> + assert(proc_id < ARRAY_SIZE(soc_property) && soc_property[proc_id].type);
> +
> + return proc_id;
> }
>
> static int board_version(uint32_t board_rev)
> @@ -88,32 +105,12 @@ static int board_version(uint32_t board_rev)
>
> static const char *board_soc_type(uint32_t board_rev)
> {
> - static const char *soc_types[] = {
> - NULL, TYPE_BCM2836, TYPE_BCM2837,
> - };
> - int proc_id = board_processor_id(board_rev);
> -
> - if (proc_id >= ARRAY_SIZE(soc_types) || !soc_types[proc_id]) {
> - error_report("Unsupported processor id '%d' (board revision: 0x%x)",
> - proc_id, board_rev);
> - exit(1);
> - }
> - return soc_types[proc_id];
> + return soc_property[board_processor_id(board_rev)].type;
> }
>
> static int cores_count(uint32_t board_rev)
> {
> - static const int soc_cores_count[] = {
> - 0, BCM283X_NCPUS, BCM283X_NCPUS,
> - };
> - int proc_id = board_processor_id(board_rev);
> -
> - if (proc_id >= ARRAY_SIZE(soc_cores_count) || !soc_cores_count[proc_id])
> {
> - error_report("Unsupported processor id '%d' (board revision: 0x%x)",
> - proc_id, board_rev);
> - exit(1);
> - }
> - return soc_cores_count[proc_id];
> + return soc_property[board_processor_id(board_rev)].cores_count;
> }
>
> static const char *board_type(uint32_t board_rev)
>
- [PATCH v2 00/13] hw/arm: Add raspi0 and raspi1 machines, Philippe Mathieu-Daudé, 2020/02/17
- [PATCH v2 01/13] hw/arm/raspi: Remove ignore_memory_transaction_failures on the raspi2, Philippe Mathieu-Daudé, 2020/02/17
- [PATCH v2 02/13] hw/arm/raspi: Avoid using TypeInfo::class_data pointer, Philippe Mathieu-Daudé, 2020/02/17
- [PATCH v2 03/13] hw/arm/raspi: Use more specific machine names, Philippe Mathieu-Daudé, 2020/02/17
- [PATCH v2 04/13] hw/arm/raspi: Introduce RaspiProcessorId enum, Philippe Mathieu-Daudé, 2020/02/17
- Re: [PATCH v2 04/13] hw/arm/raspi: Introduce RaspiProcessorId enum,
Luc Michel <=
- [PATCH v2 05/13] hw/arm/raspi: Remove use of the 'version' value in the board code, Philippe Mathieu-Daudé, 2020/02/17
- [PATCH v2 06/13] hw/arm/bcm2836: Restrict BCM283XClass declaration to C source, Philippe Mathieu-Daudé, 2020/02/17
- [PATCH v2 07/13] hw/arm/bcm2836: QOM'ify more by adding class_init() to each SoC type, Philippe Mathieu-Daudé, 2020/02/17
- [PATCH v2 08/13] hw/arm/bcm2836: Introduce BCM283XClass::core_count, Philippe Mathieu-Daudé, 2020/02/17