Skip to content

Commit 87c6cef

Browse files
committed
Merge remote-tracking branch 'remotes/legoater/tags/pull-aspeed-20210503' into staging
Aspeed patches : * Fixes for the DMA space * New model for ASPEED's Hash and Crypto Engine (Joel and Klaus) * Acceptance tests (Joel) * A fix for the XDMA model * Some extra features for the SMC controller. * Two new boards : rainier-bmc and quanta-q7l1-bmc (Patrick) # gpg: Signature made Mon 03 May 2021 06:23:36 BST # gpg: using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1 # gpg: Good signature from "Cédric Le Goater <[email protected]>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: A0F6 6548 F048 95EB FE6B 0B60 51A3 43C7 CFFB ECA1 * remotes/legoater/tags/pull-aspeed-20210503: aspeed: Add support for the quanta-q7l1-bmc board hw/block: m25p80: Add support for mt25ql02g and mt25qu02g aspeed: Add support for the rainier-bmc board aspeed: Deprecate the swift-bmc machine tests/qtest: Rename m25p80 test in aspeed_smc test aspeed/smc: Add extra controls to request DMA aspeed/smc: Add a 'features' attribute to the object class hw/misc/aspeed_xdma: Add AST2600 support tests/acceptance: Test ast2600 machine tests/acceptance: Test ast2400 and ast2500 machines tests/qtest: Add test for Aspeed HACE aspeed: Integrate HACE hw: Model ASPEED's Hash and Crypto Engine hw/arm/aspeed: Do not sysbus-map mmio flash region directly, use alias aspeed/i2c: Rename DMA address space aspeed/i2c: Fix DMA address mask aspeed/smc: Remove unused "sdram-base" property aspeed/smc: Use the RAM memory region for DMAs Signed-off-by: Peter Maydell <[email protected]>
2 parents 3e13d8e + 9cccb91 commit 87c6cef

File tree

20 files changed

+1389
-76
lines changed

20 files changed

+1389
-76
lines changed

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1027,6 +1027,7 @@ F: include/hw/misc/pca9552*.h
10271027
F: hw/net/ftgmac100.c
10281028
F: include/hw/net/ftgmac100.h
10291029
F: docs/system/arm/aspeed.rst
1030+
F: tests/qtest/*aspeed*
10301031

10311032
NRF51
10321033
M: Joel Stanley <[email protected]>

docs/system/arm/aspeed.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Supported devices
4949
* Ethernet controllers
5050
* Front LEDs (PCA9552 on I2C bus)
5151
* LPC Peripheral Controller (a subset of subdevices are supported)
52+
* Hash/Crypto Engine (HACE) - Hash support only. TODO: HMAC and RSA
5253

5354

5455
Missing devices
@@ -59,7 +60,6 @@ Missing devices
5960
* PWM and Fan Controller
6061
* Slave GPIO Controller
6162
* Super I/O Controller
62-
* Hash/Crypto Engine
6363
* PCI-Express 1 Controller
6464
* Graphic Display Controller
6565
* PECI Controller

docs/system/deprecated.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,13 @@ The Raspberry Pi machines come in various models (A, A+, B, B+). To be able
245245
to distinguish which model QEMU is implementing, the ``raspi2`` and ``raspi3``
246246
machines have been renamed ``raspi2b`` and ``raspi3b``.
247247

248+
Aspeed ``swift-bmc`` machine (since 6.1)
249+
''''''''''''''''''''''''''''''''''''''''
250+
251+
This machine is deprecated because we have enough AST2500 based OpenPOWER
252+
machines. It can be easily replaced by the ``witherspoon-bmc`` or the
253+
``romulus-bmc`` machines.
254+
248255
Device options
249256
--------------
250257

hw/arm/aspeed.c

Lines changed: 145 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,19 @@ struct AspeedMachineState {
138138
/* Witherspoon hardware value: 0xF10AD216 (but use romulus definition) */
139139
#define WITHERSPOON_BMC_HW_STRAP1 ROMULUS_BMC_HW_STRAP1
140140

