$NetBSD: patch-ab,v 1.4 2025/04/21 16:28:00 wiz Exp $ --- icd.c.orig 2001-03-29 10:29:01.000000000 +0000 +++ icd.c @@ -12,6 +12,10 @@ #define BAUDRATE B57600 +#if defined(__DragonFly__) && !defined(O_SYNC) +#define O_SYNC O_FSYNC +#endif + int icd_fd; /* file descriptor for serial port */ int controller_type=-1; @@ -278,7 +282,7 @@ int icd_init(char *port) { struct termios oldtio, newtio; - if((icd_fd=open(port, O_NOCTTY | O_RDWR | O_SYNC)) == -1) { + if((icd_fd=open(port, O_NOCTTY | O_RDWR | O_SYNC | O_NONBLOCK)) == -1) { perror("Error opening device:"); return -1; } @@ -286,10 +290,11 @@ int icd_init(char *port) tcgetattr(icd_fd, &oldtio); memset(&newtio,0, sizeof(newtio)); - newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD; + newtio.c_cflag = CS8 | CLOCAL | CREAD; newtio.c_iflag = IGNPAR; newtio.c_oflag = 0; newtio.c_lflag = 0; + newtio.c_ispeed = newtio.c_ospeed = BAUDRATE; newtio.c_cc[VTIME] = 20; newtio.c_cc[VMIN] = 0; @@ -297,6 +302,8 @@ int icd_init(char *port) tcflush(icd_fd, TCIFLUSH); tcsetattr(icd_fd, TCSANOW, &newtio); + fcntl(icd_fd, F_SETFL, 0); /* clear nonblock */ + icd_hw_reset(); rts_set();