Browse Source

usb: serial: ftdi_sio: add "bricked" FTDI device PID

An official recent Windows driver from FTDI detects counterfeit devices
and reprograms the internal EEPROM containing the USB PID to 0, effectively
bricking the device.

Add support for this VID/PID pair to correctly bind the driver on these
devices.

See:
http://hackaday.com/2014/10/22/watch-that-windows-update-ftdi-drivers-are-killing-fake-chips/

Signed-off-by: Perry Hung <iperry@gmail.com>
Cc: stable <stable@vger.kernel.org>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Perry Hung 10 years ago
parent
commit
7f2719f000
2 changed files with 7 additions and 0 deletions
  1. 1 0
      drivers/usb/serial/ftdi_sio.c
  2. 6 0
      drivers/usb/serial/ftdi_sio_ids.h

+ 1 - 0
drivers/usb/serial/ftdi_sio.c

@@ -140,6 +140,7 @@ static struct ftdi_sio_quirk ftdi_8u2232c_quirk = {
  * /sys/bus/usb-serial/drivers/ftdi_sio/new_id and send a patch or report.
  * /sys/bus/usb-serial/drivers/ftdi_sio/new_id and send a patch or report.
  */
  */
 static const struct usb_device_id id_table_combined[] = {
 static const struct usb_device_id id_table_combined[] = {
+	{ USB_DEVICE(FTDI_VID, FTDI_BRICK_PID) },
 	{ USB_DEVICE(FTDI_VID, FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID) },
 	{ USB_DEVICE(FTDI_VID, FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID) },
 	{ USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) },
 	{ USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) },
 	{ USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) },
 	{ USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) },

+ 6 - 0
drivers/usb/serial/ftdi_sio_ids.h

@@ -30,6 +30,12 @@
 
 
 /*** third-party PIDs (using FTDI_VID) ***/
 /*** third-party PIDs (using FTDI_VID) ***/
 
 
+/*
+ * Certain versions of the official Windows FTDI driver reprogrammed
+ * counterfeit FTDI devices to PID 0. Support these devices anyway.
+ */
+#define FTDI_BRICK_PID		0x0000
+
 #define FTDI_LUMEL_PD12_PID	0x6002
 #define FTDI_LUMEL_PD12_PID	0x6002
 
 
 /*
 /*