From 29ff205e6f10895cd6c53678398b962eb18694d2 Mon Sep 17 00:00:00 2001 From: Thomas Heijligen Date: Mon, 27 Sep 2021 15:12:26 +0200 Subject: custom_baud: move Linux specific code into own file Handle system specific code in an own file like i2c_helper_linux.c. The build system decides when to build it. Change-Id: I0744e769dcc6000483e7256105903a87e927ee77 Signed-off-by: Thomas Heijligen Reviewed-on: https://review.coreboot.org/c/flashrom/+/57990 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber --- Makefile | 7 ++++++- custom_baud.c | 47 ++------------------------------------------ custom_baud_linux.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++ meson.build | 6 +++++- 4 files changed, 69 insertions(+), 47 deletions(-) create mode 100644 custom_baud_linux.c diff --git a/Makefile b/Makefile index 19f86730..df67e0f4 100644 --- a/Makefile +++ b/Makefile @@ -750,7 +750,12 @@ FEATURE_CFLAGS += -D'CONFIG_I2C_SUPPORT=1' endif ifneq ($(NEED_SERIAL), ) -LIB_OBJS += serial.o custom_baud.o +LIB_OBJS += serial.o +ifeq ($(TARGET_OS), Linux) +LIB_OBJS += custom_baud_linux.o +else +LIB_OBJS += custom_baud.o +endif endif ifneq ($(NEED_POSIX_SOCKETS), ) diff --git a/custom_baud.c b/custom_baud.c index caf2b78c..28f182c3 100644 --- a/custom_baud.c +++ b/custom_baud.c @@ -14,52 +14,10 @@ * GNU General Public License for more details. */ -#include "platform.h" -#include "custom_baud.h" - -#if IS_LINUX -#include -#include -#include -#include - -/* - * This include hell above is why this is in a separate source file. See eg. - * https://www.downtowndougbrown.com/2013/11/linux-custom-serial-baud-rates/ - * https://stackoverflow.com/questions/12646324/how-to-set-a-custom-baud-rate-on-linux - * https://github.com/jbkim/Linux-custom-baud-rate - * for more info. - */ - -int set_custom_baudrate(int fd, unsigned int baud) -{ - struct termios2 tio; - if (ioctl(fd, TCGETS2, &tio)) { - return -1; - } - tio.c_cflag &= ~CBAUD; - tio.c_cflag |= BOTHER; - tio.c_ispeed = baud; - tio.c_ospeed = baud; - return ioctl(fd, TCSETS2, &tio); -} - -int use_custom_baud(unsigned int baud, const struct baudentry *baudtable) -{ - int i; - for (i = 0; baudtable[i].baud; i++) { - if (baudtable[i].baud == baud) - return 0; - - if (baudtable[i].baud > baud) - return 1; - } - return 1; -} - -#else #include +#include "custom_baud.h" + /* Stub, should not get called. */ int set_custom_baudrate(int fd, unsigned int baud) { @@ -71,4 +29,3 @@ int use_custom_baud(unsigned int baud, const struct baudentry *baudtable) { return 0; } -#endif diff --git a/custom_baud_linux.c b/custom_baud_linux.c new file mode 100644 index 00000000..2d5f261d --- /dev/null +++ b/custom_baud_linux.c @@ -0,0 +1,56 @@ +/* + * This file is part of the flashrom project. + * + * Copyright (C) 2017 Urja Rannikko + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include + +#include "custom_baud.h" + +/* + * This include hell above is why this is in a separate source file. See eg. + * https://www.downtowndougbrown.com/2013/11/linux-custom-serial-baud-rates/ + * https://stackoverflow.com/questions/12646324/how-to-set-a-custom-baud-rate-on-linux + * https://github.com/jbkim/Linux-custom-baud-rate + * for more info. + */ + +int set_custom_baudrate(int fd, unsigned int baud) +{ + struct termios2 tio; + if (ioctl(fd, TCGETS2, &tio)) { + return -1; + } + tio.c_cflag &= ~CBAUD; + tio.c_cflag |= BOTHER; + tio.c_ispeed = baud; + tio.c_ospeed = baud; + return ioctl(fd, TCSETS2, &tio); +} + +int use_custom_baud(unsigned int baud, const struct baudentry *baudtable) +{ + int i; + for (i = 0; baudtable[i].baud; i++) { + if (baudtable[i].baud == baud) + return 0; + + if (baudtable[i].baud > baud) + return 1; + } + return 1; +} diff --git a/meson.build b/meson.build index fcb11c63..1a36df88 100644 --- a/meson.build +++ b/meson.build @@ -323,8 +323,12 @@ endif # raw serial IO if need_serial - srcs += 'custom_baud.c' srcs += 'serial.c' + if host_machine.system() == 'linux' + srcs += 'custom_baud_linux.c' + else + srcs += 'custom_baud.c' + endif endif prefix = get_option('prefix') -- cgit v1.2.3