Remove device type from the uftdi_devs table, enhance the jtag-skip feature.

Device type and revision is now determined from the bcdDevice field and
doesn't need to be in the table at all.  The feature that skips creation
of /dev/ttyU* entries for jtag and gpio interfaces is enhanced:

 - The feature is now optional, but enabled by default.  A tunable and
   sysctl are available to control it: hw.usb.uftdi.skip_jtag_interfaces.
 - We no longer assume interface #0 is the only jtag interface.  Up to
   eight interfaces per chip can be flagged as jtag.  (Current ftdi chips
   support a max of 4 interfaces; this leaves room for growth.)
 - Some manufacturers don't change the product ID or use the same ID for
   different devices intended for both serial-comms and jtag/gpio use.
   Often while the product ID is the same, the product name string is
   different, so it's now possible to search for the product name in a
   table of strings and get the set of non-tty interfaces from that table.
This commit is contained in:
ian 2014-04-25 19:13:57 +00:00
parent e61c0f1d81
commit 1bf955e7d4
2 changed files with 703 additions and 648 deletions

File diff suppressed because it is too large Load Diff

View File

@ -40,12 +40,10 @@
#define FTDI_PIT_PARALLEL 3 /* Parallel */
/* Values for driver_info */
#define UFTDI_TYPE_MASK 0x000000ff
#define UFTDI_TYPE_SIO 0x00000001
#define UFTDI_TYPE_8U232AM 0x00000002
#define UFTDI_TYPE_AUTO (UFTDI_TYPE_SIO | UFTDI_TYPE_8U232AM)
#define UFTDI_FLAG_MASK 0x0000ff00
#define UFTDI_FLAG_JTAG 0x00000100
#define UFTDI_JTAG_IFACE(i) (1 << i) /* Flag interface as jtag */
#define UFTDI_JTAG_IFACES_MAX 8 /* Allow up to 8 jtag intfs */
#define UFTDI_JTAG_CHECK_STRING 0xff /* Check product names table */
#define UFTDI_JTAG_MASK 0xff
/*
* BmRequestType: 0100 0000B