From 051b086c0f58298ac110c62bf9b20c4050cf2a7c Mon Sep 17 00:00:00 2001 From: Shawn Nock Date: Thu, 16 Jan 2020 11:03:01 -0500 Subject: [PATCH] Assigns special baudrate '0' to skip uart speed setup The MT7628 uartlite is janky, allow umcumgr to skip setup so that finer grained adjustments can be done manually in the peripheral registers. umcumgr then just uses these values. --- src/serial_util.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/serial_util.c b/src/serial_util.c index 090b648..a694a4c 100644 --- a/src/serial_util.c +++ b/src/serial_util.c @@ -23,6 +23,8 @@ static speed_t speed_from_string(char const *s) { return DEFAULT_SPEED; } switch (speed) { + case 0: + return B0; case 9600: return B9600; case 115200: @@ -55,9 +57,12 @@ int serial_init(char const *serial_port, char const *speed) { fprintf(stderr, "Failed to get termios attrs.\n"); } - if (cfsetspeed(&t_options, speed_from_string(speed)) < 0) { - fprintf(stderr, "Failed to set port speed.\n"); - return 2; + speed_t s = speed_from_string(speed); + if (s != B0) { + if (cfsetspeed(&t_options, speed_from_string(speed)) < 0) { + fprintf(stderr, "Failed to set port speed.\n"); + return 2; + } } t_options.c_lflag &= ~(ICANON | ECHO | ECHOE);