mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
aspeed: Refactor UART init for multi-SoC machines
This change moves the code that connects the SoC UART's to serial_hd's
to the machine.
It makes each UART a proper child member of the SoC, and then allows the
machine to selectively initialize the chardev for each UART with a
serial_hd.
This should preserve backwards compatibility, but also allow multi-SoC
boards to completely change the wiring of serial devices from the
command line to specific SoC UART's.
This also removes the uart-default property from the SoC, since the SoC
doesn't need to know what UART is the "default" on the machine anymore.
I tested this using the images and commands from the previous
refactoring, and another test image for the ast1030:
wget https://github.com/facebook/openbmc/releases/download/v2021.49.0/fuji.mtd
wget https://github.com/facebook/openbmc/releases/download/v2021.49.0/wedge100.mtd
wget https://github.com/peterdelevoryas/OpenBIC/releases/download/oby35-cl-2022.13.01/Y35BCL.elf
Fuji uses UART1:
qemu-system-arm -machine fuji-bmc \
-drive file=fuji.mtd,format=raw,if=mtd \
-nographic
ast2600-evb uses uart-default=UART5:
qemu-system-arm -machine ast2600-evb \
-drive file=fuji.mtd,format=raw,if=mtd \
-serial null -serial mon:stdio -display none
Wedge100 uses UART3:
qemu-system-arm -machine palmetto-bmc \
-drive file=wedge100.mtd,format=raw,if=mtd \
-serial null -serial null -serial null \
-serial mon:stdio -display none
AST1030 EVB uses UART5:
qemu-system-arm -machine ast1030-evb \
-kernel Y35BCL.elf -nographic
Fixes: 6827ff20b2
("hw: aspeed: Init all UART's with serial devices")
Signed-off-by: Peter Delevoryas <peter@pjd.dev>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20220705191400.41632-4-peter@pjd.dev>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
72a7c47393
commit
d2b3eaefb4
5 changed files with 70 additions and 23 deletions
|
@ -214,6 +214,10 @@ static void aspeed_soc_ast2600_init(Object *obj)
|
|||
object_initialize_child(obj, "mii[*]", &s->mii[i], TYPE_ASPEED_MII);
|
||||
}
|
||||
|
||||
for (i = 0; i < sc->uarts_num; i++) {
|
||||
object_initialize_child(obj, "uart[*]", &s->uart[i], TYPE_SERIAL_MM);
|
||||
}
|
||||
|
||||
snprintf(typename, sizeof(typename), TYPE_ASPEED_XDMA "-%s", socname);
|
||||
object_initialize_child(obj, "xdma", &s->xdma, typename);
|
||||
|
||||
|
@ -386,7 +390,9 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
|||
aspeed_soc_get_irq(s, ASPEED_DEV_ADC));
|
||||
|
||||
/* UART */
|
||||
aspeed_soc_uart_init(s);
|
||||
if (!aspeed_soc_uart_realize(s, errp)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* I2C */
|
||||
object_property_set_link(OBJECT(&s->i2c), "dram", OBJECT(s->dram_mr),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue