mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 09:43:56 -06:00
aspeed queue:
* Removed tacoma-bmc machine * Added support for SDHCI on AST2700 SoC * Improved functional tests * Extended SMC qtest to all Aspeed SoCs -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmdZMTQACgkQUaNDx8/7 7KE9dhAAw9xNULQ7KG9udSNqYPRGP2w8teO4b9YOfRlJlSJuCInbeLjg1Hw3b/bZ rEtnwjl18f+mpmHzvasQthN4vUtcR1UwrW6SvmAjAQV8iNw059ugxWdxV9VR72hc 1AlzsW/Hea8s448INTEUvEjosYeLRRxZQyiJt9Lf5IkU/6yLj98YssKKvRqPpkxP Ens7PapgGPqA7cPnPYofRn2WINtHNnvX2FGlWTnCoPVp85VJzjJVFcK14kBych2U fmNZAY7pPTBkwwqR/qoPOyqBBCLeu3Jimk7hR8VbBbfwMT/Zg3RO7TJfwJex9TEs PIViRuM8krEppL6fmJlpDTatU2t0ffQY1SSVRWCDxJDDRpQN7iDei3vuzXOfLVAe lLSXS5Q1f+sO6JzbqkYSufh5V7zR5De8rk4j5WszC3cko2godTZm3qyqUxEaQGcx kjG58R+a7qLLeNMcPed5qgGjYeCPmhHay80E3faXKOezktSIM5z5b822ZPZfw3oG gTddZ4hdTg0BxtEjSv19qqnJW0Hs+NZJQuyu34QS82dZqPeZ22dmfULtf9uQ/3oV A/jKfTncl3sW1otfLABj6/RPVH/Sr7IM70XBjlc1+p9Ci7Es17er8umFOAyek9WL pE/Lq23MnAPBUsPKOJRdDFClTGwdnemXJoymwY/NZS4SgV3GcD8= =BiCq -----END PGP SIGNATURE----- Merge tag 'pull-aspeed-20241211' of https://github.com/legoater/qemu into staging aspeed queue: * Removed tacoma-bmc machine * Added support for SDHCI on AST2700 SoC * Improved functional tests * Extended SMC qtest to all Aspeed SoCs # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmdZMTQACgkQUaNDx8/7 # 7KE9dhAAw9xNULQ7KG9udSNqYPRGP2w8teO4b9YOfRlJlSJuCInbeLjg1Hw3b/bZ # rEtnwjl18f+mpmHzvasQthN4vUtcR1UwrW6SvmAjAQV8iNw059ugxWdxV9VR72hc # 1AlzsW/Hea8s448INTEUvEjosYeLRRxZQyiJt9Lf5IkU/6yLj98YssKKvRqPpkxP # Ens7PapgGPqA7cPnPYofRn2WINtHNnvX2FGlWTnCoPVp85VJzjJVFcK14kBych2U # fmNZAY7pPTBkwwqR/qoPOyqBBCLeu3Jimk7hR8VbBbfwMT/Zg3RO7TJfwJex9TEs # PIViRuM8krEppL6fmJlpDTatU2t0ffQY1SSVRWCDxJDDRpQN7iDei3vuzXOfLVAe # lLSXS5Q1f+sO6JzbqkYSufh5V7zR5De8rk4j5WszC3cko2godTZm3qyqUxEaQGcx # kjG58R+a7qLLeNMcPed5qgGjYeCPmhHay80E3faXKOezktSIM5z5b822ZPZfw3oG # gTddZ4hdTg0BxtEjSv19qqnJW0Hs+NZJQuyu34QS82dZqPeZ22dmfULtf9uQ/3oV # A/jKfTncl3sW1otfLABj6/RPVH/Sr7IM70XBjlc1+p9Ci7Es17er8umFOAyek9WL # pE/Lq23MnAPBUsPKOJRdDFClTGwdnemXJoymwY/NZS4SgV3GcD8= # =BiCq # -----END PGP SIGNATURE----- # gpg: Signature made Wed 11 Dec 2024 06:29:08 GMT # gpg: using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1 # gpg: Good signature from "Cédric Le Goater <clg@redhat.com>" [full] # gpg: aka "Cédric Le Goater <clg@kaod.org>" [full] # Primary key fingerprint: A0F6 6548 F048 95EB FE6B 0B60 51A3 43C7 CFFB ECA1 * tag 'pull-aspeed-20241211' of https://github.com/legoater/qemu: (24 commits) test/qtest/ast2700-smc-test: Support to test AST2700 test/qtest: Introduce a new aspeed-smc-utils.c to place common testcases test/qtest/aspeed_smc-test: Support write page command with QPI mode test/qtest/aspeed_smc-test: Support to test AST1030 test/qtest/aspeed_smc-test: Support to test AST2600 test/qtest/aspeed_smc-test: Support to test AST2500 test/qtest/aspeed_smc-test: Introducing a "page_addr" data field test/qtest/aspeed_smc-test: Support to test all CE pins test/qtest/aspeed_smc-test: Introduce a new TestData to test different BMC SOCs test/qtest/aspeed_smc-test: Move testcases to test_palmetto_bmc function tests/functional: Move debian boot test from avocado tests/functional: Introduce a specific test for rainier-bmc machine tests/functional: Introduce a specific test for ast2600 SoC tests/functional: Introduce a specific test for ast2500 SoC tests/functional: Introduce a specific test for romulus-bmc machine tests/functional: Introduce a specific test for palmetto-bmc machine tests/functional: Introduce a specific test for ast1030 SoC aspeed/soc: Support eMMC for AST2700 aspeed/soc: Support SDHCI for AST2700 hw/sd/aspeed_sdhci: Add AST2700 Support ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
a5ba0a7e4e
24 changed files with 1623 additions and 1025 deletions
|
@ -185,10 +185,6 @@ struct AspeedMachineState {
|
|||
#define AST2700_EVB_HW_STRAP2 0x00000003
|
||||
#endif
|
||||
|
||||
/* Tacoma hardware value */
|
||||
#define TACOMA_BMC_HW_STRAP1 0x00000000
|
||||
#define TACOMA_BMC_HW_STRAP2 0x00000040
|
||||
|
||||
/* Rainier hardware value: (QEMU prototype) */
|
||||
#define RAINIER_BMC_HW_STRAP1 (0x00422016 | SCU_AST2600_HW_STRAP_BOOT_SRC_EMMC)
|
||||
#define RAINIER_BMC_HW_STRAP2 0x80000848
|
||||
|
@ -1425,26 +1421,6 @@ static void aspeed_machine_ast2600_evb_class_init(ObjectClass *oc, void *data)
|
|||
aspeed_machine_ast2600_class_emmc_init(oc);
|
||||
};
|
||||
|
||||
static void aspeed_machine_tacoma_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "OpenPOWER Tacoma BMC (Cortex-A7)";
|
||||
amc->soc_name = "ast2600-a3";
|
||||
amc->hw_strap1 = TACOMA_BMC_HW_STRAP1;
|
||||
amc->hw_strap2 = TACOMA_BMC_HW_STRAP2;
|
||||
amc->fmc_model = "mx66l1g45g";
|
||||
amc->spi_model = "mx66l1g45g";
|
||||
amc->num_cs = 2;
|
||||
amc->macs_mask = ASPEED_MAC2_ON;
|
||||
amc->i2c_init = witherspoon_bmc_i2c_init; /* Same board layout */
|
||||
mc->default_ram_size = 1 * GiB;
|
||||
aspeed_machine_class_init_cpus_defaults(mc);
|
||||
|
||||
mc->deprecation_reason = "Please use the similar 'rainier-bmc' machine";
|
||||
};
|
||||
|
||||
static void aspeed_machine_g220a_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
@ -1766,10 +1742,6 @@ static const TypeInfo aspeed_machine_types[] = {
|
|||
.name = MACHINE_TYPE_NAME("yosemitev2-bmc"),
|
||||
.parent = TYPE_ASPEED_MACHINE,
|
||||
.class_init = aspeed_machine_yosemitev2_class_init,
|
||||
}, {
|
||||
.name = MACHINE_TYPE_NAME("tacoma-bmc"),
|
||||
.parent = TYPE_ASPEED_MACHINE,
|
||||
.class_init = aspeed_machine_tacoma_class_init,
|
||||
}, {
|
||||
.name = MACHINE_TYPE_NAME("tiogapass-bmc"),
|
||||
.parent = TYPE_ASPEED_MACHINE,
|
||||
|
|
|
@ -224,7 +224,8 @@ static void aspeed_ast2400_soc_init(Object *obj)
|
|||
snprintf(typename, sizeof(typename), "aspeed.gpio-%s", socname);
|
||||
object_initialize_child(obj, "gpio", &s->gpio, typename);
|
||||
|
||||
object_initialize_child(obj, "sdc", &s->sdhci, TYPE_ASPEED_SDHCI);
|
||||
snprintf(typename, sizeof(typename), "aspeed.sdhci-%s", socname);
|
||||
object_initialize_child(obj, "sdc", &s->sdhci, typename);
|
||||
|
||||
object_property_set_int(OBJECT(&s->sdhci), "num-slots", 2, &error_abort);
|
||||
|
||||
|
|
|
@ -236,8 +236,8 @@ static void aspeed_soc_ast2600_init(Object *obj)
|
|||
snprintf(typename, sizeof(typename), "aspeed.gpio-%s-1_8v", socname);
|
||||
object_initialize_child(obj, "gpio_1_8v", &s->gpio_1_8v, typename);
|
||||
|
||||
object_initialize_child(obj, "sd-controller", &s->sdhci,
|
||||
TYPE_ASPEED_SDHCI);
|
||||
snprintf(typename, sizeof(typename), "aspeed.sdhci-%s", socname);
|
||||
object_initialize_child(obj, "sd-controller", &s->sdhci, typename);
|
||||
|
||||
object_property_set_int(OBJECT(&s->sdhci), "num-slots", 2, &error_abort);
|
||||
|
||||
|
@ -247,8 +247,7 @@ static void aspeed_soc_ast2600_init(Object *obj)
|
|||
&s->sdhci.slots[i], TYPE_SYSBUS_SDHCI);
|
||||
}
|
||||
|
||||
object_initialize_child(obj, "emmc-controller", &s->emmc,
|
||||
TYPE_ASPEED_SDHCI);
|
||||
object_initialize_child(obj, "emmc-controller", &s->emmc, typename);
|
||||
|
||||
object_property_set_int(OBJECT(&s->emmc), "num-slots", 1, &error_abort);
|
||||
|
||||
|
@ -541,7 +540,8 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
|||
if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio), errp)) {
|
||||
return;
|
||||
}
|
||||
aspeed_mmio_map(s, SYS_BUS_DEVICE(&s->gpio), 0, sc->memmap[ASPEED_DEV_GPIO]);
|
||||
aspeed_mmio_map(s, SYS_BUS_DEVICE(&s->gpio), 0,
|
||||
sc->memmap[ASPEED_DEV_GPIO]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio), 0,
|
||||
aspeed_soc_get_irq(s, ASPEED_DEV_GPIO));
|
||||
|
||||
|
|
|
@ -65,6 +65,7 @@ static const hwaddr aspeed_soc_ast2700_memmap[] = {
|
|||
[ASPEED_DEV_I2C] = 0x14C0F000,
|
||||
[ASPEED_DEV_GPIO] = 0x14C0B000,
|
||||
[ASPEED_DEV_RTC] = 0x12C0F000,
|
||||
[ASPEED_DEV_SDHCI] = 0x14080000,
|
||||
};
|
||||
|
||||
#define AST2700_MAX_IRQ 256
|
||||
|
@ -113,6 +114,7 @@ static const int aspeed_soc_ast2700_irqmap[] = {
|
|||
[ASPEED_DEV_KCS] = 128,
|
||||
[ASPEED_DEV_DP] = 28,
|
||||
[ASPEED_DEV_I3C] = 131,
|
||||
[ASPEED_DEV_SDHCI] = 133,
|
||||
};
|
||||
|
||||
/* GICINT 128 */
|
||||
|
@ -158,6 +160,7 @@ static const int aspeed_soc_ast2700_gic132_intcmap[] = {
|
|||
|
||||
/* GICINT 133 */
|
||||
static const int aspeed_soc_ast2700_gic133_intcmap[] = {
|
||||
[ASPEED_DEV_SDHCI] = 1,
|
||||
[ASPEED_DEV_PECI] = 4,
|
||||
};
|
||||
|
||||
|
@ -380,6 +383,20 @@ static void aspeed_soc_ast2700_init(Object *obj)
|
|||
object_initialize_child(obj, "gpio", &s->gpio, typename);
|
||||
|
||||
object_initialize_child(obj, "rtc", &s->rtc, TYPE_ASPEED_RTC);
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.sdhci-%s", socname);
|
||||
object_initialize_child(obj, "sd-controller", &s->sdhci, typename);
|
||||
object_property_set_int(OBJECT(&s->sdhci), "num-slots", 1, &error_abort);
|
||||
|
||||
/* Init sd card slot class here so that they're under the correct parent */
|
||||
object_initialize_child(obj, "sd-controller.sdhci",
|
||||
&s->sdhci.slots[0], TYPE_SYSBUS_SDHCI);
|
||||
|
||||
object_initialize_child(obj, "emmc-controller", &s->emmc, typename);
|
||||
object_property_set_int(OBJECT(&s->emmc), "num-slots", 1, &error_abort);
|
||||
|
||||
object_initialize_child(obj, "emmc-controller.sdhci", &s->emmc.slots[0],
|
||||
TYPE_SYSBUS_SDHCI);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -681,6 +698,24 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
|
|||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->rtc), 0,
|
||||
aspeed_soc_get_irq(s, ASPEED_DEV_RTC));
|
||||
|
||||
/* SDHCI */
|
||||
if (!sysbus_realize(SYS_BUS_DEVICE(&s->sdhci), errp)) {
|
||||
return;
|
||||
}
|
||||
aspeed_mmio_map(s, SYS_BUS_DEVICE(&s->sdhci), 0,
|
||||
sc->memmap[ASPEED_DEV_SDHCI]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->sdhci), 0,
|
||||
aspeed_soc_get_irq(s, ASPEED_DEV_SDHCI));
|
||||
|
||||
/* eMMC */
|
||||
if (!sysbus_realize(SYS_BUS_DEVICE(&s->emmc), errp)) {
|
||||
return;
|
||||
}
|
||||
aspeed_mmio_map(s, SYS_BUS_DEVICE(&s->emmc), 0,
|
||||
sc->memmap[ASPEED_DEV_EMMC]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->emmc), 0,
|
||||
aspeed_soc_get_irq(s, ASPEED_DEV_EMMC));
|
||||
|
||||
create_unimplemented_device("ast2700.dpmcu", 0x11000000, 0x40000);
|
||||
create_unimplemented_device("ast2700.iomem0", 0x12000000, 0x01000000);
|
||||
create_unimplemented_device("ast2700.iomem1", 0x14000000, 0x01000000);
|
||||
|
|
|
@ -87,10 +87,12 @@ static void aspeed_sdhci_write(void *opaque, hwaddr addr, uint64_t val,
|
|||
sdhci->regs[TO_REG(addr)] = (uint32_t)val & ~ASPEED_SDHCI_INFO_RESET;
|
||||
break;
|
||||
case ASPEED_SDHCI_SDIO_140:
|
||||
sdhci->slots[0].capareg = deposit64(sdhci->slots[0].capareg, 0, 32, val);
|
||||
sdhci->slots[0].capareg = deposit64(sdhci->slots[0].capareg,
|
||||
0, 32, val);
|
||||
break;
|
||||
case ASPEED_SDHCI_SDIO_144:
|
||||
sdhci->slots[0].capareg = deposit64(sdhci->slots[0].capareg, 32, 32, val);
|
||||
sdhci->slots[0].capareg = deposit64(sdhci->slots[0].capareg,
|
||||
32, 32, val);
|
||||
break;
|
||||
case ASPEED_SDHCI_SDIO_148:
|
||||
sdhci->slots[0].maxcurr = deposit64(sdhci->slots[0].maxcurr,
|
||||
|
@ -146,6 +148,7 @@ static void aspeed_sdhci_realize(DeviceState *dev, Error **errp)
|
|||
{
|
||||
SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
|
||||
AspeedSDHCIState *sdhci = ASPEED_SDHCI(dev);
|
||||
AspeedSDHCIClass *asc = ASPEED_SDHCI_GET_CLASS(sdhci);
|
||||
|
||||
/* Create input irqs for the slots */
|
||||
qdev_init_gpio_in_named_with_opaque(DEVICE(sbd), aspeed_sdhci_set_irq,
|
||||
|
@ -165,7 +168,7 @@ static void aspeed_sdhci_realize(DeviceState *dev, Error **errp)
|
|||
}
|
||||
|
||||
if (!object_property_set_uint(sdhci_slot, "capareg",
|
||||
ASPEED_SDHCI_CAPABILITIES, errp)) {
|
||||
asc->capareg, errp)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -216,12 +219,70 @@ static void aspeed_sdhci_class_init(ObjectClass *classp, void *data)
|
|||
device_class_set_props(dc, aspeed_sdhci_properties);
|
||||
}
|
||||
|
||||
static void aspeed_2400_sdhci_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
AspeedSDHCIClass *asc = ASPEED_SDHCI_CLASS(klass);
|
||||
|
||||
dc->desc = "ASPEED 2400 SDHCI Controller";
|
||||
asc->capareg = 0x0000000001e80080;
|
||||
}
|
||||
|
||||
static void aspeed_2500_sdhci_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
AspeedSDHCIClass *asc = ASPEED_SDHCI_CLASS(klass);
|
||||
|
||||
dc->desc = "ASPEED 2500 SDHCI Controller";
|
||||
asc->capareg = 0x0000000001e80080;
|
||||
}
|
||||
|
||||
static void aspeed_2600_sdhci_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
AspeedSDHCIClass *asc = ASPEED_SDHCI_CLASS(klass);
|
||||
|
||||
dc->desc = "ASPEED 2600 SDHCI Controller";
|
||||
asc->capareg = 0x0000000701f80080;
|
||||
}
|
||||
|
||||
static void aspeed_2700_sdhci_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
AspeedSDHCIClass *asc = ASPEED_SDHCI_CLASS(klass);
|
||||
|
||||
dc->desc = "ASPEED 2700 SDHCI Controller";
|
||||
asc->capareg = 0x0000000719f80080;
|
||||
}
|
||||
|
||||
static const TypeInfo aspeed_sdhci_types[] = {
|
||||
{
|
||||
.name = TYPE_ASPEED_SDHCI,
|
||||
.parent = TYPE_SYS_BUS_DEVICE,
|
||||
.instance_size = sizeof(AspeedSDHCIState),
|
||||
.class_init = aspeed_sdhci_class_init,
|
||||
.class_size = sizeof(AspeedSDHCIClass),
|
||||
.abstract = true,
|
||||
},
|
||||
{
|
||||
.name = TYPE_ASPEED_2400_SDHCI,
|
||||
.parent = TYPE_ASPEED_SDHCI,
|
||||
.class_init = aspeed_2400_sdhci_class_init,
|
||||
},
|
||||
{
|
||||
.name = TYPE_ASPEED_2500_SDHCI,
|
||||
.parent = TYPE_ASPEED_SDHCI,
|
||||
.class_init = aspeed_2500_sdhci_class_init,
|
||||
},
|
||||
{
|
||||
.name = TYPE_ASPEED_2600_SDHCI,
|
||||
.parent = TYPE_ASPEED_SDHCI,
|
||||
.class_init = aspeed_2600_sdhci_class_init,
|
||||
},
|
||||
{
|
||||
.name = TYPE_ASPEED_2700_SDHCI,
|
||||
.parent = TYPE_ASPEED_SDHCI,
|
||||
.class_init = aspeed_2700_sdhci_class_init,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue