Module Name: src Committed By: lloyd Date: Tue Oct 8 20:40:10 UTC 2024
Modified Files: src/sys/dev/usb: uftdi.c usbdevices.config Log Message: Add a match quirk matching interface 0 on an iCEBreaker FPGA board This board has an FTDI 2232C with port A (USB interface 0) connected to the SPI Flash memory for programming and port B (USB interface 1) connected to the FPGA's serial lines. The quirk matching was adjusted to use pmatch(9) because the iCEBreaker product string contains a version number which changes from time to time. To generate a diff of this commit: cvs rdiff -u -r1.79 -r1.80 src/sys/dev/usb/uftdi.c cvs rdiff -u -r1.43 -r1.44 src/sys/dev/usb/usbdevices.config 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.79 src/sys/dev/usb/uftdi.c:1.80 --- src/sys/dev/usb/uftdi.c:1.79 Thu Apr 25 01:33:03 2024 +++ src/sys/dev/usb/uftdi.c Tue Oct 8 20:40:10 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: uftdi.c,v 1.79 2024/04/25 01:33:03 thorpej Exp $ */ +/* $NetBSD: uftdi.c,v 1.80 2024/10/08 20:40:10 lloyd Exp $ */ /* * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uftdi.c,v 1.79 2024/04/25 01:33:03 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uftdi.c,v 1.80 2024/10/08 20:40:10 lloyd Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -242,6 +242,20 @@ static const struct uftdi_match_quirk_en .product_str = "JTAG Debugger", .match_ret = UMATCH_NONE, }, + /* + * The iCEBreaker board (https://1bitsquared.com/products/icebreaker) + * has two interfaces, one of which is meant to act as a + * regular USB serial port (interface 1), the other of which + * is meant for other protocols. + */ + { + .vendor_id = USB_VENDOR_FTDI, + .product_id = USB_PRODUCT_FTDI_SERIAL_2232C, + .iface_no = 0, + .vendor_str = "1BitSquared", + .product_str = "iCEBreaker *", + .match_ret = UMATCH_NONE, + }, }; static int @@ -265,7 +279,7 @@ uftdi_quirk_match(struct usbif_attach_ar } if (q->product_str != NULL && (dev->ud_product == NULL || - strcmp(dev->ud_product, q->product_str) != 0)) { + pmatch(dev->ud_product, q->product_str, NULL) != 2)) { continue; } /* Index: src/sys/dev/usb/usbdevices.config diff -u src/sys/dev/usb/usbdevices.config:1.43 src/sys/dev/usb/usbdevices.config:1.44 --- src/sys/dev/usb/usbdevices.config:1.43 Tue Mar 26 03:38:02 2024 +++ src/sys/dev/usb/usbdevices.config Tue Oct 8 20:40:10 2024 @@ -1,4 +1,4 @@ -# $NetBSD: usbdevices.config,v 1.43 2024/03/26 03:38:02 thorpej Exp $ +# $NetBSD: usbdevices.config,v 1.44 2024/10/08 20:40:10 lloyd Exp $ # # This file contains all USB related configuration. # It is suitable for inclusion in a kernel config(5) file. @@ -260,9 +260,9 @@ ugenif* at uhub? vendor 0x1050 product 0 ugenif* at uhub? vendor 0x1050 product 0x0406 configuration 1 interface 1 ugenif* at uhub? vendor 0x1050 product 0x0407 configuration 1 interface 2 -# Tigard debug board (FT2232C-based). This line is used in conjunction -# with a match quirk in uftdi.c. The "flags 1" is important; normally -# ugenif matches with higest priority, but we don't want that for all -# FT2232C interfaces, only interfaces that go unclaimed by uftdi (which -# is what the match quirk ensures). -ugenif* at uhub? vendor 0x0403 product 0x6010 configuration 1 interface 1 flags 1 +# This line is used in conjunction with a match quirk in uftdi.c. The +# "flags 1" is important; normally ugenif matches with higest +# priority, but we don't want that for all FT2232C interfaces, only +# interfaces that go unclaimed by uftdi (which is what the match quirk +# ensures). +ugenif* at uhub? vendor 0x0403 product 0x6010 configuration 1 interface ? flags 1