Nico Huber has submitted this change. ( https://review.coreboot.org/c/flashrom/+/57990 )
Change subject: custom_baud: move Linux specific code into own file ......................................................................
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 thomas.heijligen@secunet.de Reviewed-on: https://review.coreboot.org/c/flashrom/+/57990 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Nico Huber nico.h@gmx.de --- M Makefile M custom_baud.c A custom_baud_linux.c M meson.build 4 files changed, 69 insertions(+), 47 deletions(-)
Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, approved
diff --git a/Makefile b/Makefile index 19f8673..df67e0f 100644 --- a/Makefile +++ b/Makefile @@ -750,7 +750,12 @@ 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 caf2b78..28f182c 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 <sys/ioctl.h> -#include <fcntl.h> -#include <asm-generic/termbits.h> -#include <asm-generic/ioctls.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-o... - * 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 <errno.h>
+#include "custom_baud.h" + /* Stub, should not get called. */ int set_custom_baudrate(int fd, unsigned int baud) { @@ -71,4 +29,3 @@ { return 0; } -#endif diff --git a/custom_baud_linux.c b/custom_baud_linux.c new file mode 100644 index 0000000..2d5f261 --- /dev/null +++ b/custom_baud_linux.c @@ -0,0 +1,56 @@ +/* + * This file is part of the flashrom project. + * + * Copyright (C) 2017 Urja Rannikko urjaman@gmail.com + * + * 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 <sys/ioctl.h> +#include <fcntl.h> +#include <asm-generic/termbits.h> +#include <asm-generic/ioctls.h> + +#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-o... + * 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 fcb11c6..1a36df8 100644 --- a/meson.build +++ b/meson.build @@ -323,8 +323,12 @@
# 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')