On Sun,  6 Mar 2022 13:39:07 +0100
Pali Rohár <p...@kernel.org> wrote:

> Call kwboot_open_tty() which baudrate value which was specified at the
                         with
> command line by option -B. This function returns error if baudrate is not
> supported by selected tty device.
> 
> Initial baudrate for image transfer is always 115200, so call
> kwboot_tty_change_baudrate() with value 115200 immediately after
> kwboot_open_tty() if baudrate specified by option -B is different than
> 115200.
> 
> This help user to see error message about unsupported baudrate value by
> local tty device immediately after starting kwboot.
This makes kwboot fail immediately, informing that baudrate is
unsupported, instead of failing only after the first part of image is
already sent.

> 
> Before this change, kwboot sent kwbimage header (at 115200 Bd) and then
> validated that selected baudrate if is supported by tty device. It consumed
> too much time (need to send kwbimage again and again) until some supported
> baudrate by local tty device was guessed.
This last paragraph can be dropped. If you want to keep it, please
change "Before this change" to "Until now"
> 
> Signed-off-by: Pali Rohár <p...@kernel.org>
> ---
>  tools/kwboot.c | 14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/kwboot.c b/tools/kwboot.c
> index f975c4a6c6ca..d9498af8fc02 100644
> --- a/tools/kwboot.c
> +++ b/tools/kwboot.c
> @@ -2137,12 +2137,24 @@ main(int argc, char **argv)
>       if (optind != argc)
>               goto usage;
>  
> -     tty = kwboot_open_tty(ttypath, imgpath ? 115200 : baudrate);
> +     tty = kwboot_open_tty(ttypath, baudrate);
>       if (tty < 0) {
>               perror(ttypath);
>               goto out;
>       }
>  
> +     /*
> +      * initial baudrate for image transfer is always 115200,
> +      * change to different baudrate is done after sending header
*the change to different baudrate is done only after the header is sent
> +      */
> +     if (imgpath && baudrate != 115200) {
> +             rc = kwboot_tty_change_baudrate(tty, 115200);
> +             if (rc) {
> +                     perror(ttypath);
> +                     goto out;
> +             }
> +     }
> +
>       if (baudrate == 115200)
>               /* do not change baudrate during Xmodem to the same value */
>               baudrate = 0;

Marek

Reply via email to