FTDI chips - when ftdi_sio is wrong thing

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

 



Hi,

People are aware of FTDI's FT232 serial port chips, and FT245 printer port
chips, but they are actually more generic devices. There are serial port devices,
and there are generic FIFO devices.  (www.ftdichip.com)

Worst of all, they all use default ID pair 0403:6001, which is now handled by
the ftdi_sio driver.  (Dual and quad versions have different IDs, handled by
same driver - lattest bunch has very peculiar capabilities: JTAG, and SPI on
serial port, same pins also serve as generic data FIFO...)
Unfortunately a non-zero number of vendors are outputing hardware that use
the hardware default ID pair :-(

A distinguisher in between the devices with same ID codes could be USB device
descriptor's iProduct string.  That one is usually defined by the hardware
vendor to be their actual product name.

This relates to recent _audio_device_ case, where device maker apparently has
used FTDI FIFO chip, and then just hacked things at Windows driver for it.

Getting hardware makers to fix their device firmware is usually not an option,
as much as one would like to.

So, how to really separate devices that are treatable as serial ports, and
at ID level identical devices that are something else entirely?


Maybe this needs some new infrastructure, but I would consider at least
following approaches:

  - Let multiple device drivers be bound on same ID pairs
    At device setup time do see if driver A can handle it, but
    if it says "not me", then try driver B, etc.

  - Bind device drivers on more than just the ID pair, like use
    also  iProduct  string, iSerial string, etc.


What do you say?

  /Matti Aarnio
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux