On 2022/08/22 20:33, Josuah Demangeon wrote: > The pico-debug [1] is a debug firmware, loaded on a Raspberry Pi RP2040 > microcontroller to provide a standard debug interface. > The host support tool OpenOCD already upstreamed it [2]. > > But it does not work with OpenBSD yet, as uhid(4) takes over the > RP2040 once plugged, blocking full libusb access [3]. > > This patch excludes the vendor and product ID chosen by the > pico-debug developer from uhid and uhidev. > > The USB Product ID is not from the USB Implementation Forum: > A project reuses some of the defunct InterBiometrics product IDs > for open-source hardware [4]. > > I could recompile and see the device listed as ugen(4): > > $ dmesg | grep pico-debug > ugen1 at uhub4 port 2 "pico-debug CMSIS-DAP" rev 1.10/10.05 addr 2 > > Does this patch make sense?
Yes, that's exactly how it's handled for other similar devices. Unless there are objections or someone beats me to it (ok sthen@) I'll commit this later. > Thanks! > > [1]: https://github.com/majbthrd/pico-debug/discussions/23 > [2]: https://repo.or.cz/openocd.git/commitdiff/b60d06?hp=64a3e7 > [3]: https://marc.info/?l=openbsd-misc&m=160336348703669 > [4]: https://pid.codes/faq/ > > diff --git sys/dev/usb/usb_quirks.c sys/dev/usb/usb_quirks.c > index be65ad086..b0e29038a 100644 > --- sys/dev/usb/usb_quirks.c > +++ sys/dev/usb/usb_quirks.c > @@ -134,6 +134,7 @@ const struct usbd_quirk_entry { > { USB_VENDOR_OMRON, USB_PRODUCT_OMRON_BX35F, ANY, { > UQ_BAD_HID }}, > { USB_VENDOR_OMRON, USB_PRODUCT_OMRON_BX50F, ANY, { > UQ_BAD_HID }}, > { USB_VENDOR_OMRON, USB_PRODUCT_OMRON_BY35S, ANY, { > UQ_BAD_HID }}, > + { USB_VENDOR_PIDCODES, USB_PRODUCT_PIDCODES_DAPPERMISER, ANY, { > UQ_BAD_HID }}, > { USB_VENDOR_TENX, USB_PRODUCT_TENX_MISSILE, ANY, { > UQ_BAD_HID }}, > { USB_VENDOR_TERRATEC, USB_PRODUCT_TERRATEC_AUREON, ANY, { UQ_BAD_HID }}, > { USB_VENDOR_TI, USB_PRODUCT_TI_MSP430, ANY, { UQ_BAD_HID }}, > diff --git sys/dev/usb/usbdevs sys/dev/usb/usbdevs > index 398e93df1..8690a0cad 100644 > --- sys/dev/usb/usbdevs > +++ sys/dev/usb/usbdevs > @@ -510,6 +510,7 @@ vendor SIERRA 0x1199 Sierra Wireless > vendor SIEMENS3 0x11f5 Siemens > vendor ALCATEL 0x11f7 Alcatel > vendor INTERBIO 0x1209 InterBiometrics > +vendor PIDCODES 0x1209 pid.codes > vendor UNKNOWN3 0x1233 Unknown vendor > vendor TSUNAMI 0x1241 Tsunami > vendor PHEENET 0x124a Pheenet > @@ -1516,6 +1517,9 @@ product DAISY DMC 0x6901 PhotoClip > product DALLAS USB_FOB_IBUTTON 0x2490 USB-FOB/iBUTTON > product DALLAS J6502 0x4201 J-6502 speakers > > +/* pid.codes products */ > +product PIDCODES DAPPERMISER 0x2488 Peter Lawrence CMSIS-DAP Dapper Miser > + > /* DataApex products */ > product DATAAPEX MULTICOM 0xead6 MultiCom > > diff --git sys/dev/usb/usbdevs.h sys/dev/usb/usbdevs.h > index a6bdfbd85..23d9124b9 100644 > --- sys/dev/usb/usbdevs.h > +++ sys/dev/usb/usbdevs.h > @@ -1,4 +1,4 @@ > -/* $OpenBSD: usbdevs.h,v 1.759 2022/06/23 00:32:06 jsg Exp $ */ > +/* $OpenBSD$ */ > > /* > * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. > @@ -517,6 +517,7 @@ > #define USB_VENDOR_SIEMENS3 0x11f5 /* Siemens */ > #define USB_VENDOR_ALCATEL 0x11f7 /* Alcatel */ > #define USB_VENDOR_INTERBIO 0x1209 /* InterBiometrics */ > +#define USB_VENDOR_PIDCODES 0x1209 /* pid.codes */ > #define USB_VENDOR_UNKNOWN3 0x1233 /* Unknown vendor */ > #define USB_VENDOR_TSUNAMI 0x1241 /* Tsunami */ > #define USB_VENDOR_PHEENET 0x124a /* Pheenet */ > @@ -1523,6 +1524,9 @@ > #define USB_PRODUCT_DALLAS_USB_FOB_IBUTTON 0x2490 /* > USB-FOB/iBUTTON */ > #define USB_PRODUCT_DALLAS_J6502 0x4201 /* J-6502 > speakers */ > > +/* pid.codes products */ > +#define USB_PRODUCT_PIDCODES_DAPPERMISER 0x2488 /* > Peter Lawrence CMSIS-DAP Dapper Miser */ > + > /* DataApex products */ > #define USB_PRODUCT_DATAAPEX_MULTICOM 0xead6 /* MultiCom */ > > diff --git sys/dev/usb/usbdevs_data.h sys/dev/usb/usbdevs_data.h > index 38a43697c..b5b546c67 100644 > --- sys/dev/usb/usbdevs_data.h > +++ sys/dev/usb/usbdevs_data.h > @@ -1,4 +1,4 @@ > -/* $OpenBSD: usbdevs_data.h,v 1.753 2022/06/23 00:32:06 jsg Exp $ */ > +/* $OpenBSD$ */ > > /* > * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. > @@ -2437,6 +2437,10 @@ const struct usb_known_product usb_known_products[] = { > USB_VENDOR_DALLAS, USB_PRODUCT_DALLAS_J6502, > "J-6502 speakers", > }, > + { > + USB_VENDOR_PIDCODES, USB_PRODUCT_PIDCODES_DAPPERMISER, > + "Peter Lawrence CMSIS-DAP Dapper Miser", > + }, > { > USB_VENDOR_DATAAPEX, USB_PRODUCT_DATAAPEX_MULTICOM, > "MultiCom", > @@ -14057,6 +14061,10 @@ const struct usb_known_vendor usb_known_vendors[] = { > USB_VENDOR_INTERBIO, > "InterBiometrics", > }, > + { > + USB_VENDOR_PIDCODES, > + "pid.codes", > + }, > { > USB_VENDOR_UNKNOWN3, > "Unknown vendor", >