On 10/09/2017 02:04 AM, Andrew Jeffery wrote: > On Wed, 2017-09-20 at 09:01 +0200, Cédric Le Goater wrote: >> The Witherspoon boards are OpenPOWER system hosting POWER9 Processors. >> Let's add support for their BMC including a couple of I2C devices as >> found on real HW. >> >> Signed-off-by: Cédric Le Goater <c...@kaod.org> >> --- >> hw/arm/aspeed.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 49 insertions(+) >> >> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c >> index ab895ad490af..81f522f711ae 100644 >> --- a/hw/arm/aspeed.c >> +++ b/hw/arm/aspeed.c >> @@ -46,6 +46,7 @@ enum { >> PALMETTO_BMC, >> AST2500_EVB, >> ROMULUS_BMC, >> + WITHERSPOON_BMC, >> }; >> >> /* Palmetto hardware value: 0x120CE416 */ >> @@ -83,8 +84,12 @@ enum { >> SCU_AST2500_HW_STRAP_ACPI_ENABLE | \ >> SCU_HW_STRAP_SPI_MODE(SCU_HW_STRAP_SPI_MASTER)) >> >> +/* Witherspoon hardware value: 0xF10AD216 (but use romulus definition) */ >> +#define WITHERSPOON_BMC_HW_STRAP1 ROMULUS_BMC_HW_STRAP1 >> + >> static void palmetto_bmc_i2c_init(AspeedBoardState *bmc); >> static void ast2500_evb_i2c_init(AspeedBoardState *bmc); >> +static void witherspoon_bmc_i2c_init(AspeedBoardState *bmc); >> >> static const AspeedBoardConfig aspeed_boards[] = { >> [PALMETTO_BMC] = { >> @@ -110,6 +115,14 @@ static const AspeedBoardConfig aspeed_boards[] = { >> .spi_model = "mx66l1g45g", >> .num_cs = 2, >> }, >> + [WITHERSPOON_BMC] = { >> + .soc_name = "ast2500-a1", >> + .hw_strap1 = WITHERSPOON_BMC_HW_STRAP1, >> + .fmc_model = "mx25l25635e", >> + .spi_model = "mx66l1g45g", >> + .num_cs = 2, >> + .i2c_init = witherspoon_bmc_i2c_init, >> + }, >> }; >> >> #define FIRMWARE_ADDR 0x0 >> @@ -337,11 +350,47 @@ static const TypeInfo romulus_bmc_type = { >> .class_init = romulus_bmc_class_init, >> }; >> >> +static void witherspoon_bmc_i2c_init(AspeedBoardState *bmc) >> +{ >> + AspeedSoCState *soc = &bmc->soc; >> + >> + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 4), "tmp423", >> 0x4c); >> + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 5), "tmp423", >> 0x4c); >> + >> + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 9), "tmp105", >> 0x4a); > > Looks like I need to track down newer versions of the schematics I have.
the device on the board is a tmp275 but the tmp105 model is compatible. >> +} >> + >> +static void witherspoon_bmc_init(MachineState *machine) >> +{ >> + aspeed_board_init(machine, &aspeed_boards[WITHERSPOON_BMC]); >> +} >> + >> +static void witherspoon_bmc_class_init(ObjectClass *oc, void *data) >> +{ >> + MachineClass *mc = MACHINE_CLASS(oc); >> + >> + mc->desc = "OpenPOWER Witherspoon BMC (ARM1176)"; >> + mc->init = witherspoon_bmc_init; >> + mc->max_cpus = 1; >> + mc->no_sdcard = 1; >> + mc->no_floppy = 1; >> + mc->no_cdrom = 1; >> + mc->no_parallel = 1; >> + mc->ignore_memory_transaction_failures = true; > > Aside from the issue with the above as pointed out by Peter, > > Reviewed-by: Andrew Jeffery <and...@aj.id.au> Thanks, C. > >> +} >> + >> +static const TypeInfo witherspoon_bmc_type = { >> + .name = MACHINE_TYPE_NAME("witherspoon-bmc"), >> + .parent = TYPE_MACHINE, >> + .class_init = witherspoon_bmc_class_init, >> +}; >> + >> static void aspeed_machine_init(void) >> { >> type_register_static(&palmetto_bmc_type); >> type_register_static(&ast2500_evb_type); >> type_register_static(&romulus_bmc_type); >> + type_register_static(&witherspoon_bmc_type); >> } >> >> type_init(aspeed_machine_init)