141+
/* Quanta-Q71l hardware value */
142+
#define QUANTA_Q71L_BMC_HW_STRAP1 ( \
143+
SCU_AST2400_HW_STRAP_DRAM_SIZE(DRAM_SIZE_128MB) | \
144+
SCU_AST2400_HW_STRAP_DRAM_CONFIG(2/* DDR3 with CL=6, CWL=5 */) | \
145+
SCU_AST2400_HW_STRAP_ACPI_DIS | \
146+
SCU_AST2400_HW_STRAP_SET_CLK_SOURCE(AST2400_CLK_24M_IN) | \
147+
SCU_HW_STRAP_VGA_CLASS_CODE | \
148+
SCU_HW_STRAP_SPI_MODE(SCU_HW_STRAP_SPI_PASS_THROUGH) | \
149+
SCU_AST2400_HW_STRAP_SET_CPU_AHB_RATIO(AST2400_CPU_AHB_RATIO_2_1) | \
150+
SCU_HW_STRAP_SPI_WIDTH | \
151+
SCU_HW_STRAP_VGA_SIZE_SET(VGA_8M_DRAM) | \
152+
SCU_AST2400_HW_STRAP_BOOT_MODE(AST2400_SPI_BOOT))
153+
141154
/* AST2600 evb hardware value */
142155
#define AST2600_EVB_HW_STRAP1 0x000000C0
143156
#define AST2600_EVB_HW_STRAP2 0x00000003
@@ -146,6 +159,10 @@ struct AspeedMachineState {
146159
#define TACOMA_BMC_HW_STRAP1 0x00000000
147160
#define TACOMA_BMC_HW_STRAP2 0x00000040
148161

162+
/* Rainier hardware value: (QEMU prototype) */
163+
#define RAINIER_BMC_HW_STRAP1 0x00000000
164+
#define RAINIER_BMC_HW_STRAP2 0x00000000
165+
149166
/*
150167
* The max ram region is for firmwares that scan the address space
151168
* with load/store to guess how much RAM the SoC has.
@@ -327,7 +344,7 @@ static void aspeed_machine_init(MachineState *machine)
327344
object_property_set_int(OBJECT(&bmc->soc), "num-cs", amc->num_cs,
328345
&error_abort);
329346
object_property_set_link(OBJECT(&bmc->soc), "dram",
330-
OBJECT(&bmc->ram_container), &error_abort);
347+
OBJECT(machine->ram), &error_abort);
331348
if (machine->kernel_filename) {
332349
/*
333350
* When booting with a -kernel command line there is no u-boot
@@ -433,6 +450,34 @@ static void palmetto_bmc_i2c_init(AspeedMachineState *bmc)
433450
object_property_set_int(OBJECT(dev), "temperature3", 110000, &error_abort);
434451
}
435452

453+
static void quanta_q71l_bmc_i2c_init(AspeedMachineState *bmc)
454+
{
455+
AspeedSoCState *soc = &bmc->soc;
456+
457+
/*
458+
* The quanta-q71l platform expects tmp75s which are compatible with
459+
* tmp105s.
460+
*/
461+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4c);
462+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4e);
463+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4f);
464+
465+
/* TODO: i2c-1: Add baseboard FRU eeprom@54 24c64 */
466+
/* TODO: i2c-1: Add Frontpanel FRU eeprom@57 24c64 */
467+
/* TODO: Add Memory Riser i2c mux and eeproms. */
468+
469+
/* TODO: i2c-2: pca9546@74 */
470+
/* TODO: i2c-2: pca9548@77 */
471+
/* TODO: i2c-3: Add BIOS FRU eeprom@56 24c64 */
472+
/* TODO: i2c-7: Add pca9546@70 */
473+
/* - i2c@0: pmbus@59 */
474+
/* - i2c@1: pmbus@58 */
475+
/* - i2c@2: pmbus@58 */
476+
/* - i2c@3: pmbus@59 */
477+
/* TODO: i2c-7: Add PDB FRU eeprom@52 */
478+
/* TODO: i2c-8: Add BMC FRU eeprom@50 */
479+
}
480+
436481
static void ast2500_evb_i2c_init(AspeedMachineState *bmc)
437482
{
438483
AspeedSoCState *soc = &bmc->soc;
@@ -629,6 +674,58 @@ static void g220a_bmc_i2c_init(AspeedMachineState *bmc)
629674
eeprom_buf);
630675
}
631676

