60 lines
1.4 KiB
Text
60 lines
1.4 KiB
Text
$NetBSD: patch-ab,v 1.3 2006/11/28 16:20:48 tv Exp $
|
|
|
|
--- icd.c.orig 2001-03-29 05:29:01.000000000 -0500
|
|
+++ icd.c
|
|
@@ -12,9 +12,16 @@
|
|
|
|
#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;
|
|
|
|
+#ifdef __INTERIX
|
|
+#define udelay usleep
|
|
+#else
|
|
void udelay(unsigned usec)
|
|
{
|
|
/* wait for msec milliseconds or more ... */
|
|
@@ -26,6 +33,7 @@ void udelay(unsigned usec)
|
|
|
|
nanosleep(&time,NULL);
|
|
}
|
|
+#endif
|
|
|
|
void dtr_set()
|
|
{
|
|
@@ -278,7 +286,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 +294,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 +306,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();
|