* [v0 0/2] uart base and hardcode boot address 0 @ 2024-02-05 9:14 Jamin Lin via 2024-02-05 9:14 ` [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base Jamin Lin via ` (2 more replies) 0 siblings, 3 replies; 19+ messages in thread From: Jamin Lin via @ 2024-02-05 9:14 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee, jamin_lin v0: 1. support uart controller both 0 and 1 base 2. fix hardcode boot address 0 Jamin Lin (2): aspeed: support uart controller both 0 and 1 base aspeed: fix hardcode boot address 0 hw/arm/aspeed.c | 12 ++++++++---- hw/arm/aspeed_ast10x0.c | 1 + hw/arm/aspeed_ast2400.c | 2 ++ hw/arm/aspeed_ast2600.c | 1 + hw/arm/aspeed_soc_common.c | 4 ++-- include/hw/arm/aspeed_soc.h | 1 + 6 files changed, 15 insertions(+), 6 deletions(-) -- 2.34.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-05 9:14 [v0 0/2] uart base and hardcode boot address 0 Jamin Lin via @ 2024-02-05 9:14 ` Jamin Lin via 2024-02-05 10:46 ` Cédric Le Goater 2024-02-06 17:36 ` Cédric Le Goater 2024-02-05 9:14 ` [PATCH v0 2/2] aspeed: fix hardcode boot address 0 Jamin Lin via 2024-02-06 16:47 ` [v0 0/2] uart base and " Cédric Le Goater 2 siblings, 2 replies; 19+ messages in thread From: Jamin Lin via @ 2024-02-05 9:14 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee, jamin_lin According to the design of ASPEED SOCS, the uart controller is 1 base for ast10x0, ast2600, ast2500 and ast2400. However, the uart controller is 0 base for ast2700. To support uart controller both 0 and 1 base, adds uasrt_bases parameter in AspeedSoCClass and set the default uart controller 1 base for ast10x0, astt2600, ast2500 and ast2400. From datasheet description ast2700: Base Address of UART0 = 0x14c33000 ast1030: Base Address of UART1 = 0x7e783000 ast2600: Base Address of UART1 = 0x1E78 3000 ast2500: Base Address of UART1 = 0x1E78 3000 Signed-off-by: Troy Lee <troy_lee@aspeedtech.com> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> --- hw/arm/aspeed.c | 8 +++++--- hw/arm/aspeed_ast10x0.c | 1 + hw/arm/aspeed_ast2400.c | 2 ++ hw/arm/aspeed_ast2600.c | 1 + hw/arm/aspeed_soc_common.c | 4 ++-- include/hw/arm/aspeed_soc.h | 1 + 6 files changed, 12 insertions(+), 5 deletions(-) diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 09b1e823ba..218b81298e 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -342,7 +342,7 @@ static void connect_serial_hds_to_uarts(AspeedMachineState *bmc) int uart_chosen = bmc->uart_chosen ? bmc->uart_chosen : amc->uart_default; aspeed_soc_uart_set_chr(s, uart_chosen, serial_hd(0)); - for (int i = 1, uart = ASPEED_DEV_UART1; i < sc->uarts_num; i++, uart++) { + for (int i = 1, uart = sc->uarts_base; i < sc->uarts_num; i++, uart++) { if (uart == uart_chosen) { continue; } @@ -1092,9 +1092,11 @@ static char *aspeed_get_bmc_console(Object *obj, Error **errp) { AspeedMachineState *bmc = ASPEED_MACHINE(obj); AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(bmc); + AspeedSoCClass *sc = ASPEED_SOC_CLASS(obj); + int uart_chosen = bmc->uart_chosen ? bmc->uart_chosen : amc->uart_default; - return g_strdup_printf("uart%d", uart_chosen - ASPEED_DEV_UART1 + 1); + return g_strdup_printf("uart%d", uart_chosen - sc->uarts_base + 1); } static void aspeed_set_bmc_console(Object *obj, const char *value, Error **errp) @@ -1114,7 +1116,7 @@ static void aspeed_set_bmc_console(Object *obj, const char *value, Error **errp) error_setg(errp, "\"uart\" should be in range [1 - %d]", sc->uarts_num); return; } - bmc->uart_chosen = ASPEED_DEV_UART1 + val - 1; + bmc->uart_chosen = sc->uarts_base + val - 1; } static void aspeed_machine_class_props_init(ObjectClass *oc) diff --git a/hw/arm/aspeed_ast10x0.c b/hw/arm/aspeed_ast10x0.c index c3b5116a6a..2634e0f654 100644 --- a/hw/arm/aspeed_ast10x0.c +++ b/hw/arm/aspeed_ast10x0.c @@ -436,6 +436,7 @@ static void aspeed_soc_ast1030_class_init(ObjectClass *klass, void *data) sc->wdts_num = 4; sc->macs_num = 1; sc->uarts_num = 13; + sc->uarts_base = ASPEED_DEV_UART1; sc->irqmap = aspeed_soc_ast1030_irqmap; sc->memmap = aspeed_soc_ast1030_memmap; sc->num_cpus = 1; diff --git a/hw/arm/aspeed_ast2400.c b/hw/arm/aspeed_ast2400.c index 8829561bb6..95da85fee0 100644 --- a/hw/arm/aspeed_ast2400.c +++ b/hw/arm/aspeed_ast2400.c @@ -523,6 +523,7 @@ static void aspeed_soc_ast2400_class_init(ObjectClass *oc, void *data) sc->wdts_num = 2; sc->macs_num = 2; sc->uarts_num = 5; + sc->uarts_base = ASPEED_DEV_UART1; sc->irqmap = aspeed_soc_ast2400_irqmap; sc->memmap = aspeed_soc_ast2400_memmap; sc->num_cpus = 1; @@ -551,6 +552,7 @@ static void aspeed_soc_ast2500_class_init(ObjectClass *oc, void *data) sc->wdts_num = 3; sc->macs_num = 2; sc->uarts_num = 5; + sc->uarts_base = ASPEED_DEV_UART1; sc->irqmap = aspeed_soc_ast2500_irqmap; sc->memmap = aspeed_soc_ast2500_memmap; sc->num_cpus = 1; diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c index 4ee32ea99d..f74561ecdc 100644 --- a/hw/arm/aspeed_ast2600.c +++ b/hw/arm/aspeed_ast2600.c @@ -666,6 +666,7 @@ static void aspeed_soc_ast2600_class_init(ObjectClass *oc, void *data) sc->wdts_num = 4; sc->macs_num = 4; sc->uarts_num = 13; + sc->uarts_base = ASPEED_DEV_UART1; sc->irqmap = aspeed_soc_ast2600_irqmap; sc->memmap = aspeed_soc_ast2600_memmap; sc->num_cpus = 2; diff --git a/hw/arm/aspeed_soc_common.c b/hw/arm/aspeed_soc_common.c index 123a0c432c..3963436c3a 100644 --- a/hw/arm/aspeed_soc_common.c +++ b/hw/arm/aspeed_soc_common.c @@ -36,7 +36,7 @@ bool aspeed_soc_uart_realize(AspeedSoCState *s, Error **errp) AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s); SerialMM *smm; - for (int i = 0, uart = ASPEED_DEV_UART1; i < sc->uarts_num; i++, uart++) { + for (int i = 0, uart = sc->uarts_base; i < sc->uarts_num; i++, uart++) { smm = &s->uart[i]; /* Chardev property is set by the machine. */ @@ -58,7 +58,7 @@ bool aspeed_soc_uart_realize(AspeedSoCState *s, Error **errp) void aspeed_soc_uart_set_chr(AspeedSoCState *s, int dev, Chardev *chr) { AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s); - int i = dev - ASPEED_DEV_UART1; + int i = dev - sc->uarts_base; g_assert(0 <= i && i < ARRAY_SIZE(s->uart) && i < sc->uarts_num); qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", chr); diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h index 9d0af84a8c..ce2bb51682 100644 --- a/include/hw/arm/aspeed_soc.h +++ b/include/hw/arm/aspeed_soc.h @@ -140,6 +140,7 @@ struct AspeedSoCClass { int wdts_num; int macs_num; int uarts_num; + int uarts_base; const int *irqmap; const hwaddr *memmap; uint32_t num_cpus; -- 2.34.1 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-05 9:14 ` [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base Jamin Lin via @ 2024-02-05 10:46 ` Cédric Le Goater 2024-02-05 13:15 ` Philippe Mathieu-Daudé 2024-02-05 14:25 ` Cédric Le Goater 2024-02-06 17:36 ` Cédric Le Goater 1 sibling, 2 replies; 19+ messages in thread From: Cédric Le Goater @ 2024-02-05 10:46 UTC (permalink / raw) To: Jamin Lin, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee Hello Jamin, On 2/5/24 10:14, Jamin Lin wrote: > According to the design of ASPEED SOCS, the uart controller > is 1 base for ast10x0, ast2600, ast2500 and ast2400. > > However, the uart controller is 0 base for ast2700. > To support uart controller both 0 and 1 base, > adds uasrt_bases parameter in AspeedSoCClass > and set the default uart controller 1 base > for ast10x0, astt2600, ast2500 and ast2400. The board definition can set 'amc->uart_default' to choose a different default serial port for the console, or use the "bmc-console" machine option . Isn't it enough ? May be I am misunderstanding the need. To clarify, ASPEED_DEV_UART1 is in the first serial port on the boards. I think we chose to start the indexing at 1 because the Aspeed QEMU modeling began first with the UART model (console) and for simplicity, we copied the definitions of the device tree from Linux : serial0 = &uart1; serial1 = &uart2; serial2 = &uart3; serial3 = &uart4; serial4 = &uart5; serial5 = &vuart; We replicated this indexing starting at 1 to nearly all device models : ASPEED_DEV_UART1 - 13 ASPEED_DEV_SPI1 -2 ASPEED_DEV_EHCI1 -2 ASPEED_DEV_TIMER1 - 8 ASPEED_DEV_ETH1 -4 ASPEED_DEV_MII1 - 4 ASPEED_DEV_JTAG0 - 1 <--- !! ASPEED_DEV_FSI1 - 2 I don't know what would be ASPEED_DEV_UART0 in this context. May be you could send a simplified AST2700 SoC model with definitions of a minimum address space and IRQ space ? Or you could change the indexing to start at 0 if you prefer. Just be careful with the aspeed_set/get_bmc_console routines it you choose to. Thanks, C. > From datasheet description > ast2700: > Base Address of UART0 = 0x14c33000 > ast1030: > Base Address of UART1 = 0x7e783000 > ast2600: > Base Address of UART1 = 0x1E78 3000 > ast2500: > Base Address of UART1 = 0x1E78 3000 > > Signed-off-by: Troy Lee <troy_lee@aspeedtech.com> > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> > --- > hw/arm/aspeed.c | 8 +++++--- > hw/arm/aspeed_ast10x0.c | 1 + > hw/arm/aspeed_ast2400.c | 2 ++ > hw/arm/aspeed_ast2600.c | 1 + > hw/arm/aspeed_soc_common.c | 4 ++-- > include/hw/arm/aspeed_soc.h | 1 + > 6 files changed, 12 insertions(+), 5 deletions(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 09b1e823ba..218b81298e 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -342,7 +342,7 @@ static void connect_serial_hds_to_uarts(AspeedMachineState *bmc) > int uart_chosen = bmc->uart_chosen ? bmc->uart_chosen : amc->uart_default; > > aspeed_soc_uart_set_chr(s, uart_chosen, serial_hd(0)); > - for (int i = 1, uart = ASPEED_DEV_UART1; i < sc->uarts_num; i++, uart++) { > + for (int i = 1, uart = sc->uarts_base; i < sc->uarts_num; i++, uart++) { > if (uart == uart_chosen) { > continue; > } > @@ -1092,9 +1092,11 @@ static char *aspeed_get_bmc_console(Object *obj, Error **errp) > { > AspeedMachineState *bmc = ASPEED_MACHINE(obj); > AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(bmc); > + AspeedSoCClass *sc = ASPEED_SOC_CLASS(obj); > + > int uart_chosen = bmc->uart_chosen ? bmc->uart_chosen : amc->uart_default; > > - return g_strdup_printf("uart%d", uart_chosen - ASPEED_DEV_UART1 + 1); > + return g_strdup_printf("uart%d", uart_chosen - sc->uarts_base + 1); > } > > static void aspeed_set_bmc_console(Object *obj, const char *value, Error **errp) > @@ -1114,7 +1116,7 @@ static void aspeed_set_bmc_console(Object *obj, const char *value, Error **errp) > error_setg(errp, "\"uart\" should be in range [1 - %d]", sc->uarts_num); > return; > } > - bmc->uart_chosen = ASPEED_DEV_UART1 + val - 1; > + bmc->uart_chosen = sc->uarts_base + val - 1; > } > > static void aspeed_machine_class_props_init(ObjectClass *oc) > diff --git a/hw/arm/aspeed_ast10x0.c b/hw/arm/aspeed_ast10x0.c > index c3b5116a6a..2634e0f654 100644 > --- a/hw/arm/aspeed_ast10x0.c > +++ b/hw/arm/aspeed_ast10x0.c > @@ -436,6 +436,7 @@ static void aspeed_soc_ast1030_class_init(ObjectClass *klass, void *data) > sc->wdts_num = 4; > sc->macs_num = 1; > sc->uarts_num = 13; > + sc->uarts_base = ASPEED_DEV_UART1; > sc->irqmap = aspeed_soc_ast1030_irqmap; > sc->memmap = aspeed_soc_ast1030_memmap; > sc->num_cpus = 1; > diff --git a/hw/arm/aspeed_ast2400.c b/hw/arm/aspeed_ast2400.c > index 8829561bb6..95da85fee0 100644 > --- a/hw/arm/aspeed_ast2400.c > +++ b/hw/arm/aspeed_ast2400.c > @@ -523,6 +523,7 @@ static void aspeed_soc_ast2400_class_init(ObjectClass *oc, void *data) > sc->wdts_num = 2; > sc->macs_num = 2; > sc->uarts_num = 5; > + sc->uarts_base = ASPEED_DEV_UART1; > sc->irqmap = aspeed_soc_ast2400_irqmap; > sc->memmap = aspeed_soc_ast2400_memmap; > sc->num_cpus = 1; > @@ -551,6 +552,7 @@ static void aspeed_soc_ast2500_class_init(ObjectClass *oc, void *data) > sc->wdts_num = 3; > sc->macs_num = 2; > sc->uarts_num = 5; > + sc->uarts_base = ASPEED_DEV_UART1; > sc->irqmap = aspeed_soc_ast2500_irqmap; > sc->memmap = aspeed_soc_ast2500_memmap; > sc->num_cpus = 1; > diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c > index 4ee32ea99d..f74561ecdc 100644 > --- a/hw/arm/aspeed_ast2600.c > +++ b/hw/arm/aspeed_ast2600.c > @@ -666,6 +666,7 @@ static void aspeed_soc_ast2600_class_init(ObjectClass *oc, void *data) > sc->wdts_num = 4; > sc->macs_num = 4; > sc->uarts_num = 13; > + sc->uarts_base = ASPEED_DEV_UART1; > sc->irqmap = aspeed_soc_ast2600_irqmap; > sc->memmap = aspeed_soc_ast2600_memmap; > sc->num_cpus = 2; > diff --git a/hw/arm/aspeed_soc_common.c b/hw/arm/aspeed_soc_common.c > index 123a0c432c..3963436c3a 100644 > --- a/hw/arm/aspeed_soc_common.c > +++ b/hw/arm/aspeed_soc_common.c > @@ -36,7 +36,7 @@ bool aspeed_soc_uart_realize(AspeedSoCState *s, Error **errp) > AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s); > SerialMM *smm; > > - for (int i = 0, uart = ASPEED_DEV_UART1; i < sc->uarts_num; i++, uart++) { > + for (int i = 0, uart = sc->uarts_base; i < sc->uarts_num; i++, uart++) { > smm = &s->uart[i]; > > /* Chardev property is set by the machine. */ > @@ -58,7 +58,7 @@ bool aspeed_soc_uart_realize(AspeedSoCState *s, Error **errp) > void aspeed_soc_uart_set_chr(AspeedSoCState *s, int dev, Chardev *chr) > { > AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s); > - int i = dev - ASPEED_DEV_UART1; > + int i = dev - sc->uarts_base; > > g_assert(0 <= i && i < ARRAY_SIZE(s->uart) && i < sc->uarts_num); > qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", chr); > diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h > index 9d0af84a8c..ce2bb51682 100644 > --- a/include/hw/arm/aspeed_soc.h > +++ b/include/hw/arm/aspeed_soc.h > @@ -140,6 +140,7 @@ struct AspeedSoCClass { > int wdts_num; > int macs_num; > int uarts_num; > + int uarts_base; > const int *irqmap; > const hwaddr *memmap; > uint32_t num_cpus; ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-05 10:46 ` Cédric Le Goater @ 2024-02-05 13:15 ` Philippe Mathieu-Daudé 2024-02-06 3:08 ` Jamin Lin 2024-02-05 14:25 ` Cédric Le Goater 1 sibling, 1 reply; 19+ messages in thread From: Philippe Mathieu-Daudé @ 2024-02-05 13:15 UTC (permalink / raw) To: Cédric Le Goater, Jamin Lin, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee On 5/2/24 11:46, Cédric Le Goater wrote: > Hello Jamin, > > On 2/5/24 10:14, Jamin Lin wrote: >> According to the design of ASPEED SOCS, the uart controller >> is 1 base for ast10x0, ast2600, ast2500 and ast2400. >> >> However, the uart controller is 0 base for ast2700. >> To support uart controller both 0 and 1 base, >> adds uasrt_bases parameter in AspeedSoCClass >> and set the default uart controller 1 base >> for ast10x0, astt2600, ast2500 and ast2400. > > The board definition can set 'amc->uart_default' to choose a different > default serial port for the console, or use the "bmc-console" machine > option . Isn't it enough ? May be I am misunderstanding the need. > > To clarify, > > ASPEED_DEV_UART1 is in the first serial port on the boards. > > I think we chose to start the indexing at 1 because the Aspeed QEMU > modeling began first with the UART model (console) and for simplicity, > we copied the definitions of the device tree from Linux : > > serial0 = &uart1; > serial1 = &uart2; > serial2 = &uart3; > serial3 = &uart4; > serial4 = &uart5; > serial5 = &vuart; > > We replicated this indexing starting at 1 to nearly all device models : > > ASPEED_DEV_UART1 - 13 > ASPEED_DEV_SPI1 -2 > ASPEED_DEV_EHCI1 -2 > ASPEED_DEV_TIMER1 - 8 > ASPEED_DEV_ETH1 -4 > ASPEED_DEV_MII1 - 4 > ASPEED_DEV_JTAG0 - 1 <--- !! > ASPEED_DEV_FSI1 - 2 > > I don't know what would be ASPEED_DEV_UART0 in this context. > > May be you could send a simplified AST2700 SoC model with definitions > of a minimum address space and IRQ space ? Looking at TF-A definitions, https://github.com/ARM-software/arm-trusted-firmware/commit/85f199b77447 #define UART_BASE U(0x14c33000) #define UART12_BASE (UART_BASE + 0xb00) #define CONSOLE_UART_BASE UART12_BASE As Cédric described, we have TF-A UART12_BASE -> QEMU ASPEED_DEV_UART13. ^ permalink raw reply [flat|nested] 19+ messages in thread
* RE: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-05 13:15 ` Philippe Mathieu-Daudé @ 2024-02-06 3:08 ` Jamin Lin 2024-02-06 16:46 ` Cédric Le Goater 0 siblings, 1 reply; 19+ messages in thread From: Jamin Lin @ 2024-02-06 3:08 UTC (permalink / raw) To: Philippe Mathieu-Daudé, Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee > -----Original Message----- > From: Philippe Mathieu-Daudé <philmd@linaro.org> > Sent: Monday, February 5, 2024 9:16 PM > To: Cédric Le Goater <clg@kaod.org>; Jamin Lin <jamin_lin@aspeedtech.com>; > Peter Maydell <peter.maydell@linaro.org>; 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> > Subject: Re: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base > > On 5/2/24 11:46, Cédric Le Goater wrote: > > Hello Jamin, > > > > On 2/5/24 10:14, Jamin Lin wrote: > >> According to the design of ASPEED SOCS, the uart controller is 1 base > >> for ast10x0, ast2600, ast2500 and ast2400. > >> > >> However, the uart controller is 0 base for ast2700. > >> To support uart controller both 0 and 1 base, adds uasrt_bases > >> parameter in AspeedSoCClass and set the default uart controller 1 > >> base for ast10x0, astt2600, ast2500 and ast2400. > > > > The board definition can set 'amc->uart_default' to choose a different > > default serial port for the console, or use the "bmc-console" machine > > option . Isn't it enough ? May be I am misunderstanding the need. > > > > To clarify, > > > > ASPEED_DEV_UART1 is in the first serial port on the boards. > > > > I think we chose to start the indexing at 1 because the Aspeed QEMU > > modeling began first with the UART model (console) and for simplicity, > > we copied the definitions of the device tree from Linux : > > > > serial0 = &uart1; > > serial1 = &uart2; > > serial2 = &uart3; > > serial3 = &uart4; > > serial4 = &uart5; > > serial5 = &vuart; > > > > We replicated this indexing starting at 1 to nearly all device models : > > > > ASPEED_DEV_UART1 - 13 > > ASPEED_DEV_SPI1 -2 > > ASPEED_DEV_EHCI1 -2 > > ASPEED_DEV_TIMER1 - 8 > > ASPEED_DEV_ETH1 -4 > > ASPEED_DEV_MII1 - 4 > > ASPEED_DEV_JTAG0 - 1 <--- !! > > ASPEED_DEV_FSI1 - 2 > > > > I don't know what would be ASPEED_DEV_UART0 in this context. > > > > May be you could send a simplified AST2700 SoC model with definitions > > of a minimum address space and IRQ space ? > > Looking at TF-A definitions, > https://github.com/ARM-software/arm-trusted-firmware/commit/85f199b774 > 47 > > #define UART_BASE U(0x14c33000) > #define UART12_BASE (UART_BASE + 0xb00) > #define CONSOLE_UART_BASE UART12_BASE > > As Cédric described, we have TF-A UART12_BASE -> QEMU > ASPEED_DEV_UART13. As Cédric described, the UART definitions on the AST2700 are different : https://github.com/AspeedTech-BMC/linux/blob/aspeed-master-v6.6/arch/arm64/boot/dts/aspeed/aspeed-g7.dtsi serial0 = &uart0; serial1 = &uart1; serial2 = &uart2; serial3 = &uart3; serial4 = &uart4; serial5 = &uart5; serial6 = &uart6; serial7 = &uart7; serial8 = &uart8; According to the current design of ASPEED QEMU UART model, it used "1" base device name and Follow the IP names in the datasheet Take ast2600 for example: static const hwaddr aspeed_soc_ast2600_memmap[] = { [ASPEED_DEV_UART1] = 0x1E783000, } AST2600 datashee description: Base Address of UART1 = 0x1E78 3000 Base Address of UART2 = 0x1E78 D000 Base Address of UART3 = 0x1E78 E000 Base Address of UART4 = 0x1E78 F000 Base Address of UART5 = 0x1E78 4000 Base Address of UART6 = 0x1E79 0000 However, device name of uart controller had been changed to "0" base for ast2700. If we want to control uart0(ASPEED_DEV_UART1), we should set the memory map as following, static const hwaddr aspeed_soc_ast2700_memmap[] = { [ASPEED_DEV_UART1] = 0X14C33000, [ASPEED_DEV_UART2] = 0X14C33100, [ASPEED_DEV_UART3] = 0X14C33200, [ASPEED_DEV_UART4] = 0X14C33300, [ASPEED_DEV_UART5] = 0X12C1A000, } AST2700 datasheet description: AST2700 integrate 13 sets of UART. Base Address of UART0 = 0x14C3_3000 Base Address of UART1 = 0x14C3_3100 Base Address of UART2 = 0x14C3_3200 Base Address of UART3 = 0x14C3_3300 Base Address of UART4 = 0x12C1_A000 Base Address of UART5 = 0x14C3_3400 Base Address of UART6 = 0x14C3_3500 Base Address of UART7 = 0x14C3_3600 Base Address of UART8 = 0x14C3_3700 Base Address of UART9 = 0x14C3_3800 Base Address of UART10 = 0x14C3_3900 Base Address of UART11 = 0x14C3_3A00 Base Address of UART12 = 0x14C3_3B00 As you said, uart12 mapped ASPEED_DEV_UART13. The device naming will confuse users because the device name in qemu mismatch with ast2700 datasheet. That way why we want to add ASPEED_DEV_UART0 and set the memory map of AST2700 as following. static const hwaddr aspeed_soc_ast2700_memmap[] = { [ASPEED_DEV_UART0] = 0X14C33000, [ASPEED_DEV_UART1] = 0X14C33100, [ASPEED_DEV_UART2] = 0X14C33200, [ASPEED_DEV_UART3] = 0X14C33300, [ASPEED_DEV_UART4] = 0X12C1A000, [ASPEED_DEV_UART5] = 0X14C33400, [ASPEED_DEV_UART6] = 0X14C33500, [ASPEED_DEV_UART7] = 0X14C33600, [ASPEED_DEV_UART8] = 0X14C33700, [ASPEED_DEV_UART9] = 0X14C33800, [ASPEED_DEV_UART10] = 0X14C33900, [ASPEED_DEV_UART11] = 0X14C33A00, [ASPEED_DEV_UART12] = 0X14C33B00, } Thanks-Jamin ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-06 3:08 ` Jamin Lin @ 2024-02-06 16:46 ` Cédric Le Goater 0 siblings, 0 replies; 19+ messages in thread From: Cédric Le Goater @ 2024-02-06 16:46 UTC (permalink / raw) To: Jamin Lin, Philippe Mathieu-Daudé, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee [ ... ] > As you said, uart12 mapped ASPEED_DEV_UART13. > The device naming will confuse users because the device name in qemu mismatch with ast2700 datasheet. > > That way why we want to add ASPEED_DEV_UART0 and set the memory map of AST2700 as following. > static const hwaddr aspeed_soc_ast2700_memmap[] = { > [ASPEED_DEV_UART0] = 0X14C33000, > [ASPEED_DEV_UART1] = 0X14C33100, > [ASPEED_DEV_UART2] = 0X14C33200, > [ASPEED_DEV_UART3] = 0X14C33300, > [ASPEED_DEV_UART4] = 0X12C1A000, > [ASPEED_DEV_UART5] = 0X14C33400, > [ASPEED_DEV_UART6] = 0X14C33500, > [ASPEED_DEV_UART7] = 0X14C33600, > [ASPEED_DEV_UART8] = 0X14C33700, > [ASPEED_DEV_UART9] = 0X14C33800, > [ASPEED_DEV_UART10] = 0X14C33900, > [ASPEED_DEV_UART11] = 0X14C33A00, > [ASPEED_DEV_UART12] = 0X14C33B00, > So we would prefer to keep the QEMU IP names in sync with the datasheet, and in that case your proposal makes sense. A have a few comments that I will make on the patch. Thanks, C. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-05 10:46 ` Cédric Le Goater 2024-02-05 13:15 ` Philippe Mathieu-Daudé @ 2024-02-05 14:25 ` Cédric Le Goater 2024-02-06 3:29 ` Jamin Lin 1 sibling, 1 reply; 19+ messages in thread From: Cédric Le Goater @ 2024-02-05 14:25 UTC (permalink / raw) To: Jamin Lin, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee On 2/5/24 11:46, Cédric Le Goater wrote: > Hello Jamin, > > On 2/5/24 10:14, Jamin Lin wrote: >> According to the design of ASPEED SOCS, the uart controller >> is 1 base for ast10x0, ast2600, ast2500 and ast2400. >> >> However, the uart controller is 0 base for ast2700. >> To support uart controller both 0 and 1 base, >> adds uasrt_bases parameter in AspeedSoCClass >> and set the default uart controller 1 base >> for ast10x0, astt2600, ast2500 and ast2400. > > The board definition can set 'amc->uart_default' to choose a different > default serial port for the console, or use the "bmc-console" machine > option . Isn't it enough ? May be I am misunderstanding the need. > > To clarify, > > ASPEED_DEV_UART1 is in the first serial port on the boards. > > I think we chose to start the indexing at 1 because the Aspeed QEMU > modeling began first with the UART model (console) and for simplicity, > we copied the definitions of the device tree from Linux : > > serial0 = &uart1; > serial1 = &uart2; > serial2 = &uart3; > serial3 = &uart4; > serial4 = &uart5; > serial5 = &vuart; The uart definitions on the AST2700 are different : https://github.com/AspeedTech-BMC/linux/blob/aspeed-master-v6.6/arch/arm64/boot/dts/aspeed/aspeed-g7.dtsi serial0 = &uart0; serial1 = &uart1; serial2 = &uart2; serial3 = &uart3; serial4 = &uart4; serial5 = &uart5; serial6 = &uart6; serial7 = &uart7; serial8 = &uart8; ... I think the names in the DT (and consequently in the QEMU models) follow the IP names in the datasheet. I don't think we care in QEMU, so I would be inclined to change the indexing of the device names in QEMU and start at 0, which would introduce a discrepancy for the AST2400, AST2600, AST2600 SoC. Let's see what the other maintainers have to say. Thanks, C. ^ permalink raw reply [flat|nested] 19+ messages in thread
* RE: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-05 14:25 ` Cédric Le Goater @ 2024-02-06 3:29 ` Jamin Lin 2024-02-06 16:59 ` Cédric Le Goater 0 siblings, 1 reply; 19+ messages in thread From: Jamin Lin @ 2024-02-06 3:29 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee > -----Original Message----- > The uart definitions on the AST2700 are different : > > > https://github.com/AspeedTech-BMC/linux/blob/aspeed-master-v6.6/arch/arm > 64/boot/dts/aspeed/aspeed-g7.dtsi > > serial0 = &uart0; > serial1 = &uart1; > serial2 = &uart2; > serial3 = &uart3; > serial4 = &uart4; > serial5 = &uart5; > serial6 = &uart6; > serial7 = &uart7; > serial8 = &uart8; > ... > > I think the names in the DT (and consequently in the QEMU models) follow the > IP names in the datasheet. > > I don't think we care in QEMU, so I would be inclined to change the indexing of > the device names in QEMU and start at 0, which would introduce a > discrepancy for the AST2400, AST2600, AST2600 SoC. > > Let's see what the other maintainers have to say. > > Thanks, > > C. Hi Cedric, Did you mean to change the naming of uart device to 0 base for all ASPEED SOCs? If yes, it seems we need to do the following changes. 1. add ASPEED_DEV_UART0 in aspeed_soc.h 2. Re-defined uart memory map for ast2600, ast10x0, ast2500 and ast2400(uart0 -> ASPEED_DEV_UART0) Take ast2600 for example: static const hwaddr aspeed_soc_ast2600_memmap[] = { [ASPEED_DEV_UART1] = 0x1E783000, ---> [ASPEED_DEV_UART0] [ASPEED_DEV_UART2] = 0x1E78D000, ---> [ASPEED_DEV_UART1] [ASPEED_DEV_UART3] = 0x1E78E000, [ASPEED_DEV_UART4] = 0x1E78F000, [ASPEED_DEV_UART5] = 0x1E784000, [ASPEED_DEV_UART6] = 0x1E790000, [ASPEED_DEV_UART7] = 0x1E790100, [ASPEED_DEV_UART8] = 0x1E790200, [ASPEED_DEV_UART9] = 0x1E790300, [ASPEED_DEV_UART10] = 0x1E790400, [ASPEED_DEV_UART11] = 0x1E790500, [ASPEED_DEV_UART12] = 0x1E790600, [ASPEED_DEV_UART13] = 0x1E790700, ---> [ASPEED_DEV_UART12] }; If no, could you please descript it more detail? So, I can change it and re-send this patch series. By the way, I will send a new patch series to support AST2700 in two weeks. We encountered GIC issues. It seems that QEMU support GIC v3 but SPI did not support, yet. https://github.com/qemu/qemu/blob/master/hw/intc/arm_gicv3_dist.c#L383 https://github.com/AspeedTech-BMC/linux/blob/aspeed-master-v6.6/arch/arm64/boot/dts/aspeed/aspeed-g7.dtsi#L229 It think that we can discuss it in a new AST2700 patch series. Thanks-Jamin ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-06 3:29 ` Jamin Lin @ 2024-02-06 16:59 ` Cédric Le Goater 2024-02-07 3:43 ` Jamin Lin 0 siblings, 1 reply; 19+ messages in thread From: Cédric Le Goater @ 2024-02-06 16:59 UTC (permalink / raw) To: Jamin Lin, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee On 2/6/24 04:29, Jamin Lin wrote: >> -----Original Message----- >> The uart definitions on the AST2700 are different : >> >> >> https://github.com/AspeedTech-BMC/linux/blob/aspeed-master-v6.6/arch/arm >> 64/boot/dts/aspeed/aspeed-g7.dtsi >> >> serial0 = &uart0; >> serial1 = &uart1; >> serial2 = &uart2; >> serial3 = &uart3; >> serial4 = &uart4; >> serial5 = &uart5; >> serial6 = &uart6; >> serial7 = &uart7; >> serial8 = &uart8; >> ... >> >> I think the names in the DT (and consequently in the QEMU models) follow the >> IP names in the datasheet. >> >> I don't think we care in QEMU, so I would be inclined to change the indexing of >> the device names in QEMU and start at 0, which would introduce a >> discrepancy for the AST2400, AST2600, AST2600 SoC. >> >> Let's see what the other maintainers have to say. >> >> Thanks, >> >> C. > Hi Cedric, > > Did you mean to change the naming of uart device to 0 base for all ASPEED SOCs? > If yes, it seems we need to do the following changes. > 1. add ASPEED_DEV_UART0 in aspeed_soc.h > 2. Re-defined uart memory map for ast2600, ast10x0, ast2500 and ast2400(uart0 -> ASPEED_DEV_UART0) > Take ast2600 for example: > static const hwaddr aspeed_soc_ast2600_memmap[] = { > [ASPEED_DEV_UART1] = 0x1E783000, ---> [ASPEED_DEV_UART0] > [ASPEED_DEV_UART2] = 0x1E78D000, ---> [ASPEED_DEV_UART1] > [ASPEED_DEV_UART3] = 0x1E78E000, > [ASPEED_DEV_UART4] = 0x1E78F000, > [ASPEED_DEV_UART5] = 0x1E784000, > [ASPEED_DEV_UART6] = 0x1E790000, > [ASPEED_DEV_UART7] = 0x1E790100, > [ASPEED_DEV_UART8] = 0x1E790200, > [ASPEED_DEV_UART9] = 0x1E790300, > [ASPEED_DEV_UART10] = 0x1E790400, > [ASPEED_DEV_UART11] = 0x1E790500, > [ASPEED_DEV_UART12] = 0x1E790600, > [ASPEED_DEV_UART13] = 0x1E790700, ---> [ASPEED_DEV_UART12] > }; > If no, could you please descript it more detail? So, I can change it and re-send this patch series. Let's keep the datasheet names. I had forgotten the reason initially and from an HW POV it makes sense to keep them in sync. I will add some more comments to the patch. > By the way, I will send a new patch series to support AST2700 in two weeks. > We encountered GIC issues. It seems that QEMU support GIC v3 but SPI did not support, yet. > > https://github.com/qemu/qemu/blob/master/hw/intc/arm_gicv3_dist.c#L383 > https://github.com/AspeedTech-BMC/linux/blob/aspeed-master-v6.6/arch/arm64/boot/dts/aspeed/aspeed-g7.dtsi#L229 If you did any hacks or workarounds in the QEMU models, please keep them separate from the other patches so that we can discuss. > It think that we can discuss it in a new AST2700 patch series. Sure. Thanks, C. ^ permalink raw reply [flat|nested] 19+ messages in thread
* RE: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-06 16:59 ` Cédric Le Goater @ 2024-02-07 3:43 ` Jamin Lin 0 siblings, 0 replies; 19+ messages in thread From: Jamin Lin @ 2024-02-07 3:43 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee > -----Original Message----- > From: Cédric Le Goater <clg@kaod.org> > Sent: Wednesday, February 7, 2024 1:00 AM > To: Jamin Lin <jamin_lin@aspeedtech.com>; Peter Maydell > <peter.maydell@linaro.org>; 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> > Subject: Re: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base > > On 2/6/24 04:29, Jamin Lin wrote: > >> -----Original Message----- > >> The uart definitions on the AST2700 are different : > >> > >> > >> https://github.com/AspeedTech-BMC/linux/blob/aspeed-master-v6.6/arch/ > >> arm > >> 64/boot/dts/aspeed/aspeed-g7.dtsi > >> > >> serial0 = &uart0; > >> serial1 = &uart1; > >> serial2 = &uart2; > >> serial3 = &uart3; > >> serial4 = &uart4; > >> serial5 = &uart5; > >> serial6 = &uart6; > >> serial7 = &uart7; > >> serial8 = &uart8; > >> ... > >> > >> I think the names in the DT (and consequently in the QEMU models) > >> follow the IP names in the datasheet. > >> > >> I don't think we care in QEMU, so I would be inclined to change the > >> indexing of the device names in QEMU and start at 0, which would > >> introduce a discrepancy for the AST2400, AST2600, AST2600 SoC. > >> > >> Let's see what the other maintainers have to say. > >> > >> Thanks, > >> > >> C. > > Hi Cedric, > > > > Did you mean to change the naming of uart device to 0 base for all ASPEED > SOCs? > > If yes, it seems we need to do the following changes. > > 1. add ASPEED_DEV_UART0 in aspeed_soc.h 2. Re-defined uart memory map > > for ast2600, ast10x0, ast2500 and ast2400(uart0 -> ASPEED_DEV_UART0) > > Take ast2600 for example: > > static const hwaddr aspeed_soc_ast2600_memmap[] = { > > [ASPEED_DEV_UART1] = 0x1E783000, ---> > [ASPEED_DEV_UART0] > > [ASPEED_DEV_UART2] = 0x1E78D000, ---> > [ASPEED_DEV_UART1] > > [ASPEED_DEV_UART3] = 0x1E78E000, > > [ASPEED_DEV_UART4] = 0x1E78F000, > > [ASPEED_DEV_UART5] = 0x1E784000, > > [ASPEED_DEV_UART6] = 0x1E790000, > > [ASPEED_DEV_UART7] = 0x1E790100, > > [ASPEED_DEV_UART8] = 0x1E790200, > > [ASPEED_DEV_UART9] = 0x1E790300, > > [ASPEED_DEV_UART10] = 0x1E790400, > > [ASPEED_DEV_UART11] = 0x1E790500, > > [ASPEED_DEV_UART12] = 0x1E790600, > > [ASPEED_DEV_UART13] = 0x1E790700, ---> > [ASPEED_DEV_UART12] > > }; > > If no, could you please descript it more detail? So, I can change it and re-send > this patch series. > > Let's keep the datasheet names. I had forgotten the reason initially and from > an HW POV it makes sense to keep them in sync. I will add some more > comments to the patch. > > > By the way, I will send a new patch series to support AST2700 in two weeks. > > We encountered GIC issues. It seems that QEMU support GIC v3 but SPI did > not support, yet. > > > > > https://github.com/qemu/qemu/blob/master/hw/intc/arm_gicv3_dist.c#L383 > > https://github.com/AspeedTech-BMC/linux/blob/aspeed-master-v6.6/arch/a > > rm64/boot/dts/aspeed/aspeed-g7.dtsi#L229 > > If you did any hacks or workarounds in the QEMU models, please keep them > separate from the other patches so that we can discuss. > Okay. Will do Thanks-Jamin > > It think that we can discuss it in a new AST2700 patch series. > Sure. > > Thanks, > > C. > ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base 2024-02-05 9:14 ` [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base Jamin Lin via 2024-02-05 10:46 ` Cédric Le Goater @ 2024-02-06 17:36 ` Cédric Le Goater 1 sibling, 0 replies; 19+ messages in thread From: Cédric Le Goater @ 2024-02-06 17:36 UTC (permalink / raw) To: Jamin Lin, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee Hello Jmain, On 2/5/24 10:14, Jamin Lin wrote: > According to the design of ASPEED SOCS, the uart controller > is 1 base for ast10x0, ast2600, ast2500 and ast2400. Please rephrase saying somehting : the Aspeed datasheet refers to the UART controllers as UART1 - UART13 for the ast10x0, ast2600, ast2500 and ast2400 SoCs and the Aspeed ast2700 introduces an UART0. To keep the naming in the QEMU models in sync with the datasheet, let's introduce a new UART0 device name and do the required adjustements, etc ... > However, the uart controller is 0 base for ast2700. > To support uart controller both 0 and 1 base, > adds uasrt_bases parameter in AspeedSoCClass > and set the default uart controller 1 base > for ast10x0, astt2600, ast2500 and ast2400. > > From datasheet description > ast2700: > Base Address of UART0 = 0x14c33000 > ast1030: > Base Address of UART1 = 0x7e783000 > ast2600: > Base Address of UART1 = 0x1E78 3000 > ast2500: > Base Address of UART1 = 0x1E78 3000 We should also introduce ASPEED_DEV_UART0 enum. See below. > Signed-off-by: Troy Lee <troy_lee@aspeedtech.com> > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> > --- > hw/arm/aspeed.c | 8 +++++--- > hw/arm/aspeed_ast10x0.c | 1 + > hw/arm/aspeed_ast2400.c | 2 ++ > hw/arm/aspeed_ast2600.c | 1 + > hw/arm/aspeed_soc_common.c | 4 ++-- > include/hw/arm/aspeed_soc.h | 1 + > 6 files changed, 12 insertions(+), 5 deletions(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 09b1e823ba..218b81298e 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -342,7 +342,7 @@ static void connect_serial_hds_to_uarts(AspeedMachineState *bmc) > int uart_chosen = bmc->uart_chosen ? bmc->uart_chosen : amc->uart_default; > > aspeed_soc_uart_set_chr(s, uart_chosen, serial_hd(0)); > - for (int i = 1, uart = ASPEED_DEV_UART1; i < sc->uarts_num; i++, uart++) { > + for (int i = 1, uart = sc->uarts_base; i < sc->uarts_num; i++, uart++) { > if (uart == uart_chosen) { > continue; > } > @@ -1092,9 +1092,11 @@ static char *aspeed_get_bmc_console(Object *obj, Error **errp) > { > AspeedMachineState *bmc = ASPEED_MACHINE(obj); > AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(bmc); > + AspeedSoCClass *sc = ASPEED_SOC_CLASS(obj); > + > int uart_chosen = bmc->uart_chosen ? bmc->uart_chosen : amc->uart_default; > > - return g_strdup_printf("uart%d", uart_chosen - ASPEED_DEV_UART1 + 1); > + return g_strdup_printf("uart%d", uart_chosen - sc->uarts_base + 1); Wwe didn't have a ASPEED_DEV_UART0 at the time. The calculation above should be replaced with : "uart_chosen - ASPEED_DEV_UART0" > } > > static void aspeed_set_bmc_console(Object *obj, const char *value, Error **errp) > @@ -1114,7 +1116,7 @@ static void aspeed_set_bmc_console(Object *obj, const char *value, Error **errp) > error_setg(errp, "\"uart\" should be in range [1 - %d]", sc->uarts_num); The range in the reported error above needs a fix. It's not "1" anymore but "sc->uarts_base - ASPEED_DEV_UART0". Same for the test : if (val < 1 || val > sc->uarts_num) { > return; > } > - bmc->uart_chosen = ASPEED_DEV_UART1 + val - 1; > + bmc->uart_chosen = sc->uarts_base + val - 1; Should be ASPEED_DEV_UART0 + val. Thanks, C. > } > > static void aspeed_machine_class_props_init(ObjectClass *oc) > diff --git a/hw/arm/aspeed_ast10x0.c b/hw/arm/aspeed_ast10x0.c > index c3b5116a6a..2634e0f654 100644 > --- a/hw/arm/aspeed_ast10x0.c > +++ b/hw/arm/aspeed_ast10x0.c > @@ -436,6 +436,7 @@ static void aspeed_soc_ast1030_class_init(ObjectClass *klass, void *data) > sc->wdts_num = 4; > sc->macs_num = 1; > sc->uarts_num = 13; > + sc->uarts_base = ASPEED_DEV_UART1; > sc->irqmap = aspeed_soc_ast1030_irqmap; > sc->memmap = aspeed_soc_ast1030_memmap; > sc->num_cpus = 1; > diff --git a/hw/arm/aspeed_ast2400.c b/hw/arm/aspeed_ast2400.c > index 8829561bb6..95da85fee0 100644 > --- a/hw/arm/aspeed_ast2400.c > +++ b/hw/arm/aspeed_ast2400.c > @@ -523,6 +523,7 @@ static void aspeed_soc_ast2400_class_init(ObjectClass *oc, void *data) > sc->wdts_num = 2; > sc->macs_num = 2; > sc->uarts_num = 5; > + sc->uarts_base = ASPEED_DEV_UART1; > sc->irqmap = aspeed_soc_ast2400_irqmap; > sc->memmap = aspeed_soc_ast2400_memmap; > sc->num_cpus = 1; > @@ -551,6 +552,7 @@ static void aspeed_soc_ast2500_class_init(ObjectClass *oc, void *data) > sc->wdts_num = 3; > sc->macs_num = 2; > sc->uarts_num = 5; > + sc->uarts_base = ASPEED_DEV_UART1; > sc->irqmap = aspeed_soc_ast2500_irqmap; > sc->memmap = aspeed_soc_ast2500_memmap; > sc->num_cpus = 1; > diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c > index 4ee32ea99d..f74561ecdc 100644 > --- a/hw/arm/aspeed_ast2600.c > +++ b/hw/arm/aspeed_ast2600.c > @@ -666,6 +666,7 @@ static void aspeed_soc_ast2600_class_init(ObjectClass *oc, void *data) > sc->wdts_num = 4; > sc->macs_num = 4; > sc->uarts_num = 13; > + sc->uarts_base = ASPEED_DEV_UART1; > sc->irqmap = aspeed_soc_ast2600_irqmap; > sc->memmap = aspeed_soc_ast2600_memmap; > sc->num_cpus = 2; > diff --git a/hw/arm/aspeed_soc_common.c b/hw/arm/aspeed_soc_common.c > index 123a0c432c..3963436c3a 100644 > --- a/hw/arm/aspeed_soc_common.c > +++ b/hw/arm/aspeed_soc_common.c > @@ -36,7 +36,7 @@ bool aspeed_soc_uart_realize(AspeedSoCState *s, Error **errp) > AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s); > SerialMM *smm; > > - for (int i = 0, uart = ASPEED_DEV_UART1; i < sc->uarts_num; i++, uart++) { > + for (int i = 0, uart = sc->uarts_base; i < sc->uarts_num; i++, uart++) { > smm = &s->uart[i]; > > /* Chardev property is set by the machine. */ > @@ -58,7 +58,7 @@ bool aspeed_soc_uart_realize(AspeedSoCState *s, Error **errp) > void aspeed_soc_uart_set_chr(AspeedSoCState *s, int dev, Chardev *chr) > { > AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s); > - int i = dev - ASPEED_DEV_UART1; > + int i = dev - sc->uarts_base; > > g_assert(0 <= i && i < ARRAY_SIZE(s->uart) && i < sc->uarts_num); > qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", chr); > diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h > index 9d0af84a8c..ce2bb51682 100644 > --- a/include/hw/arm/aspeed_soc.h > +++ b/include/hw/arm/aspeed_soc.h > @@ -140,6 +140,7 @@ struct AspeedSoCClass { > int wdts_num; > int macs_num; > int uarts_num; > + int uarts_base; > const int *irqmap; > const hwaddr *memmap; > uint32_t num_cpus; ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v0 2/2] aspeed: fix hardcode boot address 0 2024-02-05 9:14 [v0 0/2] uart base and hardcode boot address 0 Jamin Lin via 2024-02-05 9:14 ` [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base Jamin Lin via @ 2024-02-05 9:14 ` Jamin Lin via 2024-02-05 13:20 ` Philippe Mathieu-Daudé 2024-02-05 13:34 ` Cédric Le Goater 2024-02-06 16:47 ` [v0 0/2] uart base and " Cédric Le Goater 2 siblings, 2 replies; 19+ messages in thread From: Jamin Lin via @ 2024-02-05 9:14 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee, jamin_lin In the previous design of QEMU model for ASPEED SOCs, it set the boot address at 0 which was the hardcode setting for ast10x0, ast2600, ast2500 and ast2400. According to the design of ast2700, it has bootmcu which is used for executing SPL and initialize DRAM, then, CPUs(cortex-a35) execute u-boot, kernel and rofs. QEMU will only support CPU(coretax-a35) parts and the boot address is "0x400000000" for ast2700. Therefore, fixed hardcode boot address 0. Signed-off-by: Troy Lee <troy_lee@aspeedtech.com> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> --- hw/arm/aspeed.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 218b81298e..82a92e8142 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -289,12 +289,14 @@ static void aspeed_install_boot_rom(AspeedMachineState *bmc, BlockBackend *blk, uint64_t rom_size) { AspeedSoCState *soc = bmc->soc; + AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(soc); memory_region_init_rom(&bmc->boot_rom, NULL, "aspeed.boot_rom", rom_size, &error_abort); memory_region_add_subregion_overlap(&soc->spi_boot_container, 0, &bmc->boot_rom, 1); - write_boot_rom(blk, ASPEED_SOC_SPI_BOOT_ADDR, rom_size, &error_abort); + write_boot_rom(blk, sc->memmap[ASPEED_DEV_SPI_BOOT], + rom_size, &error_abort); } void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype, -- 2.34.1 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v0 2/2] aspeed: fix hardcode boot address 0 2024-02-05 9:14 ` [PATCH v0 2/2] aspeed: fix hardcode boot address 0 Jamin Lin via @ 2024-02-05 13:20 ` Philippe Mathieu-Daudé 2024-02-06 1:48 ` Jamin Lin 2024-02-05 13:34 ` Cédric Le Goater 1 sibling, 1 reply; 19+ messages in thread From: Philippe Mathieu-Daudé @ 2024-02-05 13:20 UTC (permalink / raw) To: Jamin Lin, Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee Hi Jamin, On 5/2/24 10:14, Jamin Lin via wrote: > In the previous design of QEMU model for ASPEED SOCs, it set the boot > address at 0 which was the hardcode setting for ast10x0, ast2600, > ast2500 and ast2400. > > According to the design of ast2700, it has bootmcu which is used for > executing SPL and initialize DRAM, Out of curiosity, what architecture is this MCU? > then, CPUs(cortex-a35) > execute u-boot, kernel and rofs. QEMU will only support CPU(coretax-a35) > parts and the boot address is "0x400000000" for ast2700. OK, but I don't get how you get from here ... > Therefore, fixed hardcode boot address 0. ... to here. > Signed-off-by: Troy Lee <troy_lee@aspeedtech.com> > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> > --- > hw/arm/aspeed.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 218b81298e..82a92e8142 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -289,12 +289,14 @@ static void aspeed_install_boot_rom(AspeedMachineState *bmc, BlockBackend *blk, > uint64_t rom_size) > { > AspeedSoCState *soc = bmc->soc; > + AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(soc); > > memory_region_init_rom(&bmc->boot_rom, NULL, "aspeed.boot_rom", rom_size, > &error_abort); > memory_region_add_subregion_overlap(&soc->spi_boot_container, 0, > &bmc->boot_rom, 1); > - write_boot_rom(blk, ASPEED_SOC_SPI_BOOT_ADDR, rom_size, &error_abort); > + write_boot_rom(blk, sc->memmap[ASPEED_DEV_SPI_BOOT], > + rom_size, &error_abort); Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > } > > void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype, ^ permalink raw reply [flat|nested] 19+ messages in thread
* RE: [PATCH v0 2/2] aspeed: fix hardcode boot address 0 2024-02-05 13:20 ` Philippe Mathieu-Daudé @ 2024-02-06 1:48 ` Jamin Lin 2024-02-06 16:54 ` Cédric Le Goater 0 siblings, 1 reply; 19+ messages in thread From: Jamin Lin @ 2024-02-06 1:48 UTC (permalink / raw) To: Philippe Mathieu-Daudé, Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee > -----Original Message----- > From: Philippe Mathieu-Daudé <philmd@linaro.org> > Sent: Monday, February 5, 2024 9:20 PM > To: Jamin Lin <jamin_lin@aspeedtech.com>; Cédric Le Goater <clg@kaod.org>; > Peter Maydell <peter.maydell@linaro.org>; 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> > Subject: Re: [PATCH v0 2/2] aspeed: fix hardcode boot address 0 > > Hi Jamin, > > On 5/2/24 10:14, Jamin Lin via wrote: > > In the previous design of QEMU model for ASPEED SOCs, it set the boot > > address at 0 which was the hardcode setting for ast10x0, ast2600, > > ast2500 and ast2400. > > > > According to the design of ast2700, it has bootmcu which is used for > > executing SPL and initialize DRAM, > > Out of curiosity, what architecture is this MCU? MCU is riscv-ibex and its architecture is riscv-32. > > > then, CPUs(cortex-a35) > > execute u-boot, kernel and rofs. QEMU will only support > > CPU(coretax-a35) parts and the boot address is "0x400000000" for ast2700. > > OK, but I don't get how you get from here ... > Our design make MCU execute SPL and copy u-boot image from SPI to DRAM at address 0x400000000 at SPL boot stage. However, QEMU will only support to emulate CPU sides (coretex-a35) for ast2700, that was why we want to change the boot address at 0x400000000 And use the following start command by QEMU. ./qemu-system-aarch64 -M ast2750-evb -nographic -m 8G \ -device loader,addr=0x400000000,file=${IMGDIR}/u-boot-nodtb.bin,force-raw=on \ -device loader,addr=$((0x400000000 + ${UBOOT_SIZE})),file=${IMGDIR}/u-boot.dtb,force-raw=on \ --- --- By the way, I will send a new patch series to support ast2700 in two weeks and We set memory map for ast2700 as following. static const hwaddr aspeed_soc_ast2700_memmap[] = { [ASPEED_DEV_SPI_BOOT] = 0x400000000, [ASPEED_DEV_SRAM] = 0x10000000, Jamin > > Therefore, fixed hardcode boot address 0. > > ... to here. > > > Signed-off-by: Troy Lee <troy_lee@aspeedtech.com> > > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> > > --- > > hw/arm/aspeed.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index > > 218b81298e..82a92e8142 100644 > > --- a/hw/arm/aspeed.c > > +++ b/hw/arm/aspeed.c > > @@ -289,12 +289,14 @@ static void > aspeed_install_boot_rom(AspeedMachineState *bmc, BlockBackend *blk, > > uint64_t rom_size) > > { > > AspeedSoCState *soc = bmc->soc; > > + AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(soc); > > > > memory_region_init_rom(&bmc->boot_rom, NULL, > "aspeed.boot_rom", rom_size, > > &error_abort); > > memory_region_add_subregion_overlap(&soc->spi_boot_container, > 0, > > &bmc->boot_rom, 1); > > - write_boot_rom(blk, ASPEED_SOC_SPI_BOOT_ADDR, rom_size, > &error_abort); > > + write_boot_rom(blk, sc->memmap[ASPEED_DEV_SPI_BOOT], > > + rom_size, &error_abort); > > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > > > } > > > > void aspeed_board_init_flashes(AspeedSMCState *s, const char > > *flashtype, ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v0 2/2] aspeed: fix hardcode boot address 0 2024-02-06 1:48 ` Jamin Lin @ 2024-02-06 16:54 ` Cédric Le Goater 0 siblings, 0 replies; 19+ messages in thread From: Cédric Le Goater @ 2024-02-06 16:54 UTC (permalink / raw) To: Jamin Lin, Philippe Mathieu-Daudé, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee On 2/6/24 02:48, Jamin Lin wrote: >> -----Original Message----- >> From: Philippe Mathieu-Daudé <philmd@linaro.org> >> Sent: Monday, February 5, 2024 9:20 PM >> To: Jamin Lin <jamin_lin@aspeedtech.com>; Cédric Le Goater <clg@kaod.org>; >> Peter Maydell <peter.maydell@linaro.org>; 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> >> Subject: Re: [PATCH v0 2/2] aspeed: fix hardcode boot address 0 >> >> Hi Jamin, >> >> On 5/2/24 10:14, Jamin Lin via wrote: >>> In the previous design of QEMU model for ASPEED SOCs, it set the boot >>> address at 0 which was the hardcode setting for ast10x0, ast2600, >>> ast2500 and ast2400. >>> >>> According to the design of ast2700, it has bootmcu which is used for >>> executing SPL and initialize DRAM, >> >> Out of curiosity, what architecture is this MCU? > MCU is riscv-ibex and its architecture is riscv-32. > >> >>> then, CPUs(cortex-a35) >>> execute u-boot, kernel and rofs. QEMU will only support >>> CPU(coretax-a35) parts and the boot address is "0x400000000" for ast2700. >> >> OK, but I don't get how you get from here ... >> > Our design make MCU execute SPL and copy u-boot image from SPI to DRAM at address 0x400000000 at SPL boot stage. > However, QEMU will only support to emulate CPU sides (coretex-a35) for ast2700, The fby35 is an example of a machine with two ARM SoCs : ast1030-a1 and ast2600-a3. There is work in progress for heterogeneous QEMU machines and It might be possible to model RISC-V and ARM one day. > that was why we want to change the boot address at 0x400000000 > And use the following start command by QEMU. > > ./qemu-system-aarch64 -M ast2750-evb -nographic -m 8G \ > -device loader,addr=0x400000000,file=${IMGDIR}/u-boot-nodtb.bin,force-raw=on \ > -device loader,addr=$((0x400000000 + ${UBOOT_SIZE})),file=${IMGDIR}/u-boot.dtb,force-raw=on \ > --- > --- ok. Makes sense. > By the way, I will send a new patch series to support ast2700 in two weeks and > We set memory map for ast2700 as following. > > static const hwaddr aspeed_soc_ast2700_memmap[] = { > [ASPEED_DEV_SPI_BOOT] = 0x400000000, > [ASPEED_DEV_SRAM] = 0x10000000, Excellent ! Thanks, C. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v0 2/2] aspeed: fix hardcode boot address 0 2024-02-05 9:14 ` [PATCH v0 2/2] aspeed: fix hardcode boot address 0 Jamin Lin via 2024-02-05 13:20 ` Philippe Mathieu-Daudé @ 2024-02-05 13:34 ` Cédric Le Goater 2024-02-06 2:15 ` Jamin Lin 1 sibling, 1 reply; 19+ messages in thread From: Cédric Le Goater @ 2024-02-05 13:34 UTC (permalink / raw) To: Jamin Lin, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee On 2/5/24 10:14, Jamin Lin wrote: > In the previous design of QEMU model for ASPEED SOCs, it set the boot > address at 0 which was the hardcode setting for ast10x0, ast2600, > ast2500 and ast2400. > > According to the design of ast2700, it has bootmcu which is used for > executing SPL and initialize DRAM, then, CPUs(cortex-a35) > execute u-boot, kernel and rofs. QEMU will only support CPU(coretax-a35) > parts and the boot address is "0x400000000" for ast2700. On the previous SoC, the ASPEED_DEV_SPI_BOOT region is an alias, at 0x0, to the FMC CE0 region, mapped at 0x20000000. Is 0x400000000 (or 0x40000000 ?) the address for FMC CE0 region on the ast2700 ? or an alias ? What is the cortex-a35 reset address ? It would help to also introduce a basic skeleton of the ast2700 SoC. Anyhow, this change makes sense. Could you please respin and also remove ASPEED_SOC_SPI_BOOT_ADDR. ? Thanks, C. > Therefore, fixed hardcode boot address 0. > > Signed-off-by: Troy Lee <troy_lee@aspeedtech.com> > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> > --- > hw/arm/aspeed.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 218b81298e..82a92e8142 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -289,12 +289,14 @@ static void aspeed_install_boot_rom(AspeedMachineState *bmc, BlockBackend *blk, > uint64_t rom_size) > { > AspeedSoCState *soc = bmc->soc; > + AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(soc); > > memory_region_init_rom(&bmc->boot_rom, NULL, "aspeed.boot_rom", rom_size, > &error_abort); > memory_region_add_subregion_overlap(&soc->spi_boot_container, 0, > &bmc->boot_rom, 1); > - write_boot_rom(blk, ASPEED_SOC_SPI_BOOT_ADDR, rom_size, &error_abort); > + write_boot_rom(blk, sc->memmap[ASPEED_DEV_SPI_BOOT], > + rom_size, &error_abort); > } > > void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype, ^ permalink raw reply [flat|nested] 19+ messages in thread
* RE: [PATCH v0 2/2] aspeed: fix hardcode boot address 0 2024-02-05 13:34 ` Cédric Le Goater @ 2024-02-06 2:15 ` Jamin Lin 0 siblings, 0 replies; 19+ messages in thread From: Jamin Lin @ 2024-02-06 2:15 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee > -----Original Message----- > From: Cédric Le Goater <clg@kaod.org> > Sent: Monday, February 5, 2024 9:34 PM > To: Jamin Lin <jamin_lin@aspeedtech.com>; Peter Maydell > <peter.maydell@linaro.org>; 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> > Subject: Re: [PATCH v0 2/2] aspeed: fix hardcode boot address 0 > > On 2/5/24 10:14, Jamin Lin wrote: > > In the previous design of QEMU model for ASPEED SOCs, it set the boot > > address at 0 which was the hardcode setting for ast10x0, ast2600, > > ast2500 and ast2400. > > > > According to the design of ast2700, it has bootmcu which is used for > > executing SPL and initialize DRAM, then, CPUs(cortex-a35) execute > > u-boot, kernel and rofs. QEMU will only support CPU(coretax-a35) parts > > and the boot address is "0x400000000" for ast2700. > > On the previous SoC, the ASPEED_DEV_SPI_BOOT region is an alias, at 0x0, to > the FMC CE0 region, mapped at 0x20000000. > > Is 0x400000000 (or 0x40000000 ?) the address for FMC CE0 region on the > ast2700 ? or an alias ? > It is "0x4 00000000"(64bits address). CPU is armv8 cortex-a35 which is 64 bits CPU. The dram base address is "0x4 00000000". The SPL base address is "0x1 00000000". FMC_CS0 region mapped at "0x1 00000000" address. > What is the cortex-a35 reset address ? > > It would help to also introduce a basic skeleton of the ast2700 SoC. > AST2700 Primary Service Processor: Embedded quad-core ARM Cortex A35 64-bit RISC CPU Maximum running frequency: 1.6GHZ Support: MMU, FPU, NEON, trust-zone, GIC-500 controller and so on. BootMCU: Ibex-riscv 32bits riscv. Boot flow ROM Code -> BootMCU(SPL) -> CPU Cortex A35(U-boot-> kernel -> rofs) > Anyhow, this change makes sense. Could you please respin and also remove > ASPEED_SOC_SPI_BOOT_ADDR. ? > Okay, will remove it. > Thanks, > > C. > > > Therefore, fixed hardcode boot address 0. > > > > Signed-off-by: Troy Lee <troy_lee@aspeedtech.com> > > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> > > --- > > hw/arm/aspeed.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index > > 218b81298e..82a92e8142 100644 > > --- a/hw/arm/aspeed.c > > +++ b/hw/arm/aspeed.c > > @@ -289,12 +289,14 @@ static void > aspeed_install_boot_rom(AspeedMachineState *bmc, BlockBackend *blk, > > uint64_t rom_size) > > { > > AspeedSoCState *soc = bmc->soc; > > + AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(soc); > > > > memory_region_init_rom(&bmc->boot_rom, NULL, > "aspeed.boot_rom", rom_size, > > &error_abort); > > memory_region_add_subregion_overlap(&soc->spi_boot_container, > 0, > > &bmc->boot_rom, 1); > > - write_boot_rom(blk, ASPEED_SOC_SPI_BOOT_ADDR, rom_size, > &error_abort); > > + write_boot_rom(blk, sc->memmap[ASPEED_DEV_SPI_BOOT], > > + rom_size, &error_abort); > > } > > > > void aspeed_board_init_flashes(AspeedSMCState *s, const char > > *flashtype, ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [v0 0/2] uart base and hardcode boot address 0 2024-02-05 9:14 [v0 0/2] uart base and hardcode boot address 0 Jamin Lin via 2024-02-05 9:14 ` [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base Jamin Lin via 2024-02-05 9:14 ` [PATCH v0 2/2] aspeed: fix hardcode boot address 0 Jamin Lin via @ 2024-02-06 16:47 ` Cédric Le Goater 2024-02-07 3:41 ` Jamin Lin 2 siblings, 1 reply; 19+ messages in thread From: Cédric Le Goater @ 2024-02-06 16:47 UTC (permalink / raw) To: Jamin Lin, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: troy_lee On 2/5/24 10:14, Jamin Lin wrote: > v0: usually we start at v1, so the next version would be a v2. Indexing again :) Thanks, C. > 1. support uart controller both 0 and 1 base > 2. fix hardcode boot address 0 > > Jamin Lin (2): > aspeed: support uart controller both 0 and 1 base > aspeed: fix hardcode boot address 0 > > hw/arm/aspeed.c | 12 ++++++++---- > hw/arm/aspeed_ast10x0.c | 1 + > hw/arm/aspeed_ast2400.c | 2 ++ > hw/arm/aspeed_ast2600.c | 1 + > hw/arm/aspeed_soc_common.c | 4 ++-- > include/hw/arm/aspeed_soc.h | 1 + > 6 files changed, 15 insertions(+), 6 deletions(-) > ^ permalink raw reply [flat|nested] 19+ messages in thread
* RE: [v0 0/2] uart base and hardcode boot address 0 2024-02-06 16:47 ` [v0 0/2] uart base and " Cédric Le Goater @ 2024-02-07 3:41 ` Jamin Lin 0 siblings, 0 replies; 19+ messages in thread From: Jamin Lin @ 2024-02-07 3:41 UTC (permalink / raw) To: Cédric Le Goater, Peter Maydell, Andrew Jeffery, Joel Stanley, open list:ASPEED BMCs, open list:All patches CC here Cc: Troy Lee > -----Original Message----- > From: Cédric Le Goater <clg@kaod.org> > Sent: Wednesday, February 7, 2024 12:48 AM > To: Jamin Lin <jamin_lin@aspeedtech.com>; Peter Maydell > <peter.maydell@linaro.org>; 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> > Subject: Re: [v0 0/2] uart base and hardcode boot address 0 > > On 2/5/24 10:14, Jamin Lin wrote: > > v0: > > usually we start at v1, so the next version would be a v2. Indexing again :) > Got it. Thanks-Jamin > > Thanks, > > C. > > > > > 1. support uart controller both 0 and 1 base 2. fix hardcode boot > > address 0 > > > > Jamin Lin (2): > > aspeed: support uart controller both 0 and 1 base > > aspeed: fix hardcode boot address 0 > > > > hw/arm/aspeed.c | 12 ++++++++---- > > hw/arm/aspeed_ast10x0.c | 1 + > > hw/arm/aspeed_ast2400.c | 2 ++ > > hw/arm/aspeed_ast2600.c | 1 + > > hw/arm/aspeed_soc_common.c | 4 ++-- > > include/hw/arm/aspeed_soc.h | 1 + > > 6 files changed, 15 insertions(+), 6 deletions(-) > > ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2024-02-07 3:44 UTC | newest] Thread overview: 19+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-02-05 9:14 [v0 0/2] uart base and hardcode boot address 0 Jamin Lin via 2024-02-05 9:14 ` [PATCH v0 1/2] aspeed: support uart controller both 0 and 1 base Jamin Lin via 2024-02-05 10:46 ` Cédric Le Goater 2024-02-05 13:15 ` Philippe Mathieu-Daudé 2024-02-06 3:08 ` Jamin Lin 2024-02-06 16:46 ` Cédric Le Goater 2024-02-05 14:25 ` Cédric Le Goater 2024-02-06 3:29 ` Jamin Lin 2024-02-06 16:59 ` Cédric Le Goater 2024-02-07 3:43 ` Jamin Lin 2024-02-06 17:36 ` Cédric Le Goater 2024-02-05 9:14 ` [PATCH v0 2/2] aspeed: fix hardcode boot address 0 Jamin Lin via 2024-02-05 13:20 ` Philippe Mathieu-Daudé 2024-02-06 1:48 ` Jamin Lin 2024-02-06 16:54 ` Cédric Le Goater 2024-02-05 13:34 ` Cédric Le Goater 2024-02-06 2:15 ` Jamin Lin 2024-02-06 16:47 ` [v0 0/2] uart base and " Cédric Le Goater 2024-02-07 3:41 ` Jamin Lin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).