diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2009-11-21 11:02:48 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2009-11-21 11:02:48 +0000 |
commit | 03772d22cca157007e72b3ec52fb915d2d689fa7 (patch) | |
tree | c32fb3399df6c4c26dfb58066e1abffbe137e892 /serprog.c | |
parent | 31b3779d971b66d52eb4d54e19a53c3f53ef5653 (diff) | |
download | flashrom-03772d22cca157007e72b3ec52fb915d2d689fa7.zip flashrom-03772d22cca157007e72b3ec52fb915d2d689fa7.tar.gz |
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 <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
Diffstat (limited to 'serprog.c')
-rw-r--r-- | serprog.c | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -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 */ |