From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: "Cédric Le Goater" <clg@kaod.org>, qemu-arm@nongnu.org
Cc: qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@aj.id.au>,
Abhishek Singh Dagur <abhishek@drut.io>
Subject: Re: [PATCH 11/12] aspeed: Introduce a "uart" machine option
Date: Wed, 31 May 2023 09:50:45 +0200 [thread overview]
Message-ID: <ab96deaf-ca3f-fd28-254e-1797eb69b88d@linaro.org> (raw)
In-Reply-To: <aeb9f6a3-30e4-ce5d-c041-600a5097b27e@kaod.org>
On 31/5/23 08:28, Cédric Le Goater wrote:
> On 5/30/23 23:22, Philippe Mathieu-Daudé wrote:
>> On 8/5/23 09:58, Cédric Le Goater wrote:
>>> Most of the Aspeed machines use the UART5 device for the boot console,
>>> and QEMU connects the first serial Chardev to this SoC device for this
>>> purpose. See routine connect_serial_hds_to_uarts().
>>>
>>> Nevertheless, some machines use another boot console, such as the fuji,
>>> and commit 5d63d0c76c ("hw/arm/aspeed: Allow machine to set UART
>>> default") introduced a SoC class attribute 'uart_default' and property
>>> to be able to change the boot console device. It was later changed by
>>> commit d2b3eaefb4 ("aspeed: Refactor UART init for multi-SoC machines").
>>>
>>> The "uart" machine option goes a step further and lets the user define
>>> the UART device from the QEMU command line without introducing a new
>>> machine definition. For instance, to use device UART3 (mapped on
>>> /dev/ttyS2 under Linux) instead of the default UART5, one would use :
>>>
>>> -M ast2500-evb,uart=uart3
>>>
>>> Cc: Abhishek Singh Dagur <abhishek@drut.io>
>>> Signed-off-by: Cédric Le Goater <clg@kaod.org>
>>> ---
>>> docs/system/arm/aspeed.rst | 10 ++++++++++
>>> hw/arm/aspeed.c | 39 ++++++++++++++++++++++++++++++++++++--
>>> 2 files changed, 47 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
>>> index d4e293e7f9..e70f0aeea3 100644
>>> --- a/docs/system/arm/aspeed.rst
>>> +++ b/docs/system/arm/aspeed.rst
>>> @@ -122,6 +122,10 @@ Options specific to Aspeed machines are :
>>> * ``spi-model`` to change the SPI Flash model.
>>> + * ``uart`` to change the default console device. Most of the machines
>>> + use the ``UART5`` device for a boot console, which is mapped on
>>> + ``/dev/ttyS4`` under Linux, but it is not always the case.
>>
>> This comment ...
>>
>>> For instance, to start the ``ast2500-evb`` machine with a different
>>> FMC chip and a bigger (64M) SPI chip, use :
>>> @@ -129,6 +133,12 @@ FMC chip and a bigger (64M) SPI chip, use :
>>> -M ast2500-evb,fmc-model=mx25l25635e,spi-model=mx66u51235f
>>> +To change the boot console and use device ``UART3`` (``/dev/ttyS2``
>>> +under Linux), use :
>>
>> ... and this one suggest 'boot-console' could be a better name.
>>
>> Or 'boot-console-index'.
>
> you might be right. people expect to find the console messages on
> this device. I will think about it.
>
>>
>>> +.. code-block:: bash
>>> +
>>> + -M ast2500-evb,uart=uart3
>>> Aspeed minibmc family boards (``ast1030-evb``)
>>> ==================================================================
>>> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
>>> index 3d5488faf7..6c32f674b9 100644
>>> --- a/hw/arm/aspeed.c
>>> +++ b/hw/arm/aspeed.c
>>> @@ -43,6 +43,7 @@ struct AspeedMachineState {
>>> AspeedSoCState soc;
>>> MemoryRegion boot_rom;
>>> bool mmio_exec;
>>> + uint32_t uart_chosen;
>>> char *fmc_model;
>>> char *spi_model;
>>> };
>>> @@ -331,10 +332,11 @@ static void
>>> connect_serial_hds_to_uarts(AspeedMachineState *bmc)
>>> AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(bmc);
>>> AspeedSoCState *s = &bmc->soc;
>>> AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s);
>>> + int uart_chosen = bmc->uart_chosen ? bmc->uart_chosen :
>>> amc->uart_default;
>>> - aspeed_soc_uart_set_chr(s, amc->uart_default, serial_hd(0));
>>> + 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++) {
>>> - if (uart == amc->uart_default) {
>>> + if (uart == uart_chosen) {
>>> continue;
>>> }
>>> aspeed_soc_uart_set_chr(s, uart, serial_hd(i));
>>> @@ -1077,6 +1079,35 @@ static void aspeed_set_spi_model(Object *obj,
>>> const char *value, Error **errp)
>>> bmc->spi_model = g_strdup(value);
>>> }
>>> +static char *aspeed_get_uart(Object *obj, Error **errp)
>>> +{
>>> + AspeedMachineState *bmc = ASPEED_MACHINE(obj);
>>> + AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(bmc);
>>> + int uart_chosen = bmc->uart_chosen ? bmc->uart_chosen :
>>> amc->uart_default;
>>> +
>>> + return g_strdup_printf("uart%d", uart_chosen - ASPEED_DEV_UART1
>>> + 1);
>>> +}
>>> +
>>> +static void aspeed_set_uart(Object *obj, const char *value, Error
>>> **errp)
>>> +{
>>> + AspeedMachineState *bmc = ASPEED_MACHINE(obj);
>>> + AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(bmc);
>>> + AspeedSoCClass *sc =
>>> ASPEED_SOC_CLASS(object_class_by_name(amc->soc_name));
>>> + int val;
>>> +
>>> + if (sscanf(value, "uart%u", &val) != 1) {
>>> + error_setg(errp, "Bad value for \"uart\" property");
>>
>> Why are you asking for a string and not an index?
>
> because the literal name is what people find in the DT. See files
> arch/arm/boot/dts/aspeed-bmc-* under Linux.
OK. After looking at this file, I suppose people would expect
a "bmc-console" property name:
-M ast2500-evb,bmc-console=uart3
next prev parent reply other threads:[~2023-05-31 7:51 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-08 7:58 [PATCH 00/12] aspeed: fixes and extensions Cédric Le Goater
2023-05-08 7:58 ` [PATCH 01/12] aspeed/hace: Initialize g_autofree pointer Cédric Le Goater
2023-05-08 14:28 ` Francisco Iglesias
2023-05-30 21:30 ` Philippe Mathieu-Daudé
2023-05-08 7:58 ` [PATCH 02/12] aspeed: Introduce a boot_rom region at the machine level Cédric Le Goater
2023-05-08 14:27 ` Francisco Iglesias
2023-05-30 21:28 ` Philippe Mathieu-Daudé
2023-05-08 7:58 ` [PATCH 03/12] aspeed: Use the boot_rom region of the fby35 machine Cédric Le Goater
2023-05-30 21:27 ` Philippe Mathieu-Daudé
2023-05-31 5:57 ` Cédric Le Goater
2023-05-08 7:58 ` [PATCH 04/12] hw/ssi: Add an "addr" property to SSIPeripheral Cédric Le Goater
2023-05-30 20:33 ` Philippe Mathieu-Daudé
2023-05-31 5:58 ` Cédric Le Goater
2023-05-08 7:58 ` [PATCH 05/12] hw/ssi: Introduce a ssi_get_cs() helper Cédric Le Goater
2023-05-30 20:34 ` Philippe Mathieu-Daudé
2023-05-30 21:15 ` Philippe Mathieu-Daudé
2023-05-31 5:59 ` Cédric Le Goater
2023-05-31 6:17 ` Philippe Mathieu-Daudé
2023-05-31 6:36 ` Cédric Le Goater
2023-05-31 7:39 ` Philippe Mathieu-Daudé
2023-06-05 5:57 ` Bernhard Beschow
2023-06-05 16:21 ` Cédric Le Goater
2023-05-31 5:58 ` Cédric Le Goater
2023-05-08 7:58 ` [PATCH 06/12] aspeed/smc: Wire CS lines at reset Cédric Le Goater
2023-05-30 20:56 ` Philippe Mathieu-Daudé
2023-05-31 6:14 ` Cédric Le Goater
2023-05-08 7:58 ` [PATCH 07/12] hw/ssi: Check for duplicate addresses Cédric Le Goater
2023-05-30 21:05 ` Philippe Mathieu-Daudé
2023-05-31 6:20 ` Cédric Le Goater
2023-05-08 7:58 ` [PATCH 08/12] aspeed: Create flash devices only when defaults are enabled Cédric Le Goater
2023-05-08 7:58 ` [PATCH 09/12] m25p80: Introduce an helper to retrieve the BlockBackend of a device Cédric Le Goater
2023-05-30 21:14 ` Philippe Mathieu-Daudé
2023-05-31 6:48 ` Cédric Le Goater
2023-05-31 7:47 ` Philippe Mathieu-Daudé
2023-05-08 7:58 ` [PATCH 10/12] aspeed: Get the BlockBackend of FMC0 from the flash device Cédric Le Goater
2023-05-30 21:08 ` Philippe Mathieu-Daudé
2023-05-08 7:58 ` [PATCH 11/12] aspeed: Introduce a "uart" machine option Cédric Le Goater
2023-05-30 21:22 ` Philippe Mathieu-Daudé
2023-05-31 6:28 ` Cédric Le Goater
2023-05-31 7:50 ` Philippe Mathieu-Daudé [this message]
2023-05-31 8:47 ` Cédric Le Goater
2023-05-08 7:58 ` [PATCH 12/12] target/arm: Allow users to set the number of VFP registers Cédric Le Goater
2023-05-30 15:03 ` [PATCH 00/12] aspeed: fixes and extensions Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ab96deaf-ca3f-fd28-254e-1797eb69b88d@linaro.org \
--to=philmd@linaro.org \
--cc=abhishek@drut.io \
--cc=andrew@aj.id.au \
--cc=clg@kaod.org \
--cc=joel@jms.id.au \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).