[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH 2/5] aspeed: ast27x0: Map unimplemented devices in SoC memory
From: |
Steven Lee |
Subject: |
RE: [PATCH 2/5] aspeed: ast27x0: Map unimplemented devices in SoC memory |
Date: |
Fri, 3 Jan 2025 08:14:35 +0000 |
Hi Cédric,
> -----Original Message-----
> From: Cédric Le Goater <clg@kaod.org>
> Sent: Friday, December 27, 2024 5:53 PM
> To: Steven Lee <steven_lee@aspeedtech.com>; Peter Maydell
> <peter.maydell@linaro.org>; Troy Lee <leetroy@gmail.com>; Jamin Lin
> <jamin_lin@aspeedtech.com>; Andrew Jeffery
> <andrew@codeconstruct.com.au>; Joel Stanley <joel@jms.id.au>; open
> list:ASPEED BMCs <qemu-arm@nongnu.org>; open list:All patches CC here
> <qemu-devel@nongnu.org>
> Cc: Troy Lee <troy_lee@aspeedtech.com>; Yunlin Tang
> <yunlin.tang@aspeedtech.com>
> Subject: Re: [PATCH 2/5] aspeed: ast27x0: Map unimplemented devices in SoC
> memory
>
> Hello,
>
> On 12/25/24 03:03, Steven Lee wrote:
> > Maps following unimplemented devices in SoC memory
> > - dpmcu
> > - iomem0
> > - iomem1
> > - ltpi
> > - io
>
> Could you please add a sentence about what these devices are ?
>
> Thanks,
>
> C.
>
DPMCU stands for Display Port MCU controller.
Regarding LTPI, when the AST1700 is connected to the AST2700, AST1070 LTPI
controller's registers are mapped to 0x30000000.
Io, Iomem0 and Iomem1 include unimplemented controllers in the memory ranges
0x120000000 - 0x121000000 and 0x14000000 - 0x141000000.
For instance:
- USB hub at 0x12010000
- eSPI at 0x14C5000
- PWM at 0x140C0000
I will include the description in the commit message.
Thanks,
Steven
>
> > Signed-off-by: Steven Lee <steven_lee@aspeedtech.com>
> > ---
> > hw/arm/aspeed_ast27x0.c | 45
> +++++++++++++++++++++++++++++++------
> > include/hw/arm/aspeed_soc.h | 6 +++++
> > 2 files changed, 44 insertions(+), 7 deletions(-)
> >
> > diff --git a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c index
> > fee3755837..fd09872403 100644
> > --- a/hw/arm/aspeed_ast27x0.c
> > +++ b/hw/arm/aspeed_ast27x0.c
> > @@ -23,11 +23,19 @@
> > #include "qapi/qmp/qlist.h"
> > #include "qemu/log.h"
> >
> > +#define AST2700_SOC_IO_SIZE 0x04000000
> > +#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_SPI_BOOT] = 0x400000000,
> > + [ASPEED_DEV_IOMEM] = 0x00000000,
> > [ASPEED_DEV_SRAM] = 0x10000000,
> > + [ASPEED_DEV_IOMEM0] = 0x12000000,
> > [ASPEED_DEV_SDMC] = 0x12C00000,
> > [ASPEED_DEV_SCU] = 0x12C02000,
> > + [ASPEED_DEV_IOMEM1] = 0x14000000,
> > [ASPEED_DEV_SCUIO] = 0x14C02000,
> > [ASPEED_DEV_UART0] = 0X14C33000,
> > [ASPEED_DEV_UART1] = 0X14C33100,
> > @@ -66,6 +74,7 @@ static const hwaddr aspeed_soc_ast2700_memmap[] =
> {
> > [ASPEED_DEV_GPIO] = 0x14C0B000,
> > [ASPEED_DEV_RTC] = 0x12C0F000,
> > [ASPEED_DEV_SDHCI] = 0x14080000,
> > + [ASPEED_DEV_LTPI] = 0x30000000,
> > };
> >
> > #define AST2700_MAX_IRQ 256
> > @@ -397,6 +406,14 @@ static void aspeed_soc_ast2700_init(Object *obj)
> >
> > object_initialize_child(obj, "emmc-controller.sdhci",
> &s->emmc.slots[0],
> > TYPE_SYSBUS_SDHCI);
> > +
> > + object_initialize_child(obj, "dpmcu", &s->dpmcu,
> TYPE_UNIMPLEMENTED_DEVICE);
> > + object_initialize_child(obj, "ltpi", &s->ltpi,
> TYPE_UNIMPLEMENTED_DEVICE);
> > + object_initialize_child(obj, "io", &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);
> > }
> >
> > /*
> > @@ -432,8 +449,10 @@ 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]); @@ -716,11
> +735,23
> > @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
> > 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);
> > - 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_ast2700_class_init(ObjectClass *oc, void
> > *data) diff --git a/include/hw/arm/aspeed_soc.h
> > b/include/hw/arm/aspeed_soc.h index 689f52dae8..bf885da3fc 100644
> > --- a/include/hw/arm/aspeed_soc.h
> > +++ b/include/hw/arm/aspeed_soc.h
> > @@ -90,6 +90,8 @@ struct AspeedSoCState {
> > SerialMM uart[ASPEED_UARTS_NUM];
> > Clock *sysclk;
> > UnimplementedDeviceState iomem;
> > + UnimplementedDeviceState iomem0;
> > + UnimplementedDeviceState iomem1;
> > UnimplementedDeviceState video;
> > UnimplementedDeviceState emmc_boot_controller;
> > UnimplementedDeviceState dpmcu;
> > @@ -97,6 +99,7 @@ struct AspeedSoCState {
> > UnimplementedDeviceState espi;
> > UnimplementedDeviceState udc;
> > UnimplementedDeviceState sgpiom;
> > + UnimplementedDeviceState ltpi;
> > UnimplementedDeviceState jtag[ASPEED_JTAG_NUM];
> > AspeedAPB2OPBState fsi[2];
> > };
> > @@ -172,6 +175,9 @@ const char *aspeed_soc_cpu_type(AspeedSoCClass
> *sc);
> > enum {
> > 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,
- RE: [PATCH 2/5] aspeed: ast27x0: Map unimplemented devices in SoC memory,
Steven Lee <=