summaryrefslogtreecommitdiff
path: root/serial.c
diff options
context:
space:
mode:
authorstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2016-01-04 03:05:06 +0000
committerstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2016-01-04 03:05:06 +0000
commita039e1a9ff7d697336673084db29642fb2628bfd (patch)
tree1c48a68d89cc5a2ded687460b68a6ea8c234741f /serial.c
parent714a92302eb40ea1b05f9caa719aaa02e2fd0848 (diff)
downloadflashrom-a039e1a9ff7d697336673084db29642fb2628bfd.tar.gz
serprog: ignore failures when setting serial port options.
There is no good reason to abort earlier just because some options did not stick. This should improve compatibility without negative effects. If communication is affected by the missing flag(s) then we abort later anyway. Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Urja Rannikko <urjaman@gmail.com> git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@1906 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'serial.c')
-rw-r--r--serial.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/serial.c b/serial.c
index 63774a5..d076bc8 100644
--- a/serial.c
+++ b/serial.c
@@ -209,12 +209,25 @@ int serialport_config(fdtype fd, unsigned int baud)
if (observed.c_cflag != wanted.c_cflag ||
observed.c_lflag != wanted.c_lflag ||
observed.c_iflag != wanted.c_iflag ||
- observed.c_oflag != wanted.c_oflag ||
- cfgetispeed(&observed) != cfgetispeed(&wanted)) {
- msg_perr("%s: Some requested options did not stick.\n", __func__);
- return 1;
+ observed.c_oflag != wanted.c_oflag) {
+ msg_pwarn("Some requested serial options did not stick, continuing anyway.\n");
+ msg_pdbg(" observed wanted\n"
+ "c_cflag: 0x%08lX 0x%08lX\n"
+ "c_lflag: 0x%08lX 0x%08lX\n"
+ "c_iflag: 0x%08lX 0x%08lX\n"
+ "c_oflag: 0x%08lX 0x%08lX\n",
+ (long)observed.c_cflag, (long)wanted.c_cflag,
+ (long)observed.c_lflag, (long)wanted.c_lflag,
+ (long)observed.c_iflag, (long)wanted.c_iflag,
+ (long)observed.c_oflag, (long)wanted.c_oflag
+ );
+ }
+ if (cfgetispeed(&observed) != cfgetispeed(&wanted) ||
+ cfgetospeed(&observed) != cfgetospeed(&wanted)) {
+ msg_pwarn("Could not set baud rates exactly.\n");
+ msg_pdbg("Actual baud flags are: ispeed: 0x%08lX, ospeed: 0x%08lX\n",
+ (long)cfgetispeed(&observed), (long)cfgetospeed(&observed));
}
- msg_pdbg("Baud rate is %d now.\n", entry->baud);
#endif
return 0;
}