* [PATCH v1 0/1] Move AST1030 machine to a separate file @ 2025-10-15 8:12 ` Jamin Lin via 0 siblings, 0 replies; 7+ messages in thread From: Jamin Lin via @ 2025-10-15 8:12 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: jamin_lin, troy_lee, kane_chen v1: 1. Move AST1030 machine to a separate file Jamin Lin (1): hw/arm/aspeed: Move AST1030 machine to a separate file include/hw/arm/aspeed.h | 18 ++++++ hw/arm/aspeed.c | 106 ++------------------------------ hw/arm/aspeed_ast10x0_boards.c | 107 +++++++++++++++++++++++++++++++++ hw/arm/meson.build | 1 + 4 files changed, 130 insertions(+), 102 deletions(-) create mode 100644 hw/arm/aspeed_ast10x0_boards.c -- 2.43.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 0/1] Move AST1030 machine to a separate file @ 2025-10-15 8:12 ` Jamin Lin via 0 siblings, 0 replies; 7+ messages in thread From: Jamin Lin via @ 2025-10-15 8:12 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: jamin_lin, troy_lee, kane_chen v1: 1. Move AST1030 machine to a separate file Jamin Lin (1): hw/arm/aspeed: Move AST1030 machine to a separate file include/hw/arm/aspeed.h | 18 ++++++ hw/arm/aspeed.c | 106 ++------------------------------ hw/arm/aspeed_ast10x0_boards.c | 107 +++++++++++++++++++++++++++++++++ hw/arm/meson.build | 1 + 4 files changed, 130 insertions(+), 102 deletions(-) create mode 100644 hw/arm/aspeed_ast10x0_boards.c -- 2.43.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 1/1] hw/arm/aspeed: Move AST1030 machine to a separate file 2025-10-15 8:12 ` Jamin Lin via @ 2025-10-15 8:12 ` Jamin Lin via -1 siblings, 0 replies; 7+ messages in thread From: Jamin Lin via @ 2025-10-15 8:12 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: jamin_lin, troy_lee, kane_chen This change moves the AST1030 (MiniBMC) machine definition out of aspeed.c into a new dedicated file, aspeed_ast10x0_boards.c. The aspeed.c file has grown considerably over time and now contains definitions for more than 25 machines and 5 SoC families. To improve maintainability and consistency with other Aspeed SoC files (aspeed_ast2400.c, aspeed_ast2600.c, aspeed_ast27x0.c, etc.), this patch separates the AST1030 machine into its own source file. This is part of an ongoing effort discussed with Cédric to refactor and organize Aspeed machine models by SoC revision, following the same "aspeed_ast<rev>_*.c" naming pattern. No functional change intended. Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> --- include/hw/arm/aspeed.h | 18 ++++++ hw/arm/aspeed.c | 106 ++------------------------------ hw/arm/aspeed_ast10x0_boards.c | 107 +++++++++++++++++++++++++++++++++ hw/arm/meson.build | 1 + 4 files changed, 130 insertions(+), 102 deletions(-) create mode 100644 hw/arm/aspeed_ast10x0_boards.c diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h index 6c36455656..1e907a7448 100644 --- a/include/hw/arm/aspeed.h +++ b/include/hw/arm/aspeed.h @@ -11,6 +11,7 @@ #include "hw/boards.h" #include "qom/object.h" +#include "hw/arm/aspeed_soc.h" typedef struct AspeedMachineState AspeedMachineState; @@ -24,6 +25,19 @@ DECLARE_OBJ_CHECKERS(AspeedMachineState, AspeedMachineClass, #define ASPEED_MAC2_ON (1 << 2) #define ASPEED_MAC3_ON (1 << 3) +struct AspeedMachineState { + /* Private */ + MachineState parent_obj; + /* Public */ + + AspeedSoCState *soc; + MemoryRegion boot_rom; + bool mmio_exec; + uint32_t uart_chosen; + char *fmc_model; + char *spi_model; + uint32_t hw_strap1; +}; struct AspeedMachineClass { MachineClass parent_obj; @@ -45,5 +59,9 @@ struct AspeedMachineClass { bool vbootrom; }; +void aspeed_machine_class_init_cpus_defaults(MachineClass *mc); +void connect_serial_hds_to_uarts(AspeedMachineState *bmc); +void aspeed_machine_class_init(ObjectClass *oc, const void *data); +void aspeed_machine_instance_init(Object *obj); #endif diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 21ee62f750..7dce4afa7b 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -35,20 +35,6 @@ static struct arm_boot_info aspeed_board_binfo = { .board_id = -1, /* device-tree-only board */ }; -struct AspeedMachineState { - /* Private */ - MachineState parent_obj; - /* Public */ - - AspeedSoCState *soc; - MemoryRegion boot_rom; - bool mmio_exec; - uint32_t uart_chosen; - char *fmc_model; - char *spi_model; - uint32_t hw_strap1; -}; - /* On 32-bit hosts, lower RAM to 1G because of the 2047 MB limit */ #if HOST_LONG_BITS == 32 #define ASPEED_RAM_SIZE(sz) MIN((sz), 1 * GiB) @@ -292,7 +278,7 @@ static void sdhci_attach_drive(SDHCIState *sdhci, DriveInfo *dinfo, bool emmc, &error_fatal); } -static void connect_serial_hds_to_uarts(AspeedMachineState *bmc) +void connect_serial_hds_to_uarts(AspeedMachineState *bmc) { AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(bmc); AspeedSoCState *s = bmc->soc; @@ -1261,7 +1247,7 @@ static void aspeed_set_mmio_exec(Object *obj, bool value, Error **errp) ASPEED_MACHINE(obj)->mmio_exec = value; } -static void aspeed_machine_instance_init(Object *obj) +void aspeed_machine_instance_init(Object *obj) { AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(obj); @@ -1352,7 +1338,7 @@ static void aspeed_machine_class_props_init(ObjectClass *oc) "Change the SPI Flash model"); } -static void aspeed_machine_class_init_cpus_defaults(MachineClass *mc) +void aspeed_machine_class_init_cpus_defaults(MachineClass *mc) { AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(mc); AspeedSoCClass *sc = ASPEED_SOC_CLASS(object_class_by_name(amc->soc_name)); @@ -1391,7 +1377,7 @@ static void aspeed_machine_ast2600_class_emmc_init(ObjectClass *oc) "Set or unset boot from EMMC"); } -static void aspeed_machine_class_init(ObjectClass *oc, const void *data) +void aspeed_machine_class_init(ObjectClass *oc, const void *data) { MachineClass *mc = MACHINE_CLASS(oc); AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc); @@ -1788,86 +1774,6 @@ static void aspeed_machine_fby35_class_init(ObjectClass *oc, const void *data) aspeed_machine_class_init_cpus_defaults(mc); } -#define AST1030_INTERNAL_FLASH_SIZE (1024 * 1024) -/* Main SYSCLK frequency in Hz (200MHz) */ -#define SYSCLK_FRQ 200000000ULL - -static void aspeed_minibmc_machine_init(MachineState *machine) -{ - AspeedMachineState *bmc = ASPEED_MACHINE(machine); - AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine); - Clock *sysclk; - - sysclk = clock_new(OBJECT(machine), "SYSCLK"); - clock_set_hz(sysclk, SYSCLK_FRQ); - - bmc->soc = ASPEED_SOC(object_new(amc->soc_name)); - object_property_add_child(OBJECT(machine), "soc", OBJECT(bmc->soc)); - object_unref(OBJECT(bmc->soc)); - qdev_connect_clock_in(DEVICE(bmc->soc), "sysclk", sysclk); - - object_property_set_link(OBJECT(bmc->soc), "memory", - OBJECT(get_system_memory()), &error_abort); - connect_serial_hds_to_uarts(bmc); - qdev_realize(DEVICE(bmc->soc), NULL, &error_abort); - - if (defaults_enabled()) { - aspeed_board_init_flashes(&bmc->soc->fmc, - bmc->fmc_model ? bmc->fmc_model : amc->fmc_model, - amc->num_cs, - 0); - - aspeed_board_init_flashes(&bmc->soc->spi[0], - bmc->spi_model ? bmc->spi_model : amc->spi_model, - amc->num_cs, amc->num_cs); - - aspeed_board_init_flashes(&bmc->soc->spi[1], - bmc->spi_model ? bmc->spi_model : amc->spi_model, - amc->num_cs, (amc->num_cs * 2)); - } - - if (amc->i2c_init) { - amc->i2c_init(bmc); - } - - armv7m_load_kernel(ARM_CPU(first_cpu), - machine->kernel_filename, - 0, - AST1030_INTERNAL_FLASH_SIZE); -} - -static void ast1030_evb_i2c_init(AspeedMachineState *bmc) -{ - AspeedSoCState *soc = bmc->soc; - - /* U10 24C08 connects to SDA/SCL Group 1 by default */ - uint8_t *eeprom_buf = g_malloc0(32 * 1024); - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_buf); - - /* U11 LM75 connects to SDA/SCL Group 2 by default */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4d); -} - -static void aspeed_minibmc_machine_ast1030_evb_class_init(ObjectClass *oc, - const void *data) -{ - MachineClass *mc = MACHINE_CLASS(oc); - AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc); - - mc->desc = "Aspeed AST1030 MiniBMC (Cortex-M4)"; - amc->soc_name = "ast1030-a1"; - amc->hw_strap1 = 0; - amc->hw_strap2 = 0; - mc->init = aspeed_minibmc_machine_init; - amc->i2c_init = ast1030_evb_i2c_init; - mc->default_ram_size = 0; - amc->fmc_model = "w25q80bl"; - amc->spi_model = "w25q256"; - amc->num_cs = 2; - amc->macs_mask = 0; - aspeed_machine_class_init_cpus_defaults(mc); -} - #ifdef TARGET_AARCH64 static void ast2700_evb_i2c_init(AspeedMachineState *bmc) { @@ -2047,10 +1953,6 @@ static const TypeInfo aspeed_machine_types[] = { .name = MACHINE_TYPE_NAME("fby35-bmc"), .parent = MACHINE_TYPE_NAME("ast2600-evb"), .class_init = aspeed_machine_fby35_class_init, - }, { - .name = MACHINE_TYPE_NAME("ast1030-evb"), - .parent = TYPE_ASPEED_MACHINE, - .class_init = aspeed_minibmc_machine_ast1030_evb_class_init, #ifdef TARGET_AARCH64 }, { .name = MACHINE_TYPE_NAME("ast2700a0-evb"), diff --git a/hw/arm/aspeed_ast10x0_boards.c b/hw/arm/aspeed_ast10x0_boards.c new file mode 100644 index 0000000000..d07f4f154b --- /dev/null +++ b/hw/arm/aspeed_ast10x0_boards.c @@ -0,0 +1,107 @@ +/* + * ASPEED Ast10x0 Boards + * + * Copyright (C) 2025 ASPEED Technology Inc. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "hw/arm/boot.h" +#include "hw/qdev-clock.h" +#include "hw/arm/aspeed.h" +#include "hw/arm/aspeed_soc.h" +#include "hw/i2c/smbus_eeprom.h" +#include "system/system.h" + +#define AST1030_INTERNAL_FLASH_SIZE (1024 * 1024) +/* Main SYSCLK frequency in Hz (200MHz) */ +#define SYSCLK_FRQ 200000000ULL + +static void aspeed_minibmc_machine_init(MachineState *machine) +{ + AspeedMachineState *bmc = ASPEED_MACHINE(machine); + AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine); + Clock *sysclk; + + sysclk = clock_new(OBJECT(machine), "SYSCLK"); + clock_set_hz(sysclk, SYSCLK_FRQ); + + bmc->soc = ASPEED_SOC(object_new(amc->soc_name)); + object_property_add_child(OBJECT(machine), "soc", OBJECT(bmc->soc)); + object_unref(OBJECT(bmc->soc)); + qdev_connect_clock_in(DEVICE(bmc->soc), "sysclk", sysclk); + + object_property_set_link(OBJECT(bmc->soc), "memory", + OBJECT(get_system_memory()), &error_abort); + connect_serial_hds_to_uarts(bmc); + qdev_realize(DEVICE(bmc->soc), NULL, &error_abort); + + if (defaults_enabled()) { + aspeed_board_init_flashes(&bmc->soc->fmc, + bmc->fmc_model ? bmc->fmc_model : amc->fmc_model, + amc->num_cs, + 0); + + aspeed_board_init_flashes(&bmc->soc->spi[0], + bmc->spi_model ? bmc->spi_model : amc->spi_model, + amc->num_cs, amc->num_cs); + + aspeed_board_init_flashes(&bmc->soc->spi[1], + bmc->spi_model ? bmc->spi_model : amc->spi_model, + amc->num_cs, (amc->num_cs * 2)); + } + + if (amc->i2c_init) { + amc->i2c_init(bmc); + } + + armv7m_load_kernel(ARM_CPU(first_cpu), + machine->kernel_filename, + 0, + AST1030_INTERNAL_FLASH_SIZE); +} + +static void ast1030_evb_i2c_init(AspeedMachineState *bmc) +{ + AspeedSoCState *soc = bmc->soc; + + /* U10 24C08 connects to SDA/SCL Group 1 by default */ + uint8_t *eeprom_buf = g_malloc0(32 * 1024); + smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_buf); + + /* U11 LM75 connects to SDA/SCL Group 2 by default */ + i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4d); +} + +static void aspeed_minibmc_machine_ast1030_evb_class_init(ObjectClass *oc, + const void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc); + + mc->desc = "Aspeed AST1030 MiniBMC (Cortex-M4)"; + amc->soc_name = "ast1030-a1"; + amc->hw_strap1 = 0; + amc->hw_strap2 = 0; + mc->init = aspeed_minibmc_machine_init; + amc->i2c_init = ast1030_evb_i2c_init; + mc->default_ram_size = 0; + amc->fmc_model = "w25q80bl"; + amc->spi_model = "w25q256"; + amc->num_cs = 2; + amc->macs_mask = 0; + aspeed_machine_class_init_cpus_defaults(mc); +} + +static const TypeInfo aspeed_ast10x0_machine_types[] = { + { + .name = MACHINE_TYPE_NAME("ast1030-evb"), + .parent = TYPE_ASPEED_MACHINE, + .class_init = aspeed_minibmc_machine_ast1030_evb_class_init, + } +}; + +DEFINE_TYPES(aspeed_ast10x0_machine_types) + diff --git a/hw/arm/meson.build b/hw/arm/meson.build index b88b5b06d7..8f20f8ed3d 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -46,6 +46,7 @@ arm_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files( 'aspeed_ast2400.c', 'aspeed_ast2600.c', 'aspeed_ast10x0.c', + 'aspeed_ast10x0_boards.c', 'aspeed_eeprom.c', 'fby35.c')) arm_common_ss.add(when: ['CONFIG_ASPEED_SOC', 'TARGET_AARCH64'], if_true: files( -- 2.43.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 1/1] hw/arm/aspeed: Move AST1030 machine to a separate file @ 2025-10-15 8:12 ` Jamin Lin via 0 siblings, 0 replies; 7+ messages in thread From: Jamin Lin via @ 2025-10-15 8:12 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: jamin_lin, troy_lee, kane_chen This change moves the AST1030 (MiniBMC) machine definition out of aspeed.c into a new dedicated file, aspeed_ast10x0_boards.c. The aspeed.c file has grown considerably over time and now contains definitions for more than 25 machines and 5 SoC families. To improve maintainability and consistency with other Aspeed SoC files (aspeed_ast2400.c, aspeed_ast2600.c, aspeed_ast27x0.c, etc.), this patch separates the AST1030 machine into its own source file. This is part of an ongoing effort discussed with Cédric to refactor and organize Aspeed machine models by SoC revision, following the same "aspeed_ast<rev>_*.c" naming pattern. No functional change intended. Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> --- include/hw/arm/aspeed.h | 18 ++++++ hw/arm/aspeed.c | 106 ++------------------------------ hw/arm/aspeed_ast10x0_boards.c | 107 +++++++++++++++++++++++++++++++++ hw/arm/meson.build | 1 + 4 files changed, 130 insertions(+), 102 deletions(-) create mode 100644 hw/arm/aspeed_ast10x0_boards.c diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h index 6c36455656..1e907a7448 100644 --- a/include/hw/arm/aspeed.h +++ b/include/hw/arm/aspeed.h @@ -11,6 +11,7 @@ #include "hw/boards.h" #include "qom/object.h" +#include "hw/arm/aspeed_soc.h" typedef struct AspeedMachineState AspeedMachineState; @@ -24,6 +25,19 @@ DECLARE_OBJ_CHECKERS(AspeedMachineState, AspeedMachineClass, #define ASPEED_MAC2_ON (1 << 2) #define ASPEED_MAC3_ON (1 << 3) +struct AspeedMachineState { + /* Private */ + MachineState parent_obj; + /* Public */ + + AspeedSoCState *soc; + MemoryRegion boot_rom; + bool mmio_exec; + uint32_t uart_chosen; + char *fmc_model; + char *spi_model; + uint32_t hw_strap1; +}; struct AspeedMachineClass { MachineClass parent_obj; @@ -45,5 +59,9 @@ struct AspeedMachineClass { bool vbootrom; }; +void aspeed_machine_class_init_cpus_defaults(MachineClass *mc); +void connect_serial_hds_to_uarts(AspeedMachineState *bmc); +void aspeed_machine_class_init(ObjectClass *oc, const void *data); +void aspeed_machine_instance_init(Object *obj); #endif diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 21ee62f750..7dce4afa7b 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -35,20 +35,6 @@ static struct arm_boot_info aspeed_board_binfo = { .board_id = -1, /* device-tree-only board */ }; -struct AspeedMachineState { - /* Private */ - MachineState parent_obj; - /* Public */ - - AspeedSoCState *soc; - MemoryRegion boot_rom; - bool mmio_exec; - uint32_t uart_chosen; - char *fmc_model; - char *spi_model; - uint32_t hw_strap1; -}; - /* On 32-bit hosts, lower RAM to 1G because of the 2047 MB limit */ #if HOST_LONG_BITS == 32 #define ASPEED_RAM_SIZE(sz) MIN((sz), 1 * GiB) @@ -292,7 +278,7 @@ static void sdhci_attach_drive(SDHCIState *sdhci, DriveInfo *dinfo, bool emmc, &error_fatal); } -static void connect_serial_hds_to_uarts(AspeedMachineState *bmc) +void connect_serial_hds_to_uarts(AspeedMachineState *bmc) { AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(bmc); AspeedSoCState *s = bmc->soc; @@ -1261,7 +1247,7 @@ static void aspeed_set_mmio_exec(Object *obj, bool value, Error **errp) ASPEED_MACHINE(obj)->mmio_exec = value; } -static void aspeed_machine_instance_init(Object *obj) +void aspeed_machine_instance_init(Object *obj) { AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(obj); @@ -1352,7 +1338,7 @@ static void aspeed_machine_class_props_init(ObjectClass *oc) "Change the SPI Flash model"); } -static void aspeed_machine_class_init_cpus_defaults(MachineClass *mc) +void aspeed_machine_class_init_cpus_defaults(MachineClass *mc) { AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(mc); AspeedSoCClass *sc = ASPEED_SOC_CLASS(object_class_by_name(amc->soc_name)); @@ -1391,7 +1377,7 @@ static void aspeed_machine_ast2600_class_emmc_init(ObjectClass *oc) "Set or unset boot from EMMC"); } -static void aspeed_machine_class_init(ObjectClass *oc, const void *data) +void aspeed_machine_class_init(ObjectClass *oc, const void *data) { MachineClass *mc = MACHINE_CLASS(oc); AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc); @@ -1788,86 +1774,6 @@ static void aspeed_machine_fby35_class_init(ObjectClass *oc, const void *data) aspeed_machine_class_init_cpus_defaults(mc); } -#define AST1030_INTERNAL_FLASH_SIZE (1024 * 1024) -/* Main SYSCLK frequency in Hz (200MHz) */ -#define SYSCLK_FRQ 200000000ULL - -static void aspeed_minibmc_machine_init(MachineState *machine) -{ - AspeedMachineState *bmc = ASPEED_MACHINE(machine); - AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine); - Clock *sysclk; - - sysclk = clock_new(OBJECT(machine), "SYSCLK"); - clock_set_hz(sysclk, SYSCLK_FRQ); - - bmc->soc = ASPEED_SOC(object_new(amc->soc_name)); - object_property_add_child(OBJECT(machine), "soc", OBJECT(bmc->soc)); - object_unref(OBJECT(bmc->soc)); - qdev_connect_clock_in(DEVICE(bmc->soc), "sysclk", sysclk); - - object_property_set_link(OBJECT(bmc->soc), "memory", - OBJECT(get_system_memory()), &error_abort); - connect_serial_hds_to_uarts(bmc); - qdev_realize(DEVICE(bmc->soc), NULL, &error_abort); - - if (defaults_enabled()) { - aspeed_board_init_flashes(&bmc->soc->fmc, - bmc->fmc_model ? bmc->fmc_model : amc->fmc_model, - amc->num_cs, - 0); - - aspeed_board_init_flashes(&bmc->soc->spi[0], - bmc->spi_model ? bmc->spi_model : amc->spi_model, - amc->num_cs, amc->num_cs); - - aspeed_board_init_flashes(&bmc->soc->spi[1], - bmc->spi_model ? bmc->spi_model : amc->spi_model, - amc->num_cs, (amc->num_cs * 2)); - } - - if (amc->i2c_init) { - amc->i2c_init(bmc); - } - - armv7m_load_kernel(ARM_CPU(first_cpu), - machine->kernel_filename, - 0, - AST1030_INTERNAL_FLASH_SIZE); -} - -static void ast1030_evb_i2c_init(AspeedMachineState *bmc) -{ - AspeedSoCState *soc = bmc->soc; - - /* U10 24C08 connects to SDA/SCL Group 1 by default */ - uint8_t *eeprom_buf = g_malloc0(32 * 1024); - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_buf); - - /* U11 LM75 connects to SDA/SCL Group 2 by default */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4d); -} - -static void aspeed_minibmc_machine_ast1030_evb_class_init(ObjectClass *oc, - const void *data) -{ - MachineClass *mc = MACHINE_CLASS(oc); - AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc); - - mc->desc = "Aspeed AST1030 MiniBMC (Cortex-M4)"; - amc->soc_name = "ast1030-a1"; - amc->hw_strap1 = 0; - amc->hw_strap2 = 0; - mc->init = aspeed_minibmc_machine_init; - amc->i2c_init = ast1030_evb_i2c_init; - mc->default_ram_size = 0; - amc->fmc_model = "w25q80bl"; - amc->spi_model = "w25q256"; - amc->num_cs = 2; - amc->macs_mask = 0; - aspeed_machine_class_init_cpus_defaults(mc); -} - #ifdef TARGET_AARCH64 static void ast2700_evb_i2c_init(AspeedMachineState *bmc) { @@ -2047,10 +1953,6 @@ static const TypeInfo aspeed_machine_types[] = { .name = MACHINE_TYPE_NAME("fby35-bmc"), .parent = MACHINE_TYPE_NAME("ast2600-evb"), .class_init = aspeed_machine_fby35_class_init, - }, { - .name = MACHINE_TYPE_NAME("ast1030-evb"), - .parent = TYPE_ASPEED_MACHINE, - .class_init = aspeed_minibmc_machine_ast1030_evb_class_init, #ifdef TARGET_AARCH64 }, { .name = MACHINE_TYPE_NAME("ast2700a0-evb"), diff --git a/hw/arm/aspeed_ast10x0_boards.c b/hw/arm/aspeed_ast10x0_boards.c new file mode 100644 index 0000000000..d07f4f154b --- /dev/null +++ b/hw/arm/aspeed_ast10x0_boards.c @@ -0,0 +1,107 @@ +/* + * ASPEED Ast10x0 Boards + * + * Copyright (C) 2025 ASPEED Technology Inc. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "hw/arm/boot.h" +#include "hw/qdev-clock.h" +#include "hw/arm/aspeed.h" +#include "hw/arm/aspeed_soc.h" +#include "hw/i2c/smbus_eeprom.h" +#include "system/system.h" + +#define AST1030_INTERNAL_FLASH_SIZE (1024 * 1024) +/* Main SYSCLK frequency in Hz (200MHz) */ +#define SYSCLK_FRQ 200000000ULL + +static void aspeed_minibmc_machine_init(MachineState *machine) +{ + AspeedMachineState *bmc = ASPEED_MACHINE(machine); + AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine); + Clock *sysclk; + + sysclk = clock_new(OBJECT(machine), "SYSCLK"); + clock_set_hz(sysclk, SYSCLK_FRQ); + + bmc->soc = ASPEED_SOC(object_new(amc->soc_name)); + object_property_add_child(OBJECT(machine), "soc", OBJECT(bmc->soc)); + object_unref(OBJECT(bmc->soc)); + qdev_connect_clock_in(DEVICE(bmc->soc), "sysclk", sysclk); + + object_property_set_link(OBJECT(bmc->soc), "memory", + OBJECT(get_system_memory()), &error_abort); + connect_serial_hds_to_uarts(bmc); + qdev_realize(DEVICE(bmc->soc), NULL, &error_abort); + + if (defaults_enabled()) { + aspeed_board_init_flashes(&bmc->soc->fmc, + bmc->fmc_model ? bmc->fmc_model : amc->fmc_model, + amc->num_cs, + 0); + + aspeed_board_init_flashes(&bmc->soc->spi[0], + bmc->spi_model ? bmc->spi_model : amc->spi_model, + amc->num_cs, amc->num_cs); + + aspeed_board_init_flashes(&bmc->soc->spi[1], + bmc->spi_model ? bmc->spi_model : amc->spi_model, + amc->num_cs, (amc->num_cs * 2)); + } + + if (amc->i2c_init) { + amc->i2c_init(bmc); + } + + armv7m_load_kernel(ARM_CPU(first_cpu), + machine->kernel_filename, + 0, + AST1030_INTERNAL_FLASH_SIZE); +} + +static void ast1030_evb_i2c_init(AspeedMachineState *bmc) +{ + AspeedSoCState *soc = bmc->soc; + + /* U10 24C08 connects to SDA/SCL Group 1 by default */ + uint8_t *eeprom_buf = g_malloc0(32 * 1024); + smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_buf); + + /* U11 LM75 connects to SDA/SCL Group 2 by default */ + i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4d); +} + +static void aspeed_minibmc_machine_ast1030_evb_class_init(ObjectClass *oc, + const void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc); + + mc->desc = "Aspeed AST1030 MiniBMC (Cortex-M4)"; + amc->soc_name = "ast1030-a1"; + amc->hw_strap1 = 0; + amc->hw_strap2 = 0; + mc->init = aspeed_minibmc_machine_init; + amc->i2c_init = ast1030_evb_i2c_init; + mc->default_ram_size = 0; + amc->fmc_model = "w25q80bl"; + amc->spi_model = "w25q256"; + amc->num_cs = 2; + amc->macs_mask = 0; + aspeed_machine_class_init_cpus_defaults(mc); +} + +static const TypeInfo aspeed_ast10x0_machine_types[] = { + { + .name = MACHINE_TYPE_NAME("ast1030-evb"), + .parent = TYPE_ASPEED_MACHINE, + .class_init = aspeed_minibmc_machine_ast1030_evb_class_init, + } +}; + +DEFINE_TYPES(aspeed_ast10x0_machine_types) + diff --git a/hw/arm/meson.build b/hw/arm/meson.build index b88b5b06d7..8f20f8ed3d 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -46,6 +46,7 @@ arm_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files( 'aspeed_ast2400.c', 'aspeed_ast2600.c', 'aspeed_ast10x0.c', + 'aspeed_ast10x0_boards.c', 'aspeed_eeprom.c', 'fby35.c')) arm_common_ss.add(when: ['CONFIG_ASPEED_SOC', 'TARGET_AARCH64'], if_true: files( -- 2.43.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [SPAM] [PATCH v1 0/1] Move AST1030 machine to a separate file 2025-10-15 8:12 ` Jamin Lin via (?) (?) @ 2025-10-17 5:51 ` Cédric Le Goater 2025-10-17 5:55 ` Jamin Lin -1 siblings, 1 reply; 7+ messages in thread From: Cédric Le Goater @ 2025-10-17 5:51 UTC (permalink / raw) To: Jamin Lin, Peter Maydell, Steven Lee, Troy Lee, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee, kane_chen Jamin, On 10/15/25 10:12, Jamin Lin wrote: > v1: > 1. Move AST1030 machine to a separate file > > Jamin Lin (1): > hw/arm/aspeed: Move AST1030 machine to a separate file > > include/hw/arm/aspeed.h | 18 ++++++ > hw/arm/aspeed.c | 106 ++------------------------------ > hw/arm/aspeed_ast10x0_boards.c | 107 +++++++++++++++++++++++++++++++++ > hw/arm/meson.build | 1 + > 4 files changed, 130 insertions(+), 102 deletions(-) > create mode 100644 hw/arm/aspeed_ast10x0_boards.c > I will wait for your proposal reorganizing the aspeed machine files. Thanks, C. ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [SPAM] [PATCH v1 0/1] Move AST1030 machine to a separate file 2025-10-17 5:51 ` [SPAM] [PATCH v1 0/1] " Cédric Le Goater @ 2025-10-17 5:55 ` Jamin Lin 2025-10-17 6:15 ` Cédric Le Goater 0 siblings, 1 reply; 7+ messages in thread From: Jamin Lin @ 2025-10-17 5:55 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee, Kane Chen Hi Cédric > Subject: Re: [SPAM] [PATCH v1 0/1] Move AST1030 machine to a separate file > > Jamin, > > On 10/15/25 10:12, Jamin Lin wrote: > > v1: > > 1. Move AST1030 machine to a separate file > > > > Jamin Lin (1): > > hw/arm/aspeed: Move AST1030 machine to a separate file > > > > include/hw/arm/aspeed.h | 18 ++++++ > > hw/arm/aspeed.c | 106 ++------------------------------ > > hw/arm/aspeed_ast10x0_boards.c | 107 > +++++++++++++++++++++++++++++++++ > > hw/arm/meson.build | 1 + > > 4 files changed, 130 insertions(+), 102 deletions(-) > > create mode 100644 hw/arm/aspeed_ast10x0_boards.c > > > > I will wait for your proposal reorganizing the aspeed machine files. > Thank you for your comments. I will provide an update later in another email. It appears that this patch can be dropped, as we intend to have one C file and one commit per board/machine. Thanks, Jamin > > Thanks, > > C. > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [SPAM] [PATCH v1 0/1] Move AST1030 machine to a separate file 2025-10-17 5:55 ` Jamin Lin @ 2025-10-17 6:15 ` Cédric Le Goater 0 siblings, 0 replies; 7+ messages in thread From: Cédric Le Goater @ 2025-10-17 6:15 UTC (permalink / raw) To: Jamin Lin, Peter Maydell, Steven Lee, Troy Lee, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee, Kane Chen Peter, > I will provide an update later in another email. It appears that > this patch can be dropped, as we intend to have one C file and one > commit per board/machine. Do you have any opinion on this approach ? Thanks, C. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-10-17 6:16 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-10-15 8:12 [PATCH v1 0/1] Move AST1030 machine to a separate file Jamin Lin via 2025-10-15 8:12 ` Jamin Lin via 2025-10-15 8:12 ` [PATCH v1 1/1] hw/arm/aspeed: " Jamin Lin via 2025-10-15 8:12 ` Jamin Lin via 2025-10-17 5:51 ` [SPAM] [PATCH v1 0/1] " Cédric Le Goater 2025-10-17 5:55 ` Jamin Lin 2025-10-17 6:15 ` Cédric Le Goater
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.