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",
> 

Reply via email to