tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Forcing a USB device to "ugen"



I have a device based on the FTDI FT2232C:

[ 11113285.311079] uftdi1 at uhub1 port 2 configuration 1 interface 0
[ 11113285.311079] uftdi1: SecuringHardware.com (0x0403) Tigard V1.1 (0x6010), rev 2.00/7.00, addr 3
[ 11113285.311079] ucom1 at uftdi1 portno 1
[ 11113285.311079] uftdi2 at uhub1 port 2 configuration 1 interface 1
[ 11113285.311079] uftdi2: SecuringHardware.com (0x0403) Tigard V1.1 (0x6010), rev 2.00/7.00, addr 3
[ 11113285.311079] ucom2 at uftdi2 portno 2

It's a combo device that, in addition to a standard TTL-level UART, has a bunch of break-out headers for doing things like SPI, SWD, and JTAG (in my case, I need to use JTAG for programming some Atmel CPLDs).  I should be able to do this with OpenOCD (pkgsrc/devel/openocd), but libfdti1 fails to find the device because libusb1 only deals in "ugen".

"ugenif" might have been a possible solution here, except for the fact that 0x0403,0x6010 is the standard VID,PID for the FTDI FT2232C, and I don't want "interface 1" of ALL FT2232C devices to get the "ugen" treatment.  The desire to use "ugen" on "interface 1" is not a property of 0x0403,0x6010, it's really a property of "SecuringHardware.com","Tigard V1.1".  Unfortunately, there's isn't a way to express that in the kernel config syntax.

I think my only short-term option here is to, in uftdi_match(), specifically reject based on this criteria:

	- VID == 0x0403
	- PID == 0x6010
	- interface number == 1
	- vendor string == "SecuringHardware.com"
	- product string == "Tigard V1.1"

(It's never useful, on this particular board, to use the second port as a UART.)

-- thorpej



Home | Main Index | Thread Index | Old Index