mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
aspeed: ast27x0: Map unimplemented devices in SoC memory
Maps following unimplemented devices in SoC memory - dpmcu - iomem - iomem0 - iomem1 - ltpi Iomem, Iomem0 and Iomem1 include unimplemented controllers in the memory ranges 0x0 - 0x1000000, 0x120000000 - 0x121000000 and 0x14000000 - 0x141000000. For instance: - USB hub at 0x12010000 - eSPI at 0x14C5000 - PWM at 0x140C0000 DPMCU stands for Display Port MCU controller. LTPI is used to connect to AST1700. AST1700 is an I/O expander that supports the DC-SCM 2.1 LTPI protocol. It provides AST2700 with additional GPIO, UART, I3C, and other interfaces. Signed-off-by: Steven Lee <steven_lee@aspeedtech.com> Change-Id: Iae4db49a4818af3e2c43c16a27fc76329d2405d6 Reviewed-by: Cédric Le Goater <clg@redhat.com> Link: https://lore.kernel.org/qemu-devel/20250502103449.3091642-2-steven_lee@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
d2b857ef9a
commit
91064bea6b
2 changed files with 51 additions and 7 deletions
|
@ -23,9 +23,17 @@
|
|||
#include "qobject/qlist.h"
|
||||
#include "qemu/log.h"
|
||||
|
||||
#define AST2700_SOC_IO_SIZE 0x01000000
|
||||
#define AST2700_SOC_IOMEM_SIZE 0x01000000
|
||||
#define AST2700_SOC_DPMCU_SIZE 0x00040000
|
||||
#define AST2700_SOC_LTPI_SIZE 0x01000000
|
||||
|
||||
static const hwaddr aspeed_soc_ast2700_memmap[] = {
|
||||
[ASPEED_DEV_IOMEM] = 0x00000000,
|
||||
[ASPEED_DEV_VBOOTROM] = 0x00000000,
|
||||
[ASPEED_DEV_SRAM] = 0x10000000,
|
||||
[ASPEED_DEV_DPMCU] = 0x11000000,
|
||||
[ASPEED_DEV_IOMEM0] = 0x12000000,
|
||||
[ASPEED_DEV_EHCI1] = 0x12061000,
|
||||
[ASPEED_DEV_EHCI2] = 0x12063000,
|
||||
[ASPEED_DEV_HACE] = 0x12070000,
|
||||
|
@ -39,6 +47,7 @@ static const hwaddr aspeed_soc_ast2700_memmap[] = {
|
|||
[ASPEED_DEV_TIMER1] = 0x12C10000,
|
||||
[ASPEED_DEV_SLI] = 0x12C17000,
|
||||
[ASPEED_DEV_UART4] = 0X12C1A000,
|
||||
[ASPEED_DEV_IOMEM1] = 0x14000000,
|
||||
[ASPEED_DEV_FMC] = 0x14000000,
|
||||
[ASPEED_DEV_SPI0] = 0x14010000,
|
||||
[ASPEED_DEV_SPI1] = 0x14020000,
|
||||
|
@ -73,6 +82,7 @@ static const hwaddr aspeed_soc_ast2700_memmap[] = {
|
|||
[ASPEED_DEV_UART12] = 0X14C33B00,
|
||||
[ASPEED_DEV_WDT] = 0x14C37000,
|
||||
[ASPEED_DEV_SPI_BOOT] = 0x100000000,
|
||||
[ASPEED_DEV_LTPI] = 0x300000000,
|
||||
[ASPEED_DEV_SDRAM] = 0x400000000,
|
||||
};
|
||||
|
||||
|
@ -507,6 +517,16 @@ static void aspeed_soc_ast2700_init(Object *obj)
|
|||
|
||||
snprintf(typename, sizeof(typename), "aspeed.hace-%s", socname);
|
||||
object_initialize_child(obj, "hace", &s->hace, typename);
|
||||
object_initialize_child(obj, "dpmcu", &s->dpmcu,
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(obj, "ltpi", &s->ltpi,
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(obj, "iomem", &s->iomem,
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(obj, "iomem0", &s->iomem0,
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
object_initialize_child(obj, "iomem1", &s->iomem1,
|
||||
TYPE_UNIMPLEMENTED_DEVICE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -542,8 +562,11 @@ static bool aspeed_soc_ast2700_gic_realize(DeviceState *dev, Error **errp)
|
|||
if (!sysbus_realize(gicbusdev, errp)) {
|
||||
return false;
|
||||
}
|
||||
sysbus_mmio_map(gicbusdev, 0, sc->memmap[ASPEED_GIC_DIST]);
|
||||
sysbus_mmio_map(gicbusdev, 1, sc->memmap[ASPEED_GIC_REDIST]);
|
||||
|
||||
aspeed_mmio_map(s, SYS_BUS_DEVICE(&a->gic), 0,
|
||||
sc->memmap[ASPEED_GIC_DIST]);
|
||||
aspeed_mmio_map(s, SYS_BUS_DEVICE(&a->gic), 1,
|
||||
sc->memmap[ASPEED_GIC_REDIST]);
|
||||
|
||||
for (i = 0; i < sc->num_cpus; i++) {
|
||||
DeviceState *cpudev = DEVICE(&a->cpu[i]);
|
||||
|
@ -911,11 +934,26 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
|
|||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->hace), 0,
|
||||
aspeed_soc_get_irq(s, ASPEED_DEV_HACE));
|
||||
|
||||
create_unimplemented_device("ast2700.dpmcu", 0x11000000, 0x40000);
|
||||
create_unimplemented_device("ast2700.iomem0", 0x12000000, 0x01000000);
|
||||
create_unimplemented_device("ast2700.iomem1", 0x14000000, 0x01000000);
|
||||
create_unimplemented_device("ast2700.ltpi", 0x30000000, 0x1000000);
|
||||
create_unimplemented_device("ast2700.io", 0x0, 0x4000000);
|
||||
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->dpmcu),
|
||||
"aspeed.dpmcu",
|
||||
sc->memmap[ASPEED_DEV_DPMCU],
|
||||
AST2700_SOC_DPMCU_SIZE);
|
||||
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->ltpi),
|
||||
"aspeed.ltpi",
|
||||
sc->memmap[ASPEED_DEV_LTPI],
|
||||
AST2700_SOC_LTPI_SIZE);
|
||||
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->iomem),
|
||||
"aspeed.io",
|
||||
sc->memmap[ASPEED_DEV_IOMEM],
|
||||
AST2700_SOC_IO_SIZE);
|
||||
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->iomem0),
|
||||
"aspeed.iomem0",
|
||||
sc->memmap[ASPEED_DEV_IOMEM0],
|
||||
AST2700_SOC_IOMEM_SIZE);
|
||||
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->iomem1),
|
||||
"aspeed.iomem1",
|
||||
sc->memmap[ASPEED_DEV_IOMEM1],
|
||||
AST2700_SOC_IOMEM_SIZE);
|
||||
}
|
||||
|
||||
static void aspeed_soc_ast2700a0_class_init(ObjectClass *oc, const void *data)
|
||||
|
|
|
@ -91,6 +91,8 @@ struct AspeedSoCState {
|
|||
SerialMM uart[ASPEED_UARTS_NUM];
|
||||
Clock *sysclk;
|
||||
UnimplementedDeviceState iomem;
|
||||
UnimplementedDeviceState iomem0;
|
||||
UnimplementedDeviceState iomem1;
|
||||
UnimplementedDeviceState video;
|
||||
UnimplementedDeviceState emmc_boot_controller;
|
||||
UnimplementedDeviceState dpmcu;
|
||||
|
@ -98,6 +100,7 @@ struct AspeedSoCState {
|
|||
UnimplementedDeviceState espi;
|
||||
UnimplementedDeviceState udc;
|
||||
UnimplementedDeviceState sgpiom;
|
||||
UnimplementedDeviceState ltpi;
|
||||
UnimplementedDeviceState jtag[ASPEED_JTAG_NUM];
|
||||
AspeedAPB2OPBState fsi[2];
|
||||
};
|
||||
|
@ -173,6 +176,9 @@ enum {
|
|||
ASPEED_DEV_VBOOTROM,
|
||||
ASPEED_DEV_SPI_BOOT,
|
||||
ASPEED_DEV_IOMEM,
|
||||
ASPEED_DEV_IOMEM0,
|
||||
ASPEED_DEV_IOMEM1,
|
||||
ASPEED_DEV_LTPI,
|
||||
ASPEED_DEV_UART0,
|
||||
ASPEED_DEV_UART1,
|
||||
ASPEED_DEV_UART2,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue