Module Name: src
Committed By: mlelstv
Date: Mon Jan 21 19:08:43 UTC 2013
Modified Files:
src/sys/dev/usb: uftdi.c uftdireg.h
Log Message:
force chip into serial mode
add 232RL product id
To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 src/sys/dev/usb/uftdi.c
cvs rdiff -u -r1.7 -r1.8 src/sys/dev/usb/uftdireg.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/usb/uftdi.c
diff -u src/sys/dev/usb/uftdi.c:1.55 src/sys/dev/usb/uftdi.c:1.56
--- src/sys/dev/usb/uftdi.c:1.55 Sun Jan 20 13:43:24 2013
+++ src/sys/dev/usb/uftdi.c Mon Jan 21 19:08:42 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: uftdi.c,v 1.55 2013/01/20 13:43:24 reinoud Exp $ */
+/* $NetBSD: uftdi.c,v 1.56 2013/01/21 19:08:42 mlelstv Exp $ */
/*
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uftdi.c,v 1.55 2013/01/20 13:43:24 reinoud Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uftdi.c,v 1.56 2013/01/21 19:08:42 mlelstv Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -126,6 +126,7 @@ static const struct usb_devno uftdi_devs
{ USB_VENDOR_FALCOM, USB_PRODUCT_FALCOM_TWIST },
{ USB_VENDOR_FALCOM, USB_PRODUCT_FALCOM_SAMBA },
{ USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_232H },
+ { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_232RL },
{ USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_2232C },
{ USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_4232H },
{ USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_8U100AX },
@@ -525,6 +526,15 @@ uftdi_param(void *vsc, int portno, struc
if (sc->sc_dying)
return (EIO);
+ req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
+ req.bRequest = FTDI_SIO_SET_BITMODE;
+ USETW(req.wValue, FTDI_BITMODE_RESET << 8 | 0x00);
+ USETW(req.wIndex, portno);
+ USETW(req.wLength, 0);
+ err = usbd_do_request(sc->sc_udev, &req, NULL);
+ if (err)
+ return (EIO);
+
switch (sc->sc_type) {
case UFTDI_TYPE_SIO:
switch (t->c_ospeed) {
Index: src/sys/dev/usb/uftdireg.h
diff -u src/sys/dev/usb/uftdireg.h:1.7 src/sys/dev/usb/uftdireg.h:1.8
--- src/sys/dev/usb/uftdireg.h:1.7 Fri Aug 24 01:36:14 2012
+++ src/sys/dev/usb/uftdireg.h Mon Jan 21 19:08:42 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: uftdireg.h,v 1.7 2012/08/24 01:36:14 msaitoh Exp $ */
+/* $NetBSD: uftdireg.h,v 1.8 2013/01/21 19:08:42 mlelstv Exp $ */
/*
* Definitions for the FTDI USB Single Port Serial Converter -
@@ -17,14 +17,15 @@
/* Modified by Lennart Augustsson */
/* Vendor Request Interface */
-#define FTDI_SIO_RESET 0 /* Reset the port */
-#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */
-#define FTDI_SIO_SET_FLOW_CTRL 2 /* Set flow control register */
-#define FTDI_SIO_SET_BAUD_RATE 3 /* Set baud rate */
-#define FTDI_SIO_SET_DATA 4 /* Set the data characteristics of the port */
-#define FTDI_SIO_GET_STATUS 5 /* Retrieve current value of status reg */
-#define FTDI_SIO_SET_EVENT_CHAR 6 /* Set the event character */
-#define FTDI_SIO_SET_ERROR_CHAR 7 /* Set the error character */
+#define FTDI_SIO_RESET 0 /* Reset the port */
+#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */
+#define FTDI_SIO_SET_FLOW_CTRL 2 /* Set flow control register */
+#define FTDI_SIO_SET_BAUD_RATE 3 /* Set baud rate */
+#define FTDI_SIO_SET_DATA 4 /* Set the data characteristics of the port */
+#define FTDI_SIO_GET_STATUS 5 /* Retrieve current value of status reg */
+#define FTDI_SIO_SET_EVENT_CHAR 6 /* Set the event character */
+#define FTDI_SIO_SET_ERROR_CHAR 7 /* Set the error character */
+#define FTDI_SIO_SET_BITMODE 11 /* Set FIFO/Serial mode */
/* Port Identifier Table */
#define FTDI_PIT_DEFAULT 0 /* SIOA */
@@ -345,3 +346,24 @@ enum {
#define FTDI_GET_LSR(p) ((p)[1])
#define FTDI_LSR_MASK (~0x60) /* interesting bits */
#define FTDI_OUT_TAG(len, port) (((len) << 2) | (port))
+
+/*
+ * BmRequestType: 0100 0000B
+ * bRequest: FTDI_SIO_SET_BITMODE
+ * wValue: Bitmode value - see below
+ * wIndex: Port
+ * wLength: 0
+ * Data: None
+ *
+ * Not all modes are available on all chips
+ */
+/* FTDI_SIO_SET_BITMODE */
+#define FTDI_BITMODE_RESET 0x00 /* UART mode */
+#define FTDI_BITMODE_BITBANG 0x01 /* asynchrounous bitbang mode */
+#define FTDI_BITMODE_MPSSE 0x02 /* MPSSE mode */
+#define FTDI_BITMODE_SYNCBB 0x04 /* synchronous bitbang mode */
+#define FTDI_BITMODE_MCU 0x08 /* MCU Host Bus Emulation mode */
+#define FTDI_BITMODE_OPTO 0x10 /* Fast Opto-Isolated Serial Interface Mode */
+#define FTDI_BITMODE_CBUS 0x20 /* Bitbang on CBUS pins */
+#define FTDI_BITMODE_SYNCFF 0x40 /* Synchronous FIFO mode */
+