677+
static void rainier_bmc_i2c_init(AspeedMachineState *bmc)
678+
{
679+
AspeedSoCState *soc = &bmc->soc;
680+
681+
/* The rainier expects a TMP275 but a TMP105 is compatible */
682+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_TMP105,
683+
0x48);
684+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_TMP105,
685+
0x49);
686+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_TMP105,
687+
0x4a);
688+
689+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_TMP105,
690+
0x48);
691+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_TMP105,
692+
0x49);
693+
694+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_TMP105,
695+
0x48);
696+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_TMP105,
697+
0x4a);
698+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_TMP105,
699+
0x4b);
700+
701+
/* Bus 7: TODO dps310@76 */
702+
/* Bus 7: TODO max31785@52 */
703+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 7), "pca9552", 0x61);
704+
/* Bus 7: TODO si7021-a20@20 */
705+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 7), TYPE_TMP105,
706+
0x48);
707+
708+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_TMP105,
709+
0x48);
710+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_TMP105,
711+
0x4a);
712+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 8), "pca9552", 0x61);
713+
/* Bus 8: ucd90320@11 */
714+
/* Bus 8: ucd90320@b */
715+
/* Bus 8: ucd90320@c */
716+
717+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp423", 0x4c);
718+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp423", 0x4d);
719+
720+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp423", 0x4c);
721+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp423", 0x4d);
722+
723+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE_TMP105,
724+
0x48);
725+
i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE_TMP105,
726+
0x49);
727+
}
728+
632729
static bool aspeed_get_mmio_exec(Object *obj, Error **errp)
633730
{
634731
return ASPEED_MACHINE(obj)->mmio_exec;
@@ -728,6 +825,23 @@ static void aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data)
728825
aspeed_soc_num_cpus(amc->soc_name);
729826
};
730827

828+
static void aspeed_machine_quanta_q71l_class_init(ObjectClass *oc, void *data)
829+
{
830+
MachineClass *mc = MACHINE_CLASS(oc);
831+
AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
832+
833+
mc->desc = "Quanta-Q71l BMC (ARM926EJ-S)";
834+
amc->soc_name = "ast2400-a1";
835+
amc->hw_strap1 = QUANTA_Q71L_BMC_HW_STRAP1;
836+
amc->fmc_model = "n25q256a";
837+
amc->spi_model = "mx25l25635e";
838+
amc->num_cs = 1;
839+
amc->i2c_init = quanta_q71l_bmc_i2c_init;
840+
mc->default_ram_size = 128 * MiB;
841+
mc->default_cpus = mc->min_cpus = mc->max_cpus =
842+
aspeed_soc_num_cpus(amc->soc_name);
843+
}
844+
731845
static void aspeed_machine_supermicrox11_bmc_class_init(ObjectClass *oc,
732846
void *data)
733847
{
@@ -811,6 +925,9 @@ static void aspeed_machine_swift_class_init(ObjectClass *oc, void *data)
811925
mc->default_ram_size = 512 * MiB;
812926
mc->default_cpus = mc->min_cpus = mc->max_cpus =
813927
aspeed_soc_num_cpus(amc->soc_name);
928+
929+
mc->deprecation_reason = "redundant system. Please use a similar "
930+
"OpenPOWER BMC, Witherspoon or Romulus.";
814931
};
815932

