[PATCH 4/4] serial: embed the rx buffer in struct serial_dev_priv

Simon Glass sjg at chromium.org
Wed Oct 9 03:51:03 CEST 2024


On Thu, 3 Oct 2024 at 08:11, Rasmus Villemoes <ravi at prevas.dk> wrote:
>
> The initialization of upriv->buf doesn't check for a NULL return. But
> there's actually no point in doing a separate, unconditional malloc()
> in post_probe; we can just make serial_dev_priv contain the rx buffer
> itself, and let the (larger) allocation be handled by the driver core
> when it allocates the ->per_device_auto. The total run-time memory
> used is mostly the same, we reduce the code size a little, and as a
> bonus, struct serial_dev_priv does not contain the unused members when
> !SERIAL_RX_BUFFER.
>
> Signed-off-by: Rasmus Villemoes <ravi at prevas.dk>
> ---
>  drivers/serial/serial-uclass.c | 5 -----
>  include/serial.h               | 4 +++-
>  2 files changed, 3 insertions(+), 6 deletions(-)
>

Reviewed-by: Simon Glass <sjg at chromium.org>


> diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
> index 484f0f7d3e8..d737e25223d 100644
> --- a/drivers/serial/serial-uclass.c
> +++ b/drivers/serial/serial-uclass.c
> @@ -588,11 +588,6 @@ static int serial_post_probe(struct udevice *dev)
>         sdev.getc = serial_stub_getc;
>         sdev.tstc = serial_stub_tstc;
>
> -#if CONFIG_IS_ENABLED(SERIAL_RX_BUFFER)
> -       /* Allocate the RX buffer */
> -       upriv->buf = malloc(CONFIG_SERIAL_RX_BUFFER_SIZE);
> -#endif
> -
>         stdio_register_dev(&sdev, &upriv->sdev);
>  #endif
>         return 0;
> diff --git a/include/serial.h b/include/serial.h
> index 14563239b7d..eabc49f820f 100644
> --- a/include/serial.h
> +++ b/include/serial.h
> @@ -298,9 +298,11 @@ struct dm_serial_ops {
>  struct serial_dev_priv {
>         struct stdio_dev *sdev;
>
> -       char *buf;
> +#if CONFIG_IS_ENABLED(SERIAL_RX_BUFFER)
> +       char buf[CONFIG_SERIAL_RX_BUFFER_SIZE];
>         uint rd_ptr;
>         uint wr_ptr;
> +#endif
>  };
>
>  /* Access the serial operations for a device */
> --
> 2.46.2
>


More information about the U-Boot mailing list