| From c96fbdd0ab97235f930ebf24b38fa42a2e3458cf Mon Sep 17 00:00:00 2001 |
| From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> |
| Date: Thu, 25 Aug 2011 11:46:58 +0200 |
| Subject: USB: ftdi_sio: add Calao reference board support |
| |
| From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> |
| |
| commit c96fbdd0ab97235f930ebf24b38fa42a2e3458cf upstream. |
| |
| Calao use on there dev kits a FT2232 where the port 0 is used for the JTAG and |
| port 1 for the UART |
| |
| They use the same VID and PID as FTDI Chip but they program the manufacturer |
| name in the eeprom |
| |
| So use this information to detect it |
| |
| Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> |
| Cc: Gregory Hermant <gregory.hermant@calao-systems.com> |
| Cc: Alan Cox <alan@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/usb/serial/ftdi_sio.c | 20 +++++++++++++++++++- |
| 1 file changed, 19 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/usb/serial/ftdi_sio.c |
| +++ b/drivers/usb/serial/ftdi_sio.c |
| @@ -105,6 +105,7 @@ static int ftdi_jtag_probe(struct usb_ |
| static int ftdi_mtxorb_hack_setup(struct usb_serial *serial); |
| static int ftdi_NDI_device_setup(struct usb_serial *serial); |
| static int ftdi_stmclite_probe(struct usb_serial *serial); |
| +static int ftdi_8u2232c_probe(struct usb_serial *serial); |
| static void ftdi_USB_UIRT_setup(struct ftdi_private *priv); |
| static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv); |
| |
| @@ -132,6 +133,10 @@ static struct ftdi_sio_quirk ftdi_stmcli |
| .probe = ftdi_stmclite_probe, |
| }; |
| |
| +static struct ftdi_sio_quirk ftdi_8u2232c_quirk = { |
| + .probe = ftdi_8u2232c_probe, |
| +}; |
| + |
| /* |
| * The 8U232AM has the same API as the sio except for: |
| * - it can support MUCH higher baudrates; up to: |
| @@ -181,7 +186,8 @@ static struct usb_device_id id_table_com |
| { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) }, |
| { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) }, |
| { USB_DEVICE(FTDI_VID, FTDI_232RL_PID) }, |
| - { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) }, |
| + { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) , |
| + .driver_info = (kernel_ulong_t)&ftdi_8u2232c_quirk }, |
| { USB_DEVICE(FTDI_VID, FTDI_4232H_PID) }, |
| { USB_DEVICE(FTDI_VID, FTDI_MICRO_CHAMELEON_PID) }, |
| { USB_DEVICE(FTDI_VID, FTDI_RELAIS_PID) }, |
| @@ -1761,6 +1767,18 @@ static int ftdi_jtag_probe(struct usb_se |
| |
| return 0; |
| } |
| + |
| +static int ftdi_8u2232c_probe(struct usb_serial *serial) |
| +{ |
| + struct usb_device *udev = serial->dev; |
| + |
| + dbg("%s", __func__); |
| + |
| + if (strcmp(udev->manufacturer, "CALAO Systems") == 0) |
| + return ftdi_jtag_probe(serial); |
| + |
| + return 0; |
| +} |
| |
| /* |
| * First and second port on STMCLiteadaptors is reserved for JTAG interface |