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

Reply via email to