hw/arm/aspeed_ast10x0: Add various unimplemented peripherals
Based on booting Zephyr demo from [1] running QEMU with '-d unimp' and checking missing devices in [2]. [1] https://github.com/AspeedTech-BMC/zephyr/releases/tag/v00.01.07 [2] https://github.com/AspeedTech-BMC/zephyr/blob/v00.01.08/dts/arm/aspeed/ast10x0.dtsi Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Peter Delevoryas <peter@pjd.dev> Reviewed-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
ed5d9774c6
commit
72006c619f
|
@ -27,10 +27,15 @@ static const hwaddr aspeed_soc_ast1030_memmap[] = {
|
||||||
[ASPEED_DEV_FMC] = 0x7E620000,
|
[ASPEED_DEV_FMC] = 0x7E620000,
|
||||||
[ASPEED_DEV_SPI1] = 0x7E630000,
|
[ASPEED_DEV_SPI1] = 0x7E630000,
|
||||||
[ASPEED_DEV_SPI2] = 0x7E640000,
|
[ASPEED_DEV_SPI2] = 0x7E640000,
|
||||||
|
[ASPEED_DEV_UDC] = 0x7E6A2000,
|
||||||
[ASPEED_DEV_SCU] = 0x7E6E2000,
|
[ASPEED_DEV_SCU] = 0x7E6E2000,
|
||||||
|
[ASPEED_DEV_JTAG0] = 0x7E6E4000,
|
||||||
|
[ASPEED_DEV_JTAG1] = 0x7E6E4100,
|
||||||
[ASPEED_DEV_ADC] = 0x7E6E9000,
|
[ASPEED_DEV_ADC] = 0x7E6E9000,
|
||||||
|
[ASPEED_DEV_ESPI] = 0x7E6EE000,
|
||||||
[ASPEED_DEV_SBC] = 0x7E6F2000,
|
[ASPEED_DEV_SBC] = 0x7E6F2000,
|
||||||
[ASPEED_DEV_GPIO] = 0x7E780000,
|
[ASPEED_DEV_GPIO] = 0x7E780000,
|
||||||
|
[ASPEED_DEV_SGPIOM] = 0x7E780500,
|
||||||
[ASPEED_DEV_TIMER1] = 0x7E782000,
|
[ASPEED_DEV_TIMER1] = 0x7E782000,
|
||||||
[ASPEED_DEV_UART1] = 0x7E783000,
|
[ASPEED_DEV_UART1] = 0x7E783000,
|
||||||
[ASPEED_DEV_UART2] = 0x7E78D000,
|
[ASPEED_DEV_UART2] = 0x7E78D000,
|
||||||
|
@ -78,12 +83,17 @@ static const int aspeed_soc_ast1030_irqmap[] = {
|
||||||
[ASPEED_DEV_LPC] = 35,
|
[ASPEED_DEV_LPC] = 35,
|
||||||
[ASPEED_DEV_PECI] = 38,
|
[ASPEED_DEV_PECI] = 38,
|
||||||
[ASPEED_DEV_FMC] = 39,
|
[ASPEED_DEV_FMC] = 39,
|
||||||
|
[ASPEED_DEV_ESPI] = 42,
|
||||||
[ASPEED_DEV_PWM] = 44,
|
[ASPEED_DEV_PWM] = 44,
|
||||||
[ASPEED_DEV_ADC] = 46,
|
[ASPEED_DEV_ADC] = 46,
|
||||||
[ASPEED_DEV_SPI1] = 65,
|
[ASPEED_DEV_SPI1] = 65,
|
||||||
[ASPEED_DEV_SPI2] = 66,
|
[ASPEED_DEV_SPI2] = 66,
|
||||||
[ASPEED_DEV_I2C] = 110, /* 110 ~ 123 */
|
[ASPEED_DEV_I2C] = 110, /* 110 ~ 123 */
|
||||||
[ASPEED_DEV_KCS] = 138, /* 138 -> 142 */
|
[ASPEED_DEV_KCS] = 138, /* 138 -> 142 */
|
||||||
|
[ASPEED_DEV_UDC] = 9,
|
||||||
|
[ASPEED_DEV_SGPIOM] = 51,
|
||||||
|
[ASPEED_DEV_JTAG0] = 27,
|
||||||
|
[ASPEED_DEV_JTAG1] = 53,
|
||||||
};
|
};
|
||||||
|
|
||||||
static qemu_irq aspeed_soc_ast1030_get_irq(AspeedSoCState *s, int dev)
|
static qemu_irq aspeed_soc_ast1030_get_irq(AspeedSoCState *s, int dev)
|
||||||
|
@ -154,6 +164,15 @@ static void aspeed_soc_ast1030_init(Object *obj)
|
||||||
object_initialize_child(obj, "iomem", &s->iomem, TYPE_UNIMPLEMENTED_DEVICE);
|
object_initialize_child(obj, "iomem", &s->iomem, TYPE_UNIMPLEMENTED_DEVICE);
|
||||||
object_initialize_child(obj, "sbc-unimplemented", &s->sbc_unimplemented,
|
object_initialize_child(obj, "sbc-unimplemented", &s->sbc_unimplemented,
|
||||||
TYPE_UNIMPLEMENTED_DEVICE);
|
TYPE_UNIMPLEMENTED_DEVICE);
|
||||||
|
object_initialize_child(obj, "pwm", &s->pwm, TYPE_UNIMPLEMENTED_DEVICE);
|
||||||
|
object_initialize_child(obj, "espi", &s->espi, TYPE_UNIMPLEMENTED_DEVICE);
|
||||||
|
object_initialize_child(obj, "udc", &s->udc, TYPE_UNIMPLEMENTED_DEVICE);
|
||||||
|
object_initialize_child(obj, "sgpiom", &s->sgpiom,
|
||||||
|
TYPE_UNIMPLEMENTED_DEVICE);
|
||||||
|
object_initialize_child(obj, "jtag[0]", &s->jtag[0],
|
||||||
|
TYPE_UNIMPLEMENTED_DEVICE);
|
||||||
|
object_initialize_child(obj, "jtag[1]", &s->jtag[1],
|
||||||
|
TYPE_UNIMPLEMENTED_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void aspeed_soc_ast1030_realize(DeviceState *dev_soc, Error **errp)
|
static void aspeed_soc_ast1030_realize(DeviceState *dev_soc, Error **errp)
|
||||||
|
@ -336,6 +355,22 @@ static void aspeed_soc_ast1030_realize(DeviceState *dev_soc, Error **errp)
|
||||||
sc->memmap[ASPEED_DEV_GPIO]);
|
sc->memmap[ASPEED_DEV_GPIO]);
|
||||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio), 0,
|
sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio), 0,
|
||||||
aspeed_soc_get_irq(s, ASPEED_DEV_GPIO));
|
aspeed_soc_get_irq(s, ASPEED_DEV_GPIO));
|
||||||
|
|
||||||
|
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->pwm), "aspeed.pwm",
|
||||||
|
sc->memmap[ASPEED_DEV_PWM], 0x100);
|
||||||
|
|
||||||
|
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->espi), "aspeed.espi",
|
||||||
|
sc->memmap[ASPEED_DEV_ESPI], 0x800);
|
||||||
|
|
||||||
|
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->udc), "aspeed.udc",
|
||||||
|
sc->memmap[ASPEED_DEV_UDC], 0x1000);
|
||||||
|
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->sgpiom), "aspeed.sgpiom",
|
||||||
|
sc->memmap[ASPEED_DEV_SGPIOM], 0x100);
|
||||||
|
|
||||||
|
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->jtag[0]), "aspeed.jtag",
|
||||||
|
sc->memmap[ASPEED_DEV_JTAG0], 0x20);
|
||||||
|
aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->jtag[1]), "aspeed.jtag",
|
||||||
|
sc->memmap[ASPEED_DEV_JTAG1], 0x20);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void aspeed_soc_ast1030_class_init(ObjectClass *klass, void *data)
|
static void aspeed_soc_ast1030_class_init(ObjectClass *klass, void *data)
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
#define ASPEED_CPUS_NUM 2
|
#define ASPEED_CPUS_NUM 2
|
||||||
#define ASPEED_MACS_NUM 4
|
#define ASPEED_MACS_NUM 4
|
||||||
#define ASPEED_UARTS_NUM 13
|
#define ASPEED_UARTS_NUM 13
|
||||||
|
#define ASPEED_JTAG_NUM 2
|
||||||
|
|
||||||
struct AspeedSoCState {
|
struct AspeedSoCState {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
|
@ -87,6 +88,11 @@ struct AspeedSoCState {
|
||||||
UnimplementedDeviceState video;
|
UnimplementedDeviceState video;
|
||||||
UnimplementedDeviceState emmc_boot_controller;
|
UnimplementedDeviceState emmc_boot_controller;
|
||||||
UnimplementedDeviceState dpmcu;
|
UnimplementedDeviceState dpmcu;
|
||||||
|
UnimplementedDeviceState pwm;
|
||||||
|
UnimplementedDeviceState espi;
|
||||||
|
UnimplementedDeviceState udc;
|
||||||
|
UnimplementedDeviceState sgpiom;
|
||||||
|
UnimplementedDeviceState jtag[ASPEED_JTAG_NUM];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TYPE_ASPEED_SOC "aspeed-soc"
|
#define TYPE_ASPEED_SOC "aspeed-soc"
|
||||||
|
@ -174,6 +180,11 @@ enum {
|
||||||
ASPEED_DEV_DPMCU,
|
ASPEED_DEV_DPMCU,
|
||||||
ASPEED_DEV_DP,
|
ASPEED_DEV_DP,
|
||||||
ASPEED_DEV_I3C,
|
ASPEED_DEV_I3C,
|
||||||
|
ASPEED_DEV_ESPI,
|
||||||
|
ASPEED_DEV_UDC,
|
||||||
|
ASPEED_DEV_SGPIOM,
|
||||||
|
ASPEED_DEV_JTAG0,
|
||||||
|
ASPEED_DEV_JTAG1,
|
||||||
};
|
};
|
||||||
|
|
||||||
qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int dev);
|
qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int dev);
|
||||||
|
|
Loading…
Reference in New Issue