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