|
@@ -76,6 +76,8 @@ static const hwaddr aspeed_soc_ast2600_memmap[] = {
|
|
|
[ASPEED_DEV_UART12] = 0x1E790600,
|
|
|
[ASPEED_DEV_UART13] = 0x1E790700,
|
|
|
[ASPEED_DEV_VUART] = 0x1E787000,
|
|
|
+ [ASPEED_DEV_FSI1] = 0x1E79B000,
|
|
|
+ [ASPEED_DEV_FSI2] = 0x1E79B100,
|
|
|
[ASPEED_DEV_I3C] = 0x1E7A0000,
|
|
|
[ASPEED_DEV_SDRAM] = 0x80000000,
|
|
|
};
|
|
@@ -133,6 +135,8 @@ static const int aspeed_soc_ast2600_irqmap[] = {
|
|
|
[ASPEED_DEV_ETH4] = 33,
|
|
|
[ASPEED_DEV_KCS] = 138, /* 138 -> 142 */
|
|
|
[ASPEED_DEV_DP] = 62,
|
|
|
+ [ASPEED_DEV_FSI1] = 100,
|
|
|
+ [ASPEED_DEV_FSI2] = 101,
|
|
|
[ASPEED_DEV_I3C] = 102, /* 102 -> 107 */
|
|
|
};
|
|
|
|
|
@@ -266,6 +270,10 @@ static void aspeed_soc_ast2600_init(Object *obj)
|
|
|
object_initialize_child(obj, "emmc-boot-controller",
|
|
|
&s->emmc_boot_controller,
|
|
|
TYPE_UNIMPLEMENTED_DEVICE);
|
|
|
+
|
|
|
+ for (i = 0; i < ASPEED_FSI_NUM; i++) {
|
|
|
+ object_initialize_child(obj, "fsi[*]", &s->fsi[i], TYPE_ASPEED_APB2OPB);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -625,6 +633,17 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
|
|
return;
|
|
|
}
|
|
|
aspeed_mmio_map(s, SYS_BUS_DEVICE(&s->sbc), 0, sc->memmap[ASPEED_DEV_SBC]);
|
|
|
+
|
|
|
+ /* FSI */
|
|
|
+ for (i = 0; i < ASPEED_FSI_NUM; i++) {
|
|
|
+ if (!sysbus_realize(SYS_BUS_DEVICE(&s->fsi[i]), errp)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ aspeed_mmio_map(s, SYS_BUS_DEVICE(&s->fsi[i]), 0,
|
|
|
+ sc->memmap[ASPEED_DEV_FSI1 + i]);
|
|
|
+ sysbus_connect_irq(SYS_BUS_DEVICE(&s->fsi[i]), 0,
|
|
|
+ aspeed_soc_get_irq(s, ASPEED_DEV_FSI1 + i));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void aspeed_soc_ast2600_class_init(ObjectClass *oc, void *data)
|