This commit moves the Tiogapass BMC machine implementation out of aspeed.c into a new dedicated file aspeed_ast2500_tiogapass.c. To support splitting Tiogapass into a dedicated source file, a new TIOGAPASS_BMC_HW_STRAP1 macro is added as a copy of AST2500_EVB_HW_STRAP1. The change follows the ongoing effort to modularize Aspeed platform support by splitting each machine definition into its own source file. This makes aspeed.c cleaner, easier to maintain, and simplifies future feature additions or refactoring for individual machines. Key updates include: - Removed tiogapass_bmc_i2c_init() and its FRU data from aspeed.c and aspeed_eeprom.c. - Removed Tiogapass type registration from aspeed_machine_types[]. - Added new source file aspeed_ast2500_tiogapass.c to meson.build. - Removed unused Tiogapass FRUID declarations from aspeed_eeprom.h. No functional changes. Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Link: https://lore.kernel.org/qemu-devel/20251104031325.146374-8-jamin_lin@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
90 lines
3.8 KiB
C
90 lines
3.8 KiB
C
/*
|
|
* Facebook Tiogapass
|
|
*
|
|
* Copyright 2016 IBM Corp.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#include "qemu/osdep.h"
|
|
#include "qapi/error.h"
|
|
#include "hw/arm/machines-qom.h"
|
|
#include "hw/arm/aspeed.h"
|
|
#include "hw/arm/aspeed_soc.h"
|
|
#include "hw/nvram/eeprom_at24c.h"
|
|
|
|
/* value: 0xF100C2E6 */
|
|
#define TIOGAPASS_BMC_HW_STRAP1 (( \
|
|
AST2500_HW_STRAP1_DEFAULTS | \
|
|
SCU_AST2500_HW_STRAP_SPI_AUTOFETCH_ENABLE | \
|
|
SCU_AST2500_HW_STRAP_GPIO_STRAP_ENABLE | \
|
|
SCU_AST2500_HW_STRAP_UART_DEBUG | \
|
|
SCU_AST2500_HW_STRAP_DDR4_ENABLE | \
|
|
SCU_HW_STRAP_MAC1_RGMII | \
|
|
SCU_HW_STRAP_MAC0_RGMII) & \
|
|
~SCU_HW_STRAP_2ND_BOOT_WDT)
|
|
|
|
/* Tiogapass BMC FRU */
|
|
static const uint8_t tiogapass_bmc_fruid[] = {
|
|
0x01, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, 0xf1, 0x01, 0x0c, 0x00, 0x36,
|
|
0xe6, 0xd0, 0xc6, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xd2, 0x42, 0x4d,
|
|
0x43, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x4d, 0x6f,
|
|
0x64, 0x75, 0x6c, 0x65, 0xcd, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
|
|
0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xce, 0x58, 0x58, 0x58, 0x58, 0x58,
|
|
0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc3, 0x31, 0x2e,
|
|
0x30, 0xc9, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xd2,
|
|
0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
|
|
0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc1, 0x39, 0x01, 0x0c, 0x00, 0xc6,
|
|
0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xd2, 0x54, 0x69, 0x6f, 0x67, 0x61,
|
|
0x20, 0x50, 0x61, 0x73, 0x73, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65,
|
|
0x32, 0xce, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
|
|
0x58, 0x58, 0x58, 0x58, 0xc4, 0x58, 0x58, 0x58, 0x32, 0xcd, 0x58, 0x58,
|
|
0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc7,
|
|
0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc3, 0x31, 0x2e, 0x30, 0xc9,
|
|
0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc8, 0x43, 0x6f,
|
|
0x6e, 0x66, 0x69, 0x67, 0x20, 0x41, 0xc1, 0x45,
|
|
};
|
|
|
|
static const size_t tiogapass_bmc_fruid_len = sizeof(tiogapass_bmc_fruid);
|
|
|
|
static void tiogapass_bmc_i2c_init(AspeedMachineState *bmc)
|
|
{
|
|
AspeedSoCState *soc = bmc->soc;
|
|
|
|
at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 4), 0x54, 128 * KiB);
|
|
at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 6), 0x54, 128 * KiB,
|
|
tiogapass_bmc_fruid, tiogapass_bmc_fruid_len);
|
|
/* TMP421 */
|
|
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 8), "tmp421", 0x1f);
|
|
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp421", 0x4f);
|
|
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp421", 0x4e);
|
|
}
|
|
|
|
static void aspeed_machine_tiogapass_class_init(ObjectClass *oc,
|
|
const void *data)
|
|
{
|
|
MachineClass *mc = MACHINE_CLASS(oc);
|
|
AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
|
|
|
|
mc->desc = "Facebook Tiogapass BMC (ARM1176)";
|
|
amc->soc_name = "ast2500-a1";
|
|
amc->hw_strap1 = TIOGAPASS_BMC_HW_STRAP1;
|
|
amc->hw_strap2 = 0;
|
|
amc->fmc_model = "n25q256a";
|
|
amc->spi_model = "mx25l25635e";
|
|
amc->num_cs = 2;
|
|
amc->i2c_init = tiogapass_bmc_i2c_init;
|
|
mc->default_ram_size = 1 * GiB;
|
|
aspeed_machine_class_init_cpus_defaults(mc);
|
|
};
|
|
|
|
static const TypeInfo aspeed_ast2500_tiogapass_types[] = {
|
|
{
|
|
.name = MACHINE_TYPE_NAME("tiogapass-bmc"),
|
|
.parent = TYPE_ASPEED_MACHINE,
|
|
.class_init = aspeed_machine_tiogapass_class_init,
|
|
.interfaces = arm_machine_interfaces,
|
|
}
|
|
};
|
|
|
|
DEFINE_TYPES(aspeed_ast2500_tiogapass_types)
|