On Fri, Dec 10, 2021 at 10:05 PM Cédric Le Goater <c...@kaod.org> wrote: > > On 12/10/21 09:30, Troy Lee wrote: > > AST2600 Display Port MCU introduces 0x18000000~0x1803FFFF as it's memory > > and io address. If guest machine try to access DPMCU memory, it will > > cause a fatal error. > > The Aspeed SoCs have an "aspeed_soc.io" region for unimplemented devices > but it's too small. Anyhow, it is better to have per logic unit. We should > change that one day. > Good idea!
> For my information, which FW image are you using ? > We're using Aspeed's SDK image, I tested with ast2600-default machine. Prebuilt image can be download from: https://github.com/AspeedTech-BMC/openbmc/releases/tag/v07.02 Without declaring the DPMCU memory, the image will hangs in u-boot. We're still working on I3C and SPI issue to be resolved to get into rootfs. Thanks for your review. Troy Lee > > Signed-off-by: Troy Lee <troy_...@aspeedtech.com> > > Reviewed-by: Cédric Le Goater <c...@kaod.org> > > Thanks, > > C. > > > --- > > hw/arm/aspeed_ast2600.c | 8 ++++++++ > > include/hw/arm/aspeed_soc.h | 2 ++ > > 2 files changed, 10 insertions(+) > > > > diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c > > index 0384357a95..e33483fb5d 100644 > > --- a/hw/arm/aspeed_ast2600.c > > +++ b/hw/arm/aspeed_ast2600.c > > @@ -19,9 +19,11 @@ > > #include "sysemu/sysemu.h" > > > > #define ASPEED_SOC_IOMEM_SIZE 0x00200000 > > +#define ASPEED_SOC_DPMCU_SIZE 0x00040000 > > > > static const hwaddr aspeed_soc_ast2600_memmap[] = { > > [ASPEED_DEV_SRAM] = 0x10000000, > > + [ASPEED_DEV_DPMCU] = 0x18000000, > > /* 0x16000000 0x17FFFFFF : AHB BUS do LPC Bus bridge */ > > [ASPEED_DEV_IOMEM] = 0x1E600000, > > [ASPEED_DEV_PWM] = 0x1E610000, > > @@ -44,6 +46,7 @@ static const hwaddr aspeed_soc_ast2600_memmap[] = { > > [ASPEED_DEV_SCU] = 0x1E6E2000, > > [ASPEED_DEV_XDMA] = 0x1E6E7000, > > [ASPEED_DEV_ADC] = 0x1E6E9000, > > + [ASPEED_DEV_DP] = 0x1E6EB000, > > [ASPEED_DEV_VIDEO] = 0x1E700000, > > [ASPEED_DEV_SDHCI] = 0x1E740000, > > [ASPEED_DEV_EMMC] = 0x1E750000, > > @@ -104,6 +107,7 @@ static const int aspeed_soc_ast2600_irqmap[] = { > > [ASPEED_DEV_ETH3] = 32, > > [ASPEED_DEV_ETH4] = 33, > > [ASPEED_DEV_KCS] = 138, /* 138 -> 142 */ > > + [ASPEED_DEV_DP] = 62, > > }; > > > > static qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int ctrl) > > @@ -298,6 +302,10 @@ static void aspeed_soc_ast2600_realize(DeviceState > > *dev, Error **errp) > > memory_region_add_subregion(get_system_memory(), > > sc->memmap[ASPEED_DEV_SRAM], &s->sram); > > > > + /* DPMCU */ > > + create_unimplemented_device("aspeed.dpmcu", > > sc->memmap[ASPEED_DEV_DPMCU], > > + ASPEED_SOC_DPMCU_SIZE); > > + > > /* SCU */ > > if (!sysbus_realize(SYS_BUS_DEVICE(&s->scu), errp)) { > > return; > > diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h > > index 8139358549..18fb7eed46 100644 > > --- a/include/hw/arm/aspeed_soc.h > > +++ b/include/hw/arm/aspeed_soc.h > > @@ -139,6 +139,8 @@ enum { > > ASPEED_DEV_EMMC, > > ASPEED_DEV_KCS, > > ASPEED_DEV_HACE, > > + ASPEED_DEV_DPMCU, > > + ASPEED_DEV_DP, > > }; > > > > #endif /* ASPEED_SOC_H */ > > >