summaryrefslogtreecommitdiffstats
path: root/serprog.c
diff options
context:
space:
mode:
authorCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2009-11-23 19:20:11 +0000
committerCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2009-11-23 19:20:11 +0000
commite51ea10a8889544b942d3490bb721f160fe09517 (patch)
treece82d190a42e73f31bf764e9f81e24f567cdca2d /serprog.c
parenteaac68bf8be13ff4cfe2b58119c766357a37d417 (diff)
downloadast2050-flashrom-e51ea10a8889544b942d3490bb721f160fe09517.zip
ast2050-flashrom-e51ea10a8889544b942d3490bb721f160fe09517.tar.gz
Move serial handling from serprog.c to serial.c
This is the first step in enabling platform independent serprog and it also allows other drivers to use serial port functionality without requiring serprog. Pure code move, no code changed. Corresponding to flashrom svn r771. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
Diffstat (limited to 'serprog.c')
-rw-r--r--serprog.c110
1 files changed, 0 insertions, 110 deletions
diff --git a/serprog.c b/serprog.c
index 2afa5be..6544245 100644
--- a/serprog.c
+++ b/serprog.c
@@ -61,8 +61,6 @@
#define S_CMD_Q_RDNMAXLEN 0x11 /* Query read-n maximum length */
#define S_CMD_S_BUSTYPE 0x12 /* Set used bustype(s). */
-int sp_fd;
-
static uint16_t sp_device_serbuf_size = 16;
static uint16_t sp_device_opbuf_size = 300;
/* Bitmap of supported commands */
@@ -95,12 +93,6 @@ static int sp_opbuf_usage = 0;
whether the command is supported before doing it */
static int sp_check_avail_automatic = 0;
-static void __attribute__((noreturn)) sp_die(char *msg)
-{
- perror(msg);
- exit(1);
-}
-
static int sp_opensocket(char *ip, unsigned int port)
{
int flag = 1;
@@ -130,108 +122,6 @@ static int sp_opensocket(char *ip, unsigned int port)
return sock;
}
-struct baudentry {
- int flag;
- unsigned int baud;
-};
-
-/* I'd like if the C preprocessor could have directives in macros */
-#define BAUDENTRY(baud) { B##baud, baud },
-static const struct baudentry sp_baudtable[] = {
- BAUDENTRY(9600)
- BAUDENTRY(19200)
- BAUDENTRY(38400)
- BAUDENTRY(57600)
- BAUDENTRY(115200)
-#ifdef B230400
- BAUDENTRY(230400)
-#endif
-#ifdef B460800
- BAUDENTRY(460800)
-#endif
-#ifdef B500000
- BAUDENTRY(500000)
-#endif
-#ifdef B576000
- BAUDENTRY(576000)
-#endif
-#ifdef B921600
- BAUDENTRY(921600)
-#endif
-#ifdef B1000000
- BAUDENTRY(1000000)
-#endif
-#ifdef B1152000
- BAUDENTRY(1152000)
-#endif
-#ifdef B1500000
- BAUDENTRY(1500000)
-#endif
-#ifdef B2000000
- BAUDENTRY(2000000)
-#endif
-#ifdef B2500000
- BAUDENTRY(2500000)
-#endif
-#ifdef B3000000
- BAUDENTRY(3000000)
-#endif
-#ifdef B3500000
- BAUDENTRY(3500000)
-#endif
-#ifdef B4000000
- BAUDENTRY(4000000)
-#endif
- {0, 0} /* Terminator */
-};
-
-int sp_openserport(char *dev, unsigned int baud)
-{
- struct termios options;
- int fd, i;
- fd = open(dev, O_RDWR | O_NOCTTY | O_NDELAY);
- if (fd < 0)
- sp_die("Error: cannot open serial port");
- fcntl(fd, F_SETFL, 0);
- tcgetattr(fd, &options);
- for (i = 0;; i++) {
- if (sp_baudtable[i].baud == 0) {
- close(fd);
- fprintf(stderr,
- "Error: cannot configure for baudrate %d\n",
- baud);
- exit(1);
- }
- if (sp_baudtable[i].baud == baud) {
- cfsetispeed(&options, sp_baudtable[i].flag);
- cfsetospeed(&options, sp_baudtable[i].flag);
- break;
- }
- }
- 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;
- tcsetattr(fd, TCSANOW, &options);
- return fd;
-}
-
-void sp_flush_incoming(void)
-{
- int i;
- for (i=0;i<100;i++) { /* In case the device doesnt do EAGAIN, just read 0 */
- unsigned char flush[16];
- ssize_t rv;
- rv = read(sp_fd, flush, sizeof(flush));
- if ((rv == -1) && (errno == EAGAIN))
- break;
- if (rv == -1)
- sp_die("flush read");
- }
- return;
-}
-
static int sp_sync_read_timeout(int loops)
{
int i;
OpenPOWER on IntegriCloud