816933
static void aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *data)
@@ -886,6 +1003,25 @@ static void aspeed_machine_g220a_class_init(ObjectClass *oc, void *data)
8861003
aspeed_soc_num_cpus(amc->soc_name);
8871004
};
8881005

1006+
static void aspeed_machine_rainier_class_init(ObjectClass *oc, void *data)
1007+
{
1008+
MachineClass *mc = MACHINE_CLASS(oc);
1009+
AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
1010+
1011+
mc->desc = "IBM Rainier BMC (Cortex A7)";
1012+
amc->soc_name = "ast2600-a1";
1013+
amc->hw_strap1 = RAINIER_BMC_HW_STRAP1;
1014+
amc->hw_strap2 = RAINIER_BMC_HW_STRAP2;
1015+
amc->fmc_model = "mx66l1g45g";
1016+
amc->spi_model = "mx66l1g45g";
1017+
amc->num_cs = 2;
1018+
amc->macs_mask = ASPEED_MAC2_ON | ASPEED_MAC3_ON;
1019+
amc->i2c_init = rainier_bmc_i2c_init;
1020+
mc->default_ram_size = 1 * GiB;
1021+
mc->default_cpus = mc->min_cpus = mc->max_cpus =
1022+
aspeed_soc_num_cpus(amc->soc_name);
1023+
};
1024+
8891025
static const TypeInfo aspeed_machine_types[] = {
8901026
{
8911027
.name = MACHINE_TYPE_NAME("palmetto-bmc"),
@@ -927,6 +1063,14 @@ static const TypeInfo aspeed_machine_types[] = {
9271063
.name = MACHINE_TYPE_NAME("g220a-bmc"),
9281064
.parent = TYPE_ASPEED_MACHINE,
9291065
.class_init = aspeed_machine_g220a_class_init,
1066+
}, {
1067+
.name = MACHINE_TYPE_NAME("quanta-q71l-bmc"),
1068+
.parent = TYPE_ASPEED_MACHINE,
1069+
.class_init = aspeed_machine_quanta_q71l_class_init,
1070+
}, {
1071+
.name = MACHINE_TYPE_NAME("rainier-bmc"),
1072+
.parent = TYPE_ASPEED_MACHINE,
1073+
.class_init = aspeed_machine_rainier_class_init,
9301074
}, {
9311075
.name = TYPE_ASPEED_MACHINE,
9321076
.parent = TYPE_MACHINE,

hw/arm/aspeed_ast2600.c

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ static const hwaddr aspeed_soc_ast2600_memmap[] = {
4242
[ASPEED_DEV_ETH2] = 0x1E680000,
4343
[ASPEED_DEV_ETH4] = 0x1E690000,
4444
[ASPEED_DEV_VIC] = 0x1E6C0000,
45+
[ASPEED_DEV_HACE] = 0x1E6D0000,
4546
[ASPEED_DEV_SDMC] = 0x1E6E0000,
4647
[ASPEED_DEV_SCU] = 0x1E6E2000,
4748
[ASPEED_DEV_XDMA] = 0x1E6E7000,
@@ -102,6 +103,7 @@ static const int aspeed_soc_ast2600_irqmap[] = {
102103
[ASPEED_DEV_I2C] = 110, /* 110 -> 125 */
103104
[ASPEED_DEV_ETH1] = 2,
104105
[ASPEED_DEV_ETH2] = 3,
106+
[ASPEED_DEV_HACE] = 4,
105107
[ASPEED_DEV_ETH3] = 32,
106108
[ASPEED_DEV_ETH4] = 33,
107109
[ASPEED_DEV_KCS] = 138, /* 138 -> 142 */
@@ -185,7 +187,8 @@ static void aspeed_soc_ast2600_init(Object *obj)
185187
object_initialize_child(obj, "mii[*]", &s->mii[i], TYPE_ASPEED_MII);
186188
}
187189

188-
object_initialize_child(obj, "xdma", &s->xdma, TYPE_ASPEED_XDMA);
190+
snprintf(typename, sizeof(typename), TYPE_ASPEED_XDMA "-%s", socname);
191+
object_initialize_child(obj, "xdma", &s->xdma, typename);
189192

190193
snprintf(typename, sizeof(typename), "aspeed.gpio-%s", socname);
191194
object_initialize_child(obj, "gpio", &s->gpio, typename);
@@ -213,6 +216,9 @@ static void aspeed_soc_ast2600_init(Object *obj)
213216
TYPE_SYSBUS_SDHCI);
214217

215218
object_initialize_child(obj, "lpc", &s->lpc, TYPE_ASPEED_LPC);
219+
220+
snprintf(typename, sizeof(typename), "aspeed.hace-%s", socname);
221+
object_initialize_child(obj, "hace", &s->hace, typename);
216222
}
217223

218224
/*
@@ -344,10 +350,6 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
344350
/* FMC, The number of CS is set at the board level */
345351
object_property_set_link(OBJECT(&s->fmc), "dram", OBJECT(s->dram_mr),
346352
&error_abort);
347-
if (!object_property_set_int(OBJECT(&s->fmc), "sdram-base",
348-
sc->memmap[ASPEED_DEV_SDRAM], errp)) {
349-
return;
350-
}
351353
if (!sysbus_realize(SYS_BUS_DEVICE(&s->fmc), errp)) {
352354
return;
353355
}
@@ -498,6 +500,16 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
498500
sysbus_connect_irq(SYS_BUS_DEVICE(&s->lpc), 1 + aspeed_lpc_kcs_4,
499501
qdev_get_gpio_in(DEVICE(&s->a7mpcore),
500502
sc->irqmap[ASPEED_DEV_KCS] + aspeed_lpc_kcs_4));
503+
504+
/* HACE */
505+
object_property_set_link(OBJECT(&s->hace), "dram", OBJECT(s->dram_mr),
506+
&error_abort);
507+
if (!sysbus_realize(SYS_BUS_DEVICE(&s->hace), errp)) {
508+
return;
509+
}
510+
sysbus_mmio_map(SYS_BUS_DEVICE(&s->hace), 0, sc->memmap[ASPEED_DEV_HACE]);
511+
sysbus_connect_irq(SYS_BUS_DEVICE(&s->hace), 0,
512+
aspeed_soc_get_irq(s, ASPEED_DEV_HACE));
501513
}
502514

503515
static void aspeed_soc_ast2600_class_init(ObjectClass *oc, void *data)

hw/arm/aspeed_soc.c

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ static const hwaddr aspeed_soc_ast2400_memmap[] = {
3434
[ASPEED_DEV_VIC] = 0x1E6C0000,
3535
[ASPEED_DEV_SDMC] = 0x1E6E0000,
3636
[ASPEED_DEV_SCU] = 0x1E6E2000,
37+
[ASPEED_DEV_HACE] = 0x1E6E3000,
3738
[ASPEED_DEV_XDMA] = 0x1E6E7000,
3839
[ASPEED_DEV_VIDEO] = 0x1E700000,
3940
[ASPEED_DEV_ADC] = 0x1E6E9000,
@@ -65,6 +66,7 @@ static const hwaddr aspeed_soc_ast2500_memmap[] = {
6566
[ASPEED_DEV_VIC] = 0x1E6C0000,
6667
[ASPEED_DEV_SDMC] = 0x1E6E0000,
6768
[ASPEED_DEV_SCU] = 0x1E6E2000,
69+
[ASPEED_DEV_HACE] = 0x1E6E3000,
6870
[ASPEED_DEV_XDMA] = 0x1E6E7000,
6971
[ASPEED_DEV_ADC] = 0x1E6E9000,
7072
[ASPEED_DEV_VIDEO] = 0x1E700000,
@@ -117,6 +119,7 @@ static const int aspeed_soc_ast2400_irqmap[] = {
117119
[ASPEED_DEV_ETH2] = 3,
118120
[ASPEED_DEV_XDMA] = 6,
119121
[ASPEED_DEV_SDHCI] = 26,
122+
[ASPEED_DEV_HACE] = 4,
120123
};
121124

122125
#define aspeed_soc_ast2500_irqmap aspeed_soc_ast2400_irqmap
@@ -196,7 +199,8 @@ static void aspeed_soc_init(Object *obj)
196199
TYPE_FTGMAC100);
197200
}
198201

199-
object_initialize_child(obj, "xdma", &s->xdma, TYPE_ASPEED_XDMA);
202+
snprintf(typename, sizeof(typename), TYPE_ASPEED_XDMA "-%s", socname);
203+
object_initialize_child(obj, "xdma", &s->xdma, typename);
200204

201205
snprintf(typename, sizeof(typename), "aspeed.gpio-%s", socname);
202206
object_initialize_child(obj, "gpio", &s->gpio, typename);
@@ -212,6 +216,9 @@ static void aspeed_soc_init(Object *obj)
212216
}
213217

