[U-Boot] [PATCH v3] NS16550: buffer reads
Wolfgang Denk
wd at denx.de
Sat Oct 15 21:08:44 CEST 2011
Dear Simon Glass,
In message <1318694632-21872-1-git-send-email-sjg at chromium.org> you wrote:
> From: Scott Wood <scottwood at freescale.com>
>
> From: Scott Wood <scottwood at freescale.com>
>
> This improves the performance of U-Boot when accepting rapid input,
> such as pasting a sequence of commands.
>
> Without this patch, on P4080DS I see a maximum of around 5 lines can
> be pasted. With this patch, it handles around 70 lines before lossage,
> long enough for most things you'd paste.
>
> With it enabled, on ppc it's an extra 396 bytes of image size, and 1056
> bytes of BSS.
>
> ARM note from Simon Glass <sjg at chromium.org> - ARM code size goes from
> 212 to 484 bytes (extra 272 bytes), BSS to 1056 bytes.
>
> Signed-off-by: Scott Wood <scottwood at freescale.com>
> ---
> Changes in v2:
> - Fix checkpatch warnings, the other one was already there
>
> Changes in v3:
> - Use CONFIG_NS16550_BUFFER_READS to set the buffer size also
>
> README | 12 ++++++
> drivers/serial/ns16550.c | 96 +++++++++++++++++++++++++++++++++++++++++++--
> drivers/serial/serial.c | 5 +-
> include/ns16550.h | 4 +-
> 4 files changed, 108 insertions(+), 9 deletions(-)
>
> diff --git a/README b/README
> index 7e032a9..1150d6c 100644
> --- a/README
> +++ b/README
> @@ -2862,6 +2862,18 @@ use the "saveenv" command to store a valid environment.
> space for already greatly restricted images, including but not
> limited to NAND_SPL configurations.
>
> +- CONFIG_NS16550_BUFFER_READS:
> + Instead of reading directly from the receive register
> + every time U-Boot is ready for another byte, keep a
> + buffer and fill it from the hardware fifo every time
> + U-Boot reads a character. This helps U-Boot keep up with
> + a larger amount of rapid input, such as happens when
> + pasting text into the terminal.
> +
> + To use this option, define CONFIG_NS16550_BUFFER_READS to
> + the size of the buffer you want (256 is a reasonable value).
If we should accept that patch, then please chose a better name here.
For example, CONFIG_NS16550_RBUF_SIZE (or similar) seems to be a
somewhat better choice.
> +#ifdef CONFIG_NS16550_BUFFER_READS
> +
> +#define BUF_SIZE CONFIG_NS16550_BUFFER_READS
> +#define NUM_PORTS 4
> +
> +struct ns16550_priv {
> + char buf[BUF_SIZE];
> + unsigned int head, tail;
> +};
There is little sense in adding another variable here. Just write:
char buf[CONFIG_NS16550_BUFFER_READS];
(or whatever variable name would be used here).
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"The release of emotion is what keeps us health. Emotionally
healthy."
"That may be, Doctor. However, I have noted that the healthy release
of emotion is frequently unhealthy for those closest to you."
-- McCoy and Spock, "Plato's Stepchildren", stardate 5784.3
More information about the U-Boot
mailing list