Merge tag 'usb-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Aug 2016 03:07:43 +0000 (23:07 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Aug 2016 03:07:43 +0000 (23:07 -0400)
Pull more USB updates from Greg KH:
 "Here are a few more straggler patches for USB for 4.8-rc1.

  Most of these are for the usb-serial driver tree.  All of those have
  been in linux-next for a long time, but missed my previous pull
  request to you.

  The remaining change is to fix up a staging tree build error, due to
  some USB gadget driver changes that went in.  I put it in this tree as
  it was for a USB driver and people are reporting the build error on
  your tree.

  All of these have been in linux-next for this week, and longer for the
  usb-serial changes"

* tag 'usb-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
  staging: emxx_udc: allow modular build
  USB: serial: use variable for status
  USB: serial: option: add support for Telit LE910 PID 0x1206
  USB: serial: cp210x: use kmemdup
  USB: serial: ti_usb_3410_5052: use functions rather than macros
  USB: serial: ti_usb_3410_5052: remove ti_usb_3410_5052.h
  USB: serial: ti_usb_3410_5052: use __packed
  USB: serial: ti_usb_3410_5052: remove useless comments

drivers/staging/emxx_udc/Kconfig
drivers/staging/emxx_udc/emxx_udc.c
drivers/usb/serial/cp210x.c
drivers/usb/serial/generic.c
drivers/usb/serial/option.c
drivers/usb/serial/ti_usb_3410_5052.c
drivers/usb/serial/ti_usb_3410_5052.h [deleted file]

index cc34020..d757709 100644 (file)
@@ -1,5 +1,5 @@
 config USB_EMXX
-       bool "EMXX USB Function Device Controller"
+       tristate "EMXX USB Function Device Controller"
        depends on USB_GADGET && (ARCH_SHMOBILE || (ARM && COMPILE_TEST))
        help
           The Emma Mobile series of SoCs from Renesas Electronics and
index 3bd9175..3b56b28 100644 (file)
@@ -15,7 +15,7 @@
  */
 
 #include <linux/kernel.h>
-#include <linux/init.h>
+#include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/delay.h>
 #include <linux/ioport.h>
 
 #include "emxx_udc.h"
 
+#define        DRIVER_DESC     "EMXX UDC driver"
 #define        DMA_ADDR_INVALID        (~(dma_addr_t)0)
 
 static const char      driver_name[] = "emxx_udc";
+static const char      driver_desc[] = DRIVER_DESC;
 
 /*===========================================================================*/
 /* Prototype */
@@ -3295,6 +3297,28 @@ static void nbu2ss_drv_shutdown(struct platform_device *pdev)
        _nbu2ss_disable_controller(udc);
 }
 
