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