On Fri, May 04, 2007 at 12:53:51AM +0000, Tony Lindgren wrote:
> Hi,
> 
> Here's a little patch to add support for the Olimex arm-usb-ocd JTAG.
> 
> Regards,
> 
> Tony
> 

> From: Tony Lindgren <[EMAIL PROTECTED]>
> Subject: [PATCH] USB: Add support for Olimex arm-usb-ocd JTAG interface 
> serial port
> 
> This patch adds support for the serial port on Olimex arm-usb-ocd
> JTAG interface.
> 
> The device appears as two serial ports, but the first one is reserved
> for the JTAG interface. The JTAG interface can be used with OpenOCD
> from userspace. For more information, please see:
> 
> http://openocd.berlios.de/web/
> http://www.olimex.com/dev/arm-usb-ocd.html
> 
> Signed-off-by: Tony Lindgren <[EMAIL PROTECTED]>
> 
> --- a/drivers/usb/serial/ftdi_sio.c
> +++ b/drivers/usb/serial/ftdi_sio.c
> @@ -524,6 +524,7 @@ static struct usb_device_id id_table_combined [] = {
>       { USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13U_PID) },
>       { USB_DEVICE(ELEKTOR_VID, ELEKTOR_FT323R_PID) },
>       { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) },
> +     { USB_DEVICE(OLIMEX_VID, OLIMEX_ARM_USB_OCD_PID) },
>       { },                                    /* Optional parameter entry */
>       { }                                     /* Terminating entry */
>  };
> @@ -668,7 +669,7 @@ static struct usb_serial_driver ftdi_sio_device = {
>  
>  /*
>   * 
> ***************************************************************************
> - * Utlity functions
> + * Utility functions
>   * 
> ***************************************************************************
>   */
>  
> @@ -1167,12 +1168,38 @@ static void remove_sysfs_attrs(struct usb_serial_port 
> *port)
>   * 
> ***************************************************************************
>   */
>  
> +static int ftdi_port_quirks(struct usb_serial *serial)
> +{
> +     struct usb_device *udev = serial->dev;
> +     struct usb_device_descriptor desc = udev->descriptor;
> +     struct usb_interface *interface = serial->interface;
> +
> +     /*
> +      * First port on Olimex arm-usb-ocd is reserved for JTAG interface
> +      * and can be accessed from userspace using openocd.
> +      */
> +     if ((le16_to_cpu(desc.idVendor) == OLIMEX_VID) &&
> +         (le16_to_cpu(desc.idProduct) == OLIMEX_ARM_USB_OCD_PID) &&
> +         (interface == udev->actconfig->interface[0])) {
> +             info("Ignoring reserved serial port on Olimex arm-usb-ocd\n");
> +             return -ENODEV;
> +     }

It would probably make more sense to make the device_data field hold the
pointer to the quirk entry, that way you don't have a big if statement
all the time here.

Care to rework this?

thanks,

greg k-h

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to