+/*-------------------------------------------------------------------------*/
+static int nbu2ss_drv_remove(struct platform_device *pdev)
+{
+       struct nbu2ss_udc       *udc;
+       struct nbu2ss_ep        *ep;
+       int     i;
+
+       udc = &udc_controller;
+
+       for (i = 0; i < NUM_ENDPOINTS; i++) {
+               ep = &udc->ep[i];
+               if (ep->virt_buf)
+                       dma_free_coherent(NULL, PAGE_SIZE,
+                               (void *)ep->virt_buf, ep->phys_buf);
+       }
+
+       /* Interrupt Handler - Release */
+       free_irq(INT_VBUS, udc);
+
+       return 0;
+}
+
 /*-------------------------------------------------------------------------*/
 static int nbu2ss_drv_suspend(struct platform_device *pdev, pm_message_t state)
 {
@@ -3347,12 +3371,16 @@ static int nbu2ss_drv_resume(struct platform_device *pdev)
 static struct platform_driver udc_driver = {
        .probe          = nbu2ss_drv_probe,
        .shutdown       = nbu2ss_drv_shutdown,
+       .remove         = nbu2ss_drv_remove,
        .suspend        = nbu2ss_drv_suspend,
        .resume         = nbu2ss_drv_resume,
        .driver         = {
-               .name                   = driver_name,
-               .suppress_bind_attrs    = true,
+               .name   = driver_name,
        },
 };
 
-builtin_platform_driver(udc_driver);
+module_platform_driver(udc_driver);
+
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_AUTHOR("Renesas Electronics Corporation");
+MODULE_LICENSE("GPL");
index 96a7078..4d6a5c6 100644 (file)
@@ -496,12 +496,10 @@ static int cp210x_write_reg_block(struct usb_serial_port *port, u8 req,
        void *dmabuf;
        int result;
 
-       dmabuf = kmalloc(bufsize, GFP_KERNEL);
+       dmabuf = kmemdup(buf, bufsize, GFP_KERNEL);
        if (!dmabuf)
                return -ENOMEM;
 
-       memcpy(dmabuf, buf, bufsize);
-
        result = usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0),
                        req, REQTYPE_HOST_TO_INTERFACE, 0,
                        port_priv->bInterfaceNumber, dmabuf, bufsize,
index ae8c036..944de65 100644 (file)
@@ -350,6 +350,7 @@ void usb_serial_generic_read_bulk_callback(struct urb *urb)
        struct usb_serial_port *port = urb->context;
        unsigned char *data = urb->transfer_buffer;
        unsigned long flags;
+       int status = urb->status;
        int i;
 
        for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i) {
@@ -360,22 +361,22 @@ void usb_serial_generic_read_bulk_callback(struct urb *urb)
 
        dev_dbg(&port->dev, "%s - urb %d, len %d\n", __func__, i,
                                                        urb->actual_length);
-       switch (urb->status) {
+       switch (status) {
        case 0:
                break;
        case -ENOENT:
        case -ECONNRESET:
        case -ESHUTDOWN:
                dev_dbg(&port->dev, "%s - urb stopped: %d\n",
-                                                       __func__, urb->status);
+                                                       __func__, status);
                return;
        case -EPIPE:
                dev_err(&port->dev, "%s - urb stopped: %d\n",
-                                                       __func__, urb->status);
+                                                       __func__, status);
                return;
        default:
                dev_dbg(&port->dev, "%s - nonzero urb status: %d\n",
-                                                       __func__, urb->status);
+                                                       __func__, status);
                goto resubmit;
        }
 
@@ -399,6 +400,7 @@ void usb_serial_generic_write_bulk_callback(struct urb *urb)
 {
        unsigned long flags;
        struct usb_serial_port *port = urb->context;
+       int status = urb->status;
        int i;
 
        for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i) {
@@ -410,22 +412,22 @@ void usb_serial_generic_write_bulk_callback(struct urb *urb)
        set_bit(i, &port->write_urbs_free);
        spin_unlock_irqrestore(&port->lock, flags);
 
-       switch (urb->status) {
+       switch (status) {
        case 0:
                break;
        case -ENOENT:
        case -ECONNRESET:
        case -ESHUTDOWN:
                dev_dbg(&port->dev, "%s - urb stopped: %d\n",
-                                                       __func__, urb->status);
+                                                       __func__, status);
                return;
        case -EPIPE:
                dev_err_console(port, "%s - urb stopped: %d\n",
-                                                       __func__, urb->status);
+                                                       __func__, status);
                return;
        default:
                dev_err_console(port, "%s - nonzero urb status: %d\n",
-                                                       __func__, urb->status);
+                                                       __func__, status);
                goto resubmit;
        }
 
index d96d423..8e07536 100644 (file)
@@ -273,6 +273,7 @@ static void option_instat_callback(struct urb *urb);
 #define TELIT_PRODUCT_LE922_USBCFG5            0x1045
 #define TELIT_PRODUCT_LE920                    0x1200
 #define TELIT_PRODUCT_LE910                    0x1201
+#define TELIT_PRODUCT_LE910_USBCFG4            0x1206
 
 /* ZTE PRODUCTS */
 #define ZTE_VENDOR_ID                          0x19d2
@@ -1198,6 +1199,8 @@ static const struct usb_device_id option_ids[] = {
                .driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg0 },
        { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910),
                .driver_info = (kernel_ulong_t)&telit_le910_blacklist },
+       { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4),
+               .driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg3 },
        { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
                .driver_info = (kernel_ulong_t)&telit_le920_blacklist },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
