On Mon, January 28, 2013 11:29 am, Stuart Henderson wrote:
> Have you checked if this is still necessary? libusb on OpenBSD is now able to
> talk to devices claimed by drivers other than ugen.
Yes, I suspect it is still necessary to use ugen.
It seems like libusb does not support bulk transfers otherwise.
uhub8 at uhub0 port 1 "Standard Microsystems product 0x2412" rev 2.00/b.b2 addr
3
uftdi0 at uhub8 port 1 configuration 1 interface 0 "FTDI BeagleBone/XDS100V2"
rev 2.00/7.00 addr 4
ucom0 at uftdi0 portno 1
uftdi1 at uhub8 port 1 configuration 1 interface 1 "FTDI BeagleBone/XDS100V2"
rev 2.00/7.00 addr 4
ucom1 at uftdi1 portno 2
$ openocd -f /usr/local/share/openocd/scripts/board/ti_beaglebone.cfg
Open On-Chip Debugger 0.6.1 (2013-01-29-22:25)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
adapter speed: 16000 kHz
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
Warn : unable to open ftdi device (trying more): device not found
Error: ftdi_write_data: usb bulk write failed
Error: couldn't initialize data bits low byte
Error: couldn't initialize FT2232 with 'xds100v2' layout
in procedure 'init'
>
>
> Raphael Graf <[email protected]> wrote:
>
>>The diff below makes the jtag and serial interfaces of the beaglebone
>>(FT2232H)
>>work simultaneously.
>>This is how the beaglebone shows up:
>>
>>uhub8 at uhub0 port 1 "Standard Microsystems product 0x2412" rev
>>2.00/b.b2 addr 3
>>uftdi0 at uhub8 port 1 configuration 1 interface 1 "FTDI
>>BeagleBone/XDS100V2" rev 2.00/7.00 addr 4
>>ucom0 at uftdi0 portno 2
>>ugen0 at uhub8 port 1 configuration 1 "FTDI BeagleBone/XDS100V2" rev
>>2.00/7.00 addr 4
>>
>>Like this, openocd (using ugen) and cu both work.
>>
>>It is just assumed that interface 0 is used for jtag, not sure if this
>>is
>>always true. I'm also unsure if the diff would break other devices.
>>Can someone comment on this?
>>
>>Thanks
>>
>>
>>Index: uftdi.c
>>===================================================================
>>RCS file: /cvs/src/sys/dev/usb/uftdi.c,v
>>retrieving revision 1.63
>>diff -u -p -r1.63 uftdi.c
>>--- uftdi.c 11 Sep 2012 16:04:44 -0000 1.63
>>+++ uftdi.c 27 Jan 2013 13:20:53 -0000
>>@@ -748,28 +748,21 @@ int
>> uftdi_match(struct device *parent, void *match, void *aux)
>> {
>> struct usb_attach_arg *uaa = aux;
>>- usbd_status err;
>> u_int8_t nifaces;
>>
>> if (usb_lookup(uftdi_devs, uaa->vendor, uaa->product) == NULL)
>> return (UMATCH_NONE);
>>
>> /* Get the number of interfaces. */
>>- if (uaa->iface != NULL) {
>>+ if (uaa->iface != NULL)
>> nifaces = uaa->nifaces;
>>- } else {
>>- err = usbd_set_config_index(uaa->device, UFTDI_CONFIG_INDEX, 1);
>>- if (err)
>>- return (UMATCH_NONE);
>>- err = usbd_interface_count(uaa->device, &nifaces);
>>- if (err)
>>- return (UMATCH_NONE);
>>- usbd_set_config_index(uaa->device, USB_UNCONFIG_INDEX, 1);
>>- }
>>+ else
>>+ return UMATCH_NONE;
>>
>> /* JTAG on USB interface 0 */
>> if (uaa->vendor == USB_VENDOR_FTDI &&
>>- uaa->product == USB_PRODUCT_FTDI_OPENRD &&
>>+ (uaa->product == USB_PRODUCT_FTDI_OPENRD ||
>>+ uaa->product == USB_PRODUCT_FTDI_SERIAL_2232C) &&
>> uaa->ifaceno == 0)
>> return (UMATCH_NONE);
>
>