214218
object_initialize_child(obj, "lpc", &s->lpc, TYPE_ASPEED_LPC);
219+
220+
snprintf(typename, sizeof(typename), "aspeed.hace-%s", socname);
221+
object_initialize_child(obj, "hace", &s->hace, typename);
215222
}
216223

217224
static void aspeed_soc_realize(DeviceState *dev, Error **errp)
@@ -301,10 +308,6 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
301308
/* FMC, The number of CS is set at the board level */
302309
object_property_set_link(OBJECT(&s->fmc), "dram", OBJECT(s->dram_mr),
303310
&error_abort);
304-
if (!object_property_set_int(OBJECT(&s->fmc), "sdram-base",
305-
sc->memmap[ASPEED_DEV_SDRAM], errp)) {
306-
return;
307-
}
308311
if (!sysbus_realize(SYS_BUS_DEVICE(&s->fmc), errp)) {
309312
return;
310313
}
@@ -425,6 +428,16 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
425428

426429
sysbus_connect_irq(SYS_BUS_DEVICE(&s->lpc), 1 + aspeed_lpc_kcs_4,
427430
qdev_get_gpio_in(DEVICE(&s->lpc), aspeed_lpc_kcs_4));
431+
432+
/* HACE */
433+
object_property_set_link(OBJECT(&s->hace), "dram", OBJECT(s->dram_mr),
434+
&error_abort);
435+
if (!sysbus_realize(SYS_BUS_DEVICE(&s->hace), errp)) {
436+
return;
437+
}
438+
sysbus_mmio_map(SYS_BUS_DEVICE(&s->hace), 0, sc->memmap[ASPEED_DEV_HACE]);
439+
sysbus_connect_irq(SYS_BUS_DEVICE(&s->hace), 0,
440+
aspeed_soc_get_irq(s, ASPEED_DEV_HACE));
428441
}
429442
static Property aspeed_soc_properties[] = {
430443
DEFINE_PROP_LINK("dram", AspeedSoCState, dram_mr, TYPE_MEMORY_REGION,

hw/block/m25p80.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,8 @@ static const FlashPartInfo known_devices[] = {
259259
{ INFO_STACKED("n25q00a", 0x20bb21, 0x1000, 64 << 10, 2048, ER_4K, 4) },
260260
{ INFO_STACKED("mt25ql01g", 0x20ba21, 0x1040, 64 << 10, 2048, ER_4K, 2) },
261261
{ INFO_STACKED("mt25qu01g", 0x20bb21, 0x1040, 64 << 10, 2048, ER_4K, 2) },
262+
{ INFO_STACKED("mt25ql02g", 0x20ba22, 0x1040, 64 << 10, 4096, ER_4K | ER_32K, 2) },
263+
{ INFO_STACKED("mt25qu02g", 0x20bb22, 0x1040, 64 << 10, 4096, ER_4K | ER_32K, 2) },
262264

263265
/* Spansion -- single (large) sector size only, at least
264266
* for the chips listed here (without boot sectors).

0 commit comments

Comments
 (0)