index e7dbbef..07b4bf0 100644 (file)
@@ -1,5 +1,4 @@
-/* vi: ts=8 sw=8
- *
+/*
  * TI 3410/5052 USB Serial Driver
  *
  * Copyright (C) 2004 Texas Instruments
 #include <linux/usb.h>
 #include <linux/usb/serial.h>
 
-#include "ti_usb_3410_5052.h"
-
-/* Defines */
+/* Configuration ids */
+#define TI_BOOT_CONFIG                 1
+#define TI_ACTIVE_CONFIG               2
+
+/* Vendor and product ids */
+#define TI_VENDOR_ID                   0x0451
+#define IBM_VENDOR_ID                  0x04b3
+#define TI_3410_PRODUCT_ID             0x3410
+#define IBM_4543_PRODUCT_ID            0x4543
+#define IBM_454B_PRODUCT_ID            0x454b
+#define IBM_454C_PRODUCT_ID            0x454c
+#define TI_3410_EZ430_ID               0xF430  /* TI ez430 development tool */
+#define TI_5052_BOOT_PRODUCT_ID                0x5052  /* no EEPROM, no firmware */
+#define TI_5152_BOOT_PRODUCT_ID                0x5152  /* no EEPROM, no firmware */
+#define TI_5052_EEPROM_PRODUCT_ID      0x505A  /* EEPROM, no firmware */
+#define TI_5052_FIRMWARE_PRODUCT_ID    0x505F  /* firmware is running */
+#define FRI2_PRODUCT_ID                        0x5053  /* Fish River Island II */
+
+/* Multi-Tech vendor and product ids */
+#define MTS_VENDOR_ID                  0x06E0
+#define MTS_GSM_NO_FW_PRODUCT_ID       0xF108
+#define MTS_CDMA_NO_FW_PRODUCT_ID      0xF109
+#define MTS_CDMA_PRODUCT_ID            0xF110
+#define MTS_GSM_PRODUCT_ID             0xF111
+#define MTS_EDGE_PRODUCT_ID            0xF112
+#define MTS_MT9234MU_PRODUCT_ID                0xF114
+#define MTS_MT9234ZBA_PRODUCT_ID       0xF115
+#define MTS_MT9234ZBAOLD_PRODUCT_ID    0x0319
+
+/* Abbott Diabetics vendor and product ids */
+#define ABBOTT_VENDOR_ID               0x1a61
+#define ABBOTT_STEREO_PLUG_ID          0x3410
+#define ABBOTT_PRODUCT_ID              ABBOTT_STEREO_PLUG_ID
+#define ABBOTT_STRIP_PORT_ID           0x3420
+
+/* Honeywell vendor and product IDs */
+#define HONEYWELL_VENDOR_ID            0x10ac
+#define HONEYWELL_HGI80_PRODUCT_ID     0x0102  /* Honeywell HGI80 */
+
+/* Moxa UPORT 11x0 vendor and product IDs */
+#define MXU1_VENDOR_ID                         0x110a
+#define MXU1_1110_PRODUCT_ID                   0x1110
+#define MXU1_1130_PRODUCT_ID                   0x1130
+#define MXU1_1150_PRODUCT_ID                   0x1150
+#define MXU1_1151_PRODUCT_ID                   0x1151
+#define MXU1_1131_PRODUCT_ID                   0x1131
+
+/* Commands */
+#define TI_GET_VERSION                 0x01
+#define TI_GET_PORT_STATUS             0x02
+#define TI_GET_PORT_DEV_INFO           0x03
+#define TI_GET_CONFIG                  0x04
+#define TI_SET_CONFIG                  0x05
+#define TI_OPEN_PORT                   0x06
+#define TI_CLOSE_PORT                  0x07
+#define TI_START_PORT                  0x08
+#define TI_STOP_PORT                   0x09
+#define TI_TEST_PORT                   0x0A
+#define TI_PURGE_PORT                  0x0B
+#define TI_RESET_EXT_DEVICE            0x0C
+#define TI_WRITE_DATA                  0x80
+#define TI_READ_DATA                   0x81
+#define TI_REQ_TYPE_CLASS              0x82
+
+/* Module identifiers */
+#define TI_I2C_PORT                    0x01
+#define TI_IEEE1284_PORT               0x02
+#define TI_UART1_PORT                  0x03
+#define TI_UART2_PORT                  0x04
+#define TI_RAM_PORT                    0x05
+
+/* Modem status */
+#define TI_MSR_DELTA_CTS               0x01
+#define TI_MSR_DELTA_DSR               0x02
+#define TI_MSR_DELTA_RI                        0x04
+#define TI_MSR_DELTA_CD                        0x08
+#define TI_MSR_CTS                     0x10
+#define TI_MSR_DSR                     0x20
+#define TI_MSR_RI                      0x40
+#define TI_MSR_CD                      0x80
+#define TI_MSR_DELTA_MASK              0x0F
+#define TI_MSR_MASK                    0xF0
+
+/* Line status */
+#define TI_LSR_OVERRUN_ERROR           0x01
+#define TI_LSR_PARITY_ERROR            0x02
+#define TI_LSR_FRAMING_ERROR           0x04
+#define TI_LSR_BREAK                   0x08
+#define TI_LSR_ERROR                   0x0F
+#define TI_LSR_RX_FULL                 0x10
+#define TI_LSR_TX_EMPTY                        0x20
+
+/* Line control */
+#define TI_LCR_BREAK                   0x40
+
+/* Modem control */
+#define TI_MCR_LOOP                    0x04
+#define TI_MCR_DTR                     0x10
+#define TI_MCR_RTS                     0x20
+
+/* Mask settings */
+#define TI_UART_ENABLE_RTS_IN          0x0001
+#define TI_UART_DISABLE_RTS            0x0002
+#define TI_UART_ENABLE_PARITY_CHECKING 0x0008
+#define TI_UART_ENABLE_DSR_OUT         0x0010
+#define TI_UART_ENABLE_CTS_OUT         0x0020
+#define TI_UART_ENABLE_X_OUT           0x0040
+#define TI_UART_ENABLE_XA_OUT          0x0080
+#define TI_UART_ENABLE_X_IN            0x0100
+#define TI_UART_ENABLE_DTR_IN          0x0800
+#define TI_UART_DISABLE_DTR            0x1000
+#define TI_UART_ENABLE_MS_INTS         0x2000
+#define TI_UART_ENABLE_AUTO_START_DMA  0x4000
+
+/* Parity */
+#define TI_UART_NO_PARITY              0x00
+#define TI_UART_ODD_PARITY             0x01
+#define TI_UART_EVEN_PARITY            0x02
+#define TI_UART_MARK_PARITY            0x03
+#define TI_UART_SPACE_PARITY           0x04
+
+/* Stop bits */
+#define TI_UART_1_STOP_BITS            0x00
+#define TI_UART_1_5_STOP_BITS          0x01
+#define TI_UART_2_STOP_BITS            0x02
+
+/* Bits per character */
+#define TI_UART_5_DATA_BITS            0x00
+#define TI_UART_6_DATA_BITS            0x01
+#define TI_UART_7_DATA_BITS            0x02
+#define TI_UART_8_DATA_BITS            0x03
+
+/* 232/485 modes */
+#define TI_UART_232                    0x00
+#define TI_UART_485_RECEIVER_DISABLED  0x01
+#define TI_UART_485_RECEIVER_ENABLED   0x02
+
+/* Pipe transfer mode and timeout */
+#define TI_PIPE_MODE_CONTINUOUS                0x01
+#define TI_PIPE_MODE_MASK              0x03
+#define TI_PIPE_TIMEOUT_MASK           0x7C
+#define TI_PIPE_TIMEOUT_ENABLE         0x80
+
+/* Config struct */
+struct ti_uart_config {
+       __u16   wBaudRate;
+       __u16   wFlags;
+       __u8    bDataBits;
+       __u8    bParity;
+       __u8    bStopBits;
+       char    cXon;
+       char    cXoff;
+       __u8    bUartMode;
+} __packed;
+
+/* Get port status */
+struct ti_port_status {
+       __u8    bCmdCode;
+       __u8    bModuleId;
+       __u8    bErrorCode;
+       __u8    bMSR;
+       __u8    bLSR;
+} __packed;
+
+/* Purge modes */
+#define TI_PURGE_OUTPUT                        0x00
+#define TI_PURGE_INPUT                 0x80
+
+/* Read/Write data */
+#define TI_RW_DATA_ADDR_SFR            0x10
+#define TI_RW_DATA_ADDR_IDATA          0x20
+#define TI_RW_DATA_ADDR_XDATA          0x30
+#define TI_RW_DATA_ADDR_CODE           0x40
+#define TI_RW_DATA_ADDR_GPIO           0x50
+#define TI_RW_DATA_ADDR_I2C            0x60
+#define TI_RW_DATA_ADDR_FLASH          0x70
+#define TI_RW_DATA_ADDR_DSP            0x80
+
+#define TI_RW_DATA_UNSPECIFIED         0x00
+#define TI_RW_DATA_BYTE                        0x01
+#define TI_RW_DATA_WORD                        0x02
+#define TI_RW_DATA_DOUBLE_WORD         0x04
+
+struct ti_write_data_bytes {
+       __u8    bAddrType;
+       __u8    bDataType;
+       __u8    bDataCounter;
+       __be16  wBaseAddrHi;
+       __be16  wBaseAddrLo;
+       __u8    bData[0];
+} __packed;
+
+struct ti_read_data_request {
+       __u8    bAddrType;
+       __u8    bDataType;
+       __u8    bDataCounter;
+       __be16  wBaseAddrHi;
+       __be16  wBaseAddrLo;
+} __packed;
+
+struct ti_read_data_bytes {
+       __u8    bCmdCode;
+       __u8    bModuleId;
+       __u8    bErrorCode;
+       __u8    bData[0];
+} __packed;
+
+/* Interrupt struct */
+struct ti_interrupt {
+       __u8    bICode;
+       __u8    bIInfo;
+} __packed;
+
+/* Interrupt codes */
+#define TI_CODE_HARDWARE_ERROR         0xFF
+#define TI_CODE_DATA_ERROR             0x03
+#define TI_CODE_MODEM_STATUS           0x04
+
+/* Download firmware max packet size */
+#define TI_DOWNLOAD_MAX_PACKET_SIZE    64
+
+/* Firmware image header */
+struct ti_firmware_header {
+       __le16  wLength;
+       __u8    bCheckSum;
+} __packed;
+
+/* UART addresses */
+#define TI_UART1_BASE_ADDR             0xFFA0  /* UART 1 base address */
+#define TI_UART2_BASE_ADDR             0xFFB0  /* UART 2 base address */
+#define TI_UART_OFFSET_LCR             0x0002  /* UART MCR register offset */
+#define TI_UART_OFFSET_MCR             0x0004  /* UART MCR register offset */
 
 #define TI_DRIVER_AUTHOR       "Al Borchers <alborchers@steinerpoint.com>"
 #define TI_DRIVER_DESC         "TI USB 3410/5052 Serial Driver"
 
 #define TI_EXTRA_VID_PID_COUNT 5
 
