Module Name: src
Committed By: sborrill
Date: Sat Oct 10 20:34:45 UTC 2009
Modified Files:
src/share/man/man4 [netbsd-5]: uftdi.4
src/sys/dev/usb [netbsd-5]: uftdi.c usbdevs
Log Message:
Pull up the following revisions(s) (requested by snj in ticket #1083):
sys/dev/usb/uftdi.c: revision 1.41-1.42
share/man/man4/uftdi.4: revision 1.15
sys/dev/usb/usbdevs: revision 1.527
Add support for multiple channel cards, specifically quad channel FT4232H.
Plus fix minor format nit and legacy title comment removal.
To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.12.4.1 src/share/man/man4/uftdi.4
cvs rdiff -u -r1.39 -r1.39.4.1 src/sys/dev/usb/uftdi.c
cvs rdiff -u -r1.519.4.1 -r1.519.4.2 src/sys/dev/usb/usbdevs
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/man/man4/uftdi.4
diff -u src/share/man/man4/uftdi.4:1.12 src/share/man/man4/uftdi.4:1.12.4.1
--- src/share/man/man4/uftdi.4:1.12 Wed Apr 30 13:10:54 2008
+++ src/share/man/man4/uftdi.4 Sat Oct 10 20:34:45 2009
@@ -1,4 +1,4 @@
-.\" $NetBSD: uftdi.4,v 1.12 2008/04/30 13:10:54 martin Exp $
+.\" $NetBSD: uftdi.4,v 1.12.4.1 2009/10/10 20:34:45 sborrill Exp $
.\"
.\" Copyright (c) 2000 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -74,8 +74,9 @@
.Sh DESCRIPTION
The
.Nm
-driver provides support for various serial adapters based on the FTDI
-FT8U100AX and FT8U232AM chips.
+driver provides support for various serial adapters based on the FTDI USB
+UART IC family. Supported chip models are FT8U100AX, FT8U232AM, FT232BM,
+FT232R, dual channel FT2232D, dual channel FT2232H, and quad channel FT4232H.
.Pp
The device is accessed through the
.Xr ucom 4
Index: src/sys/dev/usb/uftdi.c
diff -u src/sys/dev/usb/uftdi.c:1.39 src/sys/dev/usb/uftdi.c:1.39.4.1
--- src/sys/dev/usb/uftdi.c:1.39 Sat Sep 6 21:42:05 2008
+++ src/sys/dev/usb/uftdi.c Sat Oct 10 20:34:45 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: uftdi.c,v 1.39 2008/09/06 21:42:05 rmind Exp $ */
+/* $NetBSD: uftdi.c,v 1.39.4.1 2009/10/10 20:34:45 sborrill Exp $ */
/*
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -29,12 +29,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-/*
- * FTDI FT8U100AX serial adapter driver
- */
-
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uftdi.c,v 1.39 2008/09/06 21:42:05 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uftdi.c,v 1.39.4.1 2009/10/10 20:34:45 sborrill Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -64,7 +60,7 @@
#define UFTDI_CONFIG_INDEX 0
#define UFTDI_IFACE_INDEX 0
-#define UFTDI_MAX_PORTS 2
+#define UFTDI_MAX_PORTS 4
/*
* These are the maximum number of bytes transferred per frame.
@@ -81,6 +77,7 @@
enum uftdi_type sc_type;
u_int sc_hdrlen;
u_int sc_numports;
+ u_int sc_chiptype;
u_char sc_msr;
u_char sc_lsr;
@@ -90,6 +87,7 @@
u_char sc_dying;
u_int last_lcr;
+
};
Static void uftdi_get_status(void *, int portno, u_char *lsr, u_char *msr);
@@ -121,6 +119,7 @@
{ USB_VENDOR_FALCOM, USB_PRODUCT_FALCOM_TWIST },
{ USB_VENDOR_FALCOM, USB_PRODUCT_FALCOM_SAMBA },
{ USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_2232C },
+ { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_4232H },
{ USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_8U100AX },
{ USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_8U232AM },
{ USB_VENDOR_FTDI, USB_PRODUCT_FTDI_MHAM_KW },
@@ -178,6 +177,7 @@
USB_ATTACH_START(uftdi, sc, uaa);
usbd_device_handle dev = uaa->device;
usbd_interface_handle iface;
+ usb_device_descriptor_t *ddesc;
usb_interface_descriptor_t *id;
usb_endpoint_descriptor_t *ed;
char *devinfop;
@@ -204,24 +204,29 @@
sc->sc_dev = self;
sc->sc_udev = dev;
sc->sc_numports = 1;
- switch( uaa->vendor ) {
- case USB_VENDOR_FTDI:
- switch (uaa->product) {
- case USB_PRODUCT_FTDI_SERIAL_8U100AX:
- sc->sc_type = UFTDI_TYPE_SIO;
- sc->sc_hdrlen = 1;
- break;
- case USB_PRODUCT_FTDI_SERIAL_2232C:
- sc->sc_numports = 2;
- /* FALLTHROUGH */
- default: /* Most uftdi devices are 8U232AM */
- sc->sc_type = UFTDI_TYPE_8U232AM;
- sc->sc_hdrlen = 0;
- }
+ sc->sc_type = UFTDI_TYPE_8U232AM; /* most devices are post-8U232AM */
+ sc->sc_hdrlen = 0;
+ if (uaa->vendor == USB_VENDOR_FTDI
+ && uaa->product == USB_PRODUCT_FTDI_SERIAL_8U100AX) {
+ sc->sc_type = UFTDI_TYPE_SIO;
+ sc->sc_hdrlen = 1;
+ }
+
+ ddesc = usbd_get_device_descriptor(dev);
+ sc->sc_chiptype = UGETW(ddesc->bcdDevice);
+ switch (sc->sc_chiptype) {
+ case 0x500: /* 2232D */
+ case 0x700: /* 2232H */
+ sc->sc_numports = 2;
+ break;
+ case 0x800: /* 4232H */
+ sc->sc_numports = 4;
+ break;
+ case 0x200: /* 232/245AM */
+ case 0x400: /* 232/245BL */
+ case 0x600: /* 232/245R */
+ default:
break;
- default: /* Most uftdi devices are 8U232AM */
- sc->sc_type = UFTDI_TYPE_8U232AM;
- sc->sc_hdrlen = 0;
}
for (idx = UFTDI_IFACE_INDEX; idx < sc->sc_numports; idx++) {
@@ -285,8 +290,8 @@
uca.info = NULL;
DPRINTF(("uftdi: in=0x%x out=0x%x\n", uca.bulkin, uca.bulkout));
- sc->sc_subdev[idx] = config_found_sm_loc(self, "ucombus", NULL, &uca,
- ucomprint, ucomsubmatch);
+ sc->sc_subdev[idx] = config_found_sm_loc(self, "ucombus", NULL,
+ &uca, ucomprint, ucomsubmatch);
}
usbd_add_drv_event(USB_EVENT_DRIVER_ATTACH, sc->sc_udev,
Index: src/sys/dev/usb/usbdevs
diff -u src/sys/dev/usb/usbdevs:1.519.4.1 src/sys/dev/usb/usbdevs:1.519.4.2
--- src/sys/dev/usb/usbdevs:1.519.4.1 Sat Nov 22 05:10:07 2008
+++ src/sys/dev/usb/usbdevs Sat Oct 10 20:34:45 2009
@@ -1,4 +1,4 @@
-$NetBSD: usbdevs,v 1.519.4.1 2008/11/22 05:10:07 snj Exp $
+$NetBSD: usbdevs,v 1.519.4.2 2009/10/10 20:34:45 sborrill Exp $
/*
* Copyright (c) 1998-2004 The NetBSD Foundation, Inc.
@@ -1057,7 +1057,8 @@
/* Future Technology Devices products */
product FTDI SERIAL_8U232AM 0x6001 8U232AM Serial converter
-product FTDI SERIAL_2232C 0x6010 2232C USB FAST SERIAL ADAPTER
+product FTDI SERIAL_2232C 0x6010 2232C USB dual FAST SERIAL ADAPTER
+product FTDI SERIAL_4232H 0x6011 2232H USB quad FAST SERIAL ADAPTER
product FTDI PS2KBDMS 0x8371 PS/2 Keyboard/Mouse
product FTDI SERIAL_8U100AX 0x8372 8U100AX Serial converter
product FTDI MHAM_KW 0xeee8 KW