This attaches OpenRD's "SYSTEM" console to uftdi. Some special casing is
needed to not attach to the JTAG interface as well. I know it's a bit
ugly, but I couldn't come up with something cleaner; suggestions?

obligatory dmesg snippet:
uftdi0 at uhub2 port 2 configuration 1 interface 1 "FTDI OpenRD JTAGKey
FT2232D B" rev 2.00/5.00 addr 2
ucom0 at uftdi0 portno 2

Index: dev/usb/uftdi.c
===================================================================
RCS file: /home/tobiasu/obsd/cvs/src/sys/dev/usb/uftdi.c,v
retrieving revision 1.54
diff -u -p -r1.54 uftdi.c
--- dev/usb/uftdi.c     13 Oct 2009 19:33:17 -0000      1.54
+++ dev/usb/uftdi.c     13 Dec 2009 14:22:51 -0000
@@ -261,6 +261,7 @@ static const struct usb_devno uftdi_devs
        { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_OPENPORT_13M },
        { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_OPENPORT_13S },
        { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_OPENPORT_13U },
+       { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_OPENRD },
        { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_PCDJ_DAC2 },
        { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_PYRAMID },
        { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SEMC_DSS20 },
@@ -426,6 +427,12 @@ uftdi_match(struct device *parent, void 
                        return (UMATCH_NONE);
                usbd_set_config_index(uaa->device, USB_UNCONFIG_INDEX, 1);
        }
+
+       /* JTAG on USB interface 0 */
+       if (uaa->vendor == USB_VENDOR_FTDI &&
+           uaa->product == USB_PRODUCT_FTDI_OPENRD &&
+           uaa->ifaceno == 0)
+               return (UMATCH_NONE);
 
        if (nifaces <= 1)
                return (UMATCH_VENDOR_PRODUCT);
Index: dev/usb/usbdevs
===================================================================
RCS file: /home/tobiasu/obsd/cvs/src/sys/dev/usb/usbdevs,v
retrieving revision 1.462
diff -u -p -r1.462 usbdevs
--- dev/usb/usbdevs     8 Dec 2009 07:25:50 -0000       1.462
+++ dev/usb/usbdevs     12 Dec 2009 14:24:03 -0000
@@ -1414,6 +1414,7 @@ product FTDI FT232_6              0x6009  Serial
 product FTDI SERIAL_2232C      0x6010  2232C Serial
 product FTDI PS2KBDMS          0x8371  PS/2 Keyboard/Mouse
 product FTDI SERIAL_8U100AX    0x8372  Serial
+product FTDI OPENRD            0x9e90  OpenRD JTAGKey
 product FTDI LOCOBUFFER                0xc7d0  RR-CirKits LocoBuffer
 product FTDI DMX4ALL           0xc850  DMX4ALL DMX interface
 product FTDI ASK_RDR4X7_1      0xc990  ASK RDR 4X7

Reply via email to