-
-/* Structures */
-
 struct ti_port {
        int                     tp_is_open;
        __u8                    tp_msr;
@@ -84,9 +309,6 @@ struct ti_device {
        int                     td_urb_error;
 };
 
-
-/* Function Declarations */
-
 static int ti_startup(struct usb_serial *serial);
 static void ti_release(struct usb_serial *serial);
 static int ti_port_probe(struct usb_serial_port *port);
@@ -136,13 +358,8 @@ static int ti_write_byte(struct usb_serial_port *port, struct ti_device *tdev,
 
 static int ti_download_firmware(struct ti_device *tdev);
 
-
-/* Data */
-
-/* module parameters */
 static int closing_wait = TI_DEFAULT_CLOSING_WAIT;
 
-/* supported devices */
 static const struct usb_device_id ti_id_table_3410[] = {
        { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
        { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
@@ -174,7 +391,7 @@ static const struct usb_device_id ti_id_table_5052[] = {
        { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) },
        { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
        { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
-       { }     /* terminator */
+       { }
 };
 
 static const struct usb_device_id ti_id_table_combined[] = {
@@ -275,8 +492,6 @@ static struct usb_serial_driver * const serial_drivers[] = {
        &ti_1port_device, &ti_2port_device, NULL
 };
 
-/* Module */
-
 MODULE_AUTHOR(TI_DRIVER_AUTHOR);
 MODULE_DESCRIPTION(TI_DRIVER_DESC);
 MODULE_LICENSE("GPL");
@@ -302,8 +517,6 @@ MODULE_DEVICE_TABLE(usb, ti_id_table_combined);
 
 module_usb_serial_driver(serial_drivers, ti_id_table_combined);
 
-/* Functions */
-
 static int ti_startup(struct usb_serial *serial)
 {
        struct ti_device *tdev;
@@ -319,7 +532,6 @@ static int ti_startup(struct usb_serial *serial)
                dev->descriptor.bNumConfigurations,
                dev->actconfig->desc.bConfigurationValue);
 
-       /* create device structure */
        tdev = kzalloc(sizeof(struct ti_device), GFP_KERNEL);
        if (!tdev)
                return -ENOMEM;
@@ -435,7 +647,7 @@ static int ti_open(struct tty_struct *tty, struct usb_serial_port *port)
        struct urb *urb;
        int port_number;
        int status;
-       __u16 open_settings = (__u8)(TI_PIPE_MODE_CONTINOUS |
+       __u16 open_settings = (__u8)(TI_PIPE_MODE_CONTINUOUS |
                             TI_PIPE_TIMEOUT_ENABLE |
                             (TI_TRANSFER_TIMEOUT << 2));
 
@@ -954,6 +1166,15 @@ static void ti_break(struct tty_struct *tty, int break_state)
                dev_dbg(&port->dev, "%s - error setting break, %d\n", __func__, status);
 }
 
+static int ti_get_port_from_code(unsigned char code)
+{
+       return (code >> 4) - 3;
+}
+
+static int ti_get_func_from_code(unsigned char code)
+{
+       return code & 0x0f;
+}
 
 static void ti_interrupt_callback(struct urb *urb)
 {
@@ -995,8 +1216,8 @@ static void ti_interrupt_callback(struct urb *urb)
                goto exit;
        }
 
-       port_number = TI_GET_PORT_FROM_CODE(data[0]);
-       function = TI_GET_FUNC_FROM_CODE(data[0]);
+       port_number = ti_get_port_from_code(data[0]);
+       function = ti_get_func_from_code(data[0]);
 
        dev_dbg(dev, "%s - port_number %d, function %d, data 0x%02X\n",
                __func__, port_number, function, data[1]);
diff --git a/drivers/usb/serial/ti_usb_3410_5052.h b/drivers/usb/serial/ti_usb_3410_5052.h
deleted file mode 100644 (file)
index bbfd3a1..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-/* vi: ts=8 sw=8
- *
- * TI 3410/5052 USB Serial Driver Header
- *
- * Copyright (C) 2004 Texas Instruments
- *
- * This driver is based on the Linux io_ti driver, which is
- *   Copyright (C) 2000-2002 Inside Out Networks
- *   Copyright (C) 2001-2002 Greg Kroah-Hartman
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * For questions or problems with this driver, contact Texas Instruments
- * technical support, or Al Borchers <alborchers@steinerpoint.com>, or
- * Peter Berger <pberger@brimson.com>.
- */
-
-#ifndef _TI_3410_5052_H_
-#define _TI_3410_5052_H_
-
-/* Configuration ids */
-#define TI_BOOT_CONFIG                 1
-#define TI_ACTIVE_CONFIG               2
-
-/* Vendor and product ids */
-#define TI_VENDOR_ID                   0x0451
-#define IBM_VENDOR_ID                  0x04b3
-#define TI_3410_PRODUCT_ID             0x3410
-#define IBM_4543_PRODUCT_ID            0x4543
-#define IBM_454B_PRODUCT_ID            0x454b
-#define IBM_454C_PRODUCT_ID            0x454c
-#define TI_3410_EZ430_ID               0xF430  /* TI ez430 development tool */
-#define TI_5052_BOOT_PRODUCT_ID                0x5052  /* no EEPROM, no firmware */
-#define TI_5152_BOOT_PRODUCT_ID                0x5152  /* no EEPROM, no firmware */
-#define TI_5052_EEPROM_PRODUCT_ID      0x505A  /* EEPROM, no firmware */
-#define TI_5052_FIRMWARE_PRODUCT_ID    0x505F  /* firmware is running */
-#define FRI2_PRODUCT_ID                        0x5053  /* Fish River Island II */
-
-/* Multi-Tech vendor and product ids */
-#define MTS_VENDOR_ID                  0x06E0
-#define MTS_GSM_NO_FW_PRODUCT_ID       0xF108
-#define MTS_CDMA_NO_FW_PRODUCT_ID      0xF109
-#define MTS_CDMA_PRODUCT_ID            0xF110
-#define MTS_GSM_PRODUCT_ID             0xF111
-#define MTS_EDGE_PRODUCT_ID            0xF112
-#define MTS_MT9234MU_PRODUCT_ID                0xF114
-#define MTS_MT9234ZBA_PRODUCT_ID       0xF115
-#define MTS_MT9234ZBAOLD_PRODUCT_ID    0x0319
-
-/* Abbott Diabetics vendor and product ids */
-#define ABBOTT_VENDOR_ID               0x1a61
-#define ABBOTT_STEREO_PLUG_ID          0x3410
-#define ABBOTT_PRODUCT_ID              ABBOTT_STEREO_PLUG_ID
-#define ABBOTT_STRIP_PORT_ID           0x3420
-
-/* Honeywell vendor and product IDs */
-#define HONEYWELL_VENDOR_ID            0x10ac
-#define HONEYWELL_HGI80_PRODUCT_ID     0x0102  /* Honeywell HGI80 */
-
-/* Moxa UPORT 11x0 vendor and product IDs */
-#define MXU1_VENDOR_ID                         0x110a
-#define MXU1_1110_PRODUCT_ID                   0x1110
-#define MXU1_1130_PRODUCT_ID                   0x1130
-#define MXU1_1131_PRODUCT_ID                   0x1131
-#define MXU1_1150_PRODUCT_ID                   0x1150
-#define MXU1_1151_PRODUCT_ID                   0x1151
-
-/* Commands */
-#define TI_GET_VERSION                 0x01
-#define TI_GET_PORT_STATUS             0x02
-#define TI_GET_PORT_DEV_INFO           0x03
-#define TI_GET_CONFIG                  0x04
-#define TI_SET_CONFIG                  0x05
-#define TI_OPEN_PORT                   0x06
-#define TI_CLOSE_PORT                  0x07
-#define TI_START_PORT                  0x08
-#define TI_STOP_PORT                   0x09
-#define TI_TEST_PORT                   0x0A
-#define TI_PURGE_PORT                  0x0B
-#define TI_RESET_EXT_DEVICE            0x0C
-#define TI_WRITE_DATA                  0x80
-#define TI_READ_DATA                   0x81
-#define TI_REQ_TYPE_CLASS              0x82
-
-/* Module identifiers */
-#define TI_I2C_PORT                    0x01
-#define TI_IEEE1284_PORT               0x02
-#define TI_UART1_PORT                  0x03
-#define TI_UART2_PORT                  0x04
-#define TI_RAM_PORT                    0x05
-
-/* Modem status */
-#define TI_MSR_DELTA_CTS               0x01
-#define TI_MSR_DELTA_DSR               0x02
-#define TI_MSR_DELTA_RI                        0x04
-#define TI_MSR_DELTA_CD                        0x08
-#define TI_MSR_CTS                     0x10
-#define TI_MSR_DSR                     0x20
-#define TI_MSR_RI                      0x40
-#define TI_MSR_CD                      0x80
-#define TI_MSR_DELTA_MASK              0x0F
-#define TI_MSR_MASK                    0xF0
-
-/* Line status */
-#define TI_LSR_OVERRUN_ERROR           0x01
-#define TI_LSR_PARITY_ERROR            0x02
-#define TI_LSR_FRAMING_ERROR           0x04
-#define TI_LSR_BREAK                   0x08
-#define TI_LSR_ERROR                   0x0F
-#define TI_LSR_RX_FULL                 0x10
-#define TI_LSR_TX_EMPTY                        0x20
-
-/* Line control */
-#define TI_LCR_BREAK                   0x40
-
-/* Modem control */
-#define TI_MCR_LOOP                    0x04
-#define TI_MCR_DTR                     0x10
-#define TI_MCR_RTS                     0x20
-
-/* Mask settings */
-#define TI_UART_ENABLE_RTS_IN          0x0001
-#define TI_UART_DISABLE_RTS            0x0002
-#define TI_UART_ENABLE_PARITY_CHECKING 0x0008
-#define TI_UART_ENABLE_DSR_OUT         0x0010
-#define TI_UART_ENABLE_CTS_OUT         0x0020
-#define TI_UART_ENABLE_X_OUT           0x0040
-#define TI_UART_ENABLE_XA_OUT          0x0080
-#define TI_UART_ENABLE_X_IN            0x0100
-#define TI_UART_ENABLE_DTR_IN          0x0800
-#define TI_UART_DISABLE_DTR            0x1000
-#define TI_UART_ENABLE_MS_INTS         0x2000
-#define TI_UART_ENABLE_AUTO_START_DMA  0x4000
-
-/* Parity */
-#define TI_UART_NO_PARITY              0x00
-#define TI_UART_ODD_PARITY             0x01
-#define TI_UART_EVEN_PARITY            0x02
-#define TI_UART_MARK_PARITY            0x03
-#define TI_UART_SPACE_PARITY           0x04
-
-/* Stop bits */
-#define TI_UART_1_STOP_BITS            0x00
-#define TI_UART_1_5_STOP_BITS          0x01
-#define TI_UART_2_STOP_BITS            0x02
-
-/* Bits per character */
-#define TI_UART_5_DATA_BITS            0x00
-#define TI_UART_6_DATA_BITS            0x01
-#define TI_UART_7_DATA_BITS            0x02
-#define TI_UART_8_DATA_BITS            0x03
-
-/* 232/485 modes */
-#define TI_UART_232                    0x00
-#define TI_UART_485_RECEIVER_DISABLED  0x01
-#define TI_UART_485_RECEIVER_ENABLED   0x02
-
-/* Pipe transfer mode and timeout */
-#define TI_PIPE_MODE_CONTINOUS         0x01
-#define TI_PIPE_MODE_MASK              0x03
-#define TI_PIPE_TIMEOUT_MASK           0x7C
-#define TI_PIPE_TIMEOUT_ENABLE         0x80
-
-/* Config struct */
-struct ti_uart_config {
-       __u16   wBaudRate;
-       __u16   wFlags;
-       __u8    bDataBits;
-       __u8    bParity;
-       __u8    bStopBits;
-       char    cXon;
-       char    cXoff;
-       __u8    bUartMode;
-} __attribute__((packed));
-
-/* Get port status */
-struct ti_port_status {
-       __u8    bCmdCode;
-       __u8    bModuleId;
-       __u8    bErrorCode;
-       __u8    bMSR;
-       __u8    bLSR;
-} __attribute__((packed));
-
-/* Purge modes */
-#define TI_PURGE_OUTPUT                        0x00
-#define TI_PURGE_INPUT                 0x80
-
-/* Read/Write data */
-#define TI_RW_DATA_ADDR_SFR            0x10
-#define TI_RW_DATA_ADDR_IDATA          0x20
-#define TI_RW_DATA_ADDR_XDATA          0x30
-#define TI_RW_DATA_ADDR_CODE           0x40
-#define TI_RW_DATA_ADDR_GPIO           0x50
-#define TI_RW_DATA_ADDR_I2C            0x60
-#define TI_RW_DATA_ADDR_FLASH          0x70
-#define TI_RW_DATA_ADDR_DSP            0x80
-
-#define TI_RW_DATA_UNSPECIFIED         0x00
-#define TI_RW_DATA_BYTE                        0x01
-#define TI_RW_DATA_WORD                        0x02
-#define TI_RW_DATA_DOUBLE_WORD         0x04
-
-struct ti_write_data_bytes {
-       __u8    bAddrType;
-       __u8    bDataType;
-       __u8    bDataCounter;
-       __be16  wBaseAddrHi;
-       __be16  wBaseAddrLo;
-       __u8    bData[0];
-} __attribute__((packed));
-
-struct ti_read_data_request {
-       __u8    bAddrType;
-       __u8    bDataType;
-       __u8    bDataCounter;
-       __be16  wBaseAddrHi;
-       __be16  wBaseAddrLo;
-} __attribute__((packed));
-
-struct ti_read_data_bytes {
-       __u8    bCmdCode;
-       __u8    bModuleId;
-       __u8    bErrorCode;
-       __u8    bData[0];
-} __attribute__((packed));
-
-/* Interrupt struct */
-struct ti_interrupt {
-       __u8    bICode;
-       __u8    bIInfo;
-} __attribute__((packed));
-
-/* Interrupt codes */
-#define TI_GET_PORT_FROM_CODE(c)       (((c) >> 4) - 3)
-#define TI_GET_FUNC_FROM_CODE(c)       ((c) & 0x0f)
-#define TI_CODE_HARDWARE_ERROR         0xFF
-#define TI_CODE_DATA_ERROR             0x03
-#define TI_CODE_MODEM_STATUS           0x04
-
-/* Download firmware max packet size */
-#define TI_DOWNLOAD_MAX_PACKET_SIZE    64
-
-/* Firmware image header */
-struct ti_firmware_header {
-       __le16  wLength;
-       __u8    bCheckSum;
-} __attribute__((packed));
-
-/* UART addresses */
-#define TI_UART1_BASE_ADDR             0xFFA0  /* UART 1 base address */
-#define TI_UART2_BASE_ADDR             0xFFB0  /* UART 2 base address */
-#define TI_UART_OFFSET_LCR             0x0002  /* UART MCR register offset */
-#define TI_UART_OFFSET_MCR             0x0004  /* UART MCR register offset */
-
-#endif /* _TI_3410_5052_H_ */