hw/arm/aspeed.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+)
From: Adriana Kobylak <anoo@us.ibm.com>
The Swift board is an OpenPOWER system hosting POWER processors.
Add support for their BMC including the I2C devices as found on HW.
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
---
hw/arm/aspeed.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index 33070a6..7fd0e0c 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -73,6 +73,17 @@ struct AspeedBoardState {
SCU_AST2500_HW_STRAP_ACPI_ENABLE | \
SCU_HW_STRAP_SPI_MODE(SCU_HW_STRAP_SPI_MASTER))
+/* Swift hardware value: 0xF11AD206 */
+#define SWIFT_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_H_PLL_BYPASS_EN | \
+ 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
@@ -287,6 +298,35 @@ static void romulus_bmc_i2c_init(AspeedBoardState *bmc)
i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 11), "ds1338", 0x32);
}
+static void swift_bmc_i2c_init(AspeedBoardState *bmc)
+{
+ AspeedSoCState *soc = &bmc->soc;
+
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 3), "pca9552", 0x60);
+
+ /* The swift board expects a TMP275 but a TMP105 is compatible */
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 7), "tmp105", 0x48);
+ /* The swift board expects a pca9551 but a pca9552 is compatible */
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 7), "pca9552", 0x60);
+
+ /* The swift board expects an Epson RX8900 RTC but a ds1338 is compatible */
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 8), "ds1338", 0x32);
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 8), "pca9552", 0x60);
+
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 9), "tmp423", 0x4c);
+ /* The swift board expects a pca9539 but a pca9552 is compatible */
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 9), "pca9552", 0x74);
+
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 10), "tmp423", 0x4c);
+ /* The swift board expects a pca9539 but a pca9552 is compatible */
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 10), "pca9552",
+ 0x74);
+
+ /* The swift board expects a TMP275 but a TMP105 is compatible */
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 12), "tmp105", 0x48);
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 12), "tmp105", 0x4a);
+}
+
static void witherspoon_bmc_i2c_init(AspeedBoardState *bmc)
{
AspeedSoCState *soc = &bmc->soc;
@@ -378,6 +418,16 @@ static const AspeedBoardConfig aspeed_boards[] = {
.i2c_init = romulus_bmc_i2c_init,
.ram = 512 * MiB,
}, {
+ .name = MACHINE_TYPE_NAME("swift-bmc"),
+ .desc = "OpenPOWER Swift BMC (ARM1176)",
+ .soc_name = "ast2500-a1",
+ .hw_strap1 = SWIFT_BMC_HW_STRAP1,
+ .fmc_model = "mx66l1g45g",
+ .spi_model = "mx66l1g45g",
+ .num_cs = 2,
+ .i2c_init = swift_bmc_i2c_init,
+ .ram = 512 * MiB,
+ }, {
.name = MACHINE_TYPE_NAME("witherspoon-bmc"),
.desc = "OpenPOWER Witherspoon BMC (ARM1176)",
.soc_name = "ast2500-a1",
--
1.8.3.1
Hello Adriana, On 10/06/2019 22:53, Adriana Kobylak wrote: > From: Adriana Kobylak <anoo@us.ibm.com> > > The Swift board is an OpenPOWER system hosting POWER processors. > Add support for their BMC including the I2C devices as found on HW. > > Signed-off-by: Adriana Kobylak <anoo@us.ibm.com> > Reviewed-by: Cédric Le Goater <clg@kaod.org> I pushed this patch in my tree for the moment as the patchset : "aspeed: machine extensions and fixes" patchwork.ozlabs.org/cover/1105343/ still needs some more reviews. Thanks, C. > --- > hw/arm/aspeed.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 50 insertions(+) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 33070a6..7fd0e0c 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -73,6 +73,17 @@ struct AspeedBoardState { > SCU_AST2500_HW_STRAP_ACPI_ENABLE | \ > SCU_HW_STRAP_SPI_MODE(SCU_HW_STRAP_SPI_MASTER)) > > +/* Swift hardware value: 0xF11AD206 */ > +#define SWIFT_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_H_PLL_BYPASS_EN | \ > + 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 > > @@ -287,6 +298,35 @@ static void romulus_bmc_i2c_init(AspeedBoardState *bmc) > i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 11), "ds1338", 0x32); > } > > +static void swift_bmc_i2c_init(AspeedBoardState *bmc) > +{ > + AspeedSoCState *soc = &bmc->soc; > + > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 3), "pca9552", 0x60); > + > + /* The swift board expects a TMP275 but a TMP105 is compatible */ > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 7), "tmp105", 0x48); > + /* The swift board expects a pca9551 but a pca9552 is compatible */ > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 7), "pca9552", 0x60); > + > + /* The swift board expects an Epson RX8900 RTC but a ds1338 is compatible */ > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 8), "ds1338", 0x32); > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 8), "pca9552", 0x60); > + > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 9), "tmp423", 0x4c); > + /* The swift board expects a pca9539 but a pca9552 is compatible */ > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 9), "pca9552", 0x74); > + > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 10), "tmp423", 0x4c); > + /* The swift board expects a pca9539 but a pca9552 is compatible */ > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 10), "pca9552", > + 0x74); > + > + /* The swift board expects a TMP275 but a TMP105 is compatible */ > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 12), "tmp105", 0x48); > + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 12), "tmp105", 0x4a); > +} > + > static void witherspoon_bmc_i2c_init(AspeedBoardState *bmc) > { > AspeedSoCState *soc = &bmc->soc; > @@ -378,6 +418,16 @@ static const AspeedBoardConfig aspeed_boards[] = { > .i2c_init = romulus_bmc_i2c_init, > .ram = 512 * MiB, > }, { > + .name = MACHINE_TYPE_NAME("swift-bmc"), > + .desc = "OpenPOWER Swift BMC (ARM1176)", > + .soc_name = "ast2500-a1", > + .hw_strap1 = SWIFT_BMC_HW_STRAP1, > + .fmc_model = "mx66l1g45g", > + .spi_model = "mx66l1g45g", > + .num_cs = 2, > + .i2c_init = swift_bmc_i2c_init, > + .ram = 512 * MiB, > + }, { > .name = MACHINE_TYPE_NAME("witherspoon-bmc"), > .desc = "OpenPOWER Witherspoon BMC (ARM1176)", > .soc_name = "ast2500-a1", >
© 2016 - 2024 Red Hat, Inc.