From a4a9bfb2284403d44589b26700e1f8add3013352 Mon Sep 17 00:00:00 2001 From: Carl-Daniel Hailfinger Date: Sat, 21 Nov 2009 11:02:48 +0000 Subject: Bus Pirate support needs serial communication Serprog already has such functionality, so it makes sense to share that. TODO: Factor out serial communication into a separate file, have that code be available even if serprog is not selected and make it portable (it is very Linux-centric right now). Corresponding to flashrom svn r768. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Stefan Reinauer --- serprog.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'serprog.c') diff --git a/serprog.c b/serprog.c index 69d0c08..2afa5be 100644 --- a/serprog.c +++ b/serprog.c @@ -61,7 +61,7 @@ #define S_CMD_Q_RDNMAXLEN 0x11 /* Query read-n maximum length */ #define S_CMD_S_BUSTYPE 0x12 /* Set used bustype(s). */ -static int sp_fd; +int sp_fd; static uint16_t sp_device_serbuf_size = 16; static uint16_t sp_device_opbuf_size = 300; @@ -185,7 +185,7 @@ static const struct baudentry sp_baudtable[] = { {0, 0} /* Terminator */ }; -static int sp_openserport(char *dev, unsigned int baud) +int sp_openserport(char *dev, unsigned int baud) { struct termios options; int fd, i; @@ -208,20 +208,16 @@ static int sp_openserport(char *dev, unsigned int baud) break; } } - options.c_cflag &= ~PARENB; - options.c_cflag &= ~CSTOPB; - options.c_cflag &= ~CSIZE; - options.c_cflag |= CS8; - options.c_cflag &= ~CRTSCTS; + options.c_cflag &= ~(PARENB | CSTOPB | CSIZE | CRTSCTS); + options.c_cflag |= (CS8 | CLOCAL | CREAD); options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); options.c_iflag &= ~(IXON | IXOFF | IXANY | ICRNL | IGNCR | INLCR); options.c_oflag &= ~OPOST; - options.c_cflag |= (CLOCAL | CREAD); tcsetattr(fd, TCSANOW, &options); return fd; } -static void sp_flush_incoming(void) +void sp_flush_incoming(void) { int i; for (i=0;i<100;i++) { /* In case the device doesnt do EAGAIN, just read 0 */ -- cgit v1.1