Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
Browse files Browse the repository at this point in the history
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6:
  usb-serial: ftdi_sio: fix reference counting of ftdi_private
  USB: unusual_devs: extend nokia 6288 bcd range
  USB: Gadget: fix UTF conversion in the usbstring library
  USB: Fix makefile so that CONFIG_WDM and CONFIG_TMC work.
  USB: ftdi_sio: add vendor/product id for the Marvell SheevaPlug
  USB: cxacru: Fix negative dB output
  • Loading branch information
Linus Torvalds committed May 10, 2009
2 parents 0016eff + c45d632 commit 6580cd5
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 11 deletions.
2 changes: 2 additions & 0 deletions drivers/usb/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ obj-$(CONFIG_USB_WUSB) += wusbcore/

obj-$(CONFIG_USB_ACM) += class/
obj-$(CONFIG_USB_PRINTER) += class/
obj-$(CONFIG_USB_WDM) += class/
obj-$(CONFIG_USB_TMC) += class/

obj-$(CONFIG_USB_STORAGE) += storage/
obj-$(CONFIG_USB) += storage/
Expand Down
10 changes: 8 additions & 2 deletions drivers/usb/atm/cxacru.c
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,14 @@ static ssize_t cxacru_sysfs_showattr_s8(s8 value, char *buf)

static ssize_t cxacru_sysfs_showattr_dB(s16 value, char *buf)
{
return snprintf(buf, PAGE_SIZE, "%d.%02u\n",
value / 100, abs(value) % 100);
if (likely(value >= 0)) {
return snprintf(buf, PAGE_SIZE, "%u.%02u\n",
value / 100, value % 100);
} else {
value = -value;
return snprintf(buf, PAGE_SIZE, "-%u.%02u\n",
value / 100, value % 100);
}
}

static ssize_t cxacru_sysfs_showattr_bool(u32 value, char *buf)
Expand Down
6 changes: 3 additions & 3 deletions drivers/usb/gadget/usbstring.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ static int utf8_to_utf16le(const char *s, __le16 *cp, unsigned len)
uchar = (c & 0x1f) << 6;

c = (u8) *s++;
if ((c & 0xc0) != 0xc0)
if ((c & 0xc0) != 0x80)
goto fail;
c &= 0x3f;
uchar |= c;
Expand All @@ -49,13 +49,13 @@ static int utf8_to_utf16le(const char *s, __le16 *cp, unsigned len)
uchar = (c & 0x0f) << 12;

c = (u8) *s++;
if ((c & 0xc0) != 0xc0)
if ((c & 0xc0) != 0x80)
goto fail;
c &= 0x3f;
uchar |= c << 6;

c = (u8) *s++;
if ((c & 0xc0) != 0xc0)
if ((c & 0xc0) != 0x80)
goto fail;
c &= 0x3f;
uchar |= c;
Expand Down
20 changes: 16 additions & 4 deletions drivers/usb/serial/ftdi_sio.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ static __u16 vendor = FTDI_VID;
static __u16 product;

struct ftdi_private {
struct kref kref;
ftdi_chip_type_t chip_type;
/* type of device, either SIO or FT8U232AM */
int baud_base; /* baud base clock for divisor setting */
Expand Down Expand Up @@ -669,6 +670,8 @@ static struct usb_device_id id_table_combined [] = {
{ USB_DEVICE(ADI_VID, ADI_GNICE_PID),
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
{ USB_DEVICE(JETI_VID, JETI_SPC1201_PID) },
{ USB_DEVICE(MARVELL_VID, MARVELL_SHEEVAPLUG_PID),
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
{ }, /* Optional parameter entry */
{ } /* Terminating entry */
};
Expand Down Expand Up @@ -1352,6 +1355,7 @@ static int ftdi_sio_port_probe(struct usb_serial_port *port)
return -ENOMEM;
}

kref_init(&priv->kref);
spin_lock_init(&priv->rx_lock);
spin_lock_init(&priv->tx_lock);
init_waitqueue_head(&priv->delta_msr_wait);
Expand Down Expand Up @@ -1468,6 +1472,13 @@ static void ftdi_shutdown(struct usb_serial *serial)
dbg("%s", __func__);
}

static void ftdi_sio_priv_release(struct kref *k)
{
struct ftdi_private *priv = container_of(k, struct ftdi_private, kref);

kfree(priv);
}

static int ftdi_sio_port_remove(struct usb_serial_port *port)
{
struct ftdi_private *priv = usb_get_serial_port_data(port);
Expand All @@ -1482,7 +1493,7 @@ static int ftdi_sio_port_remove(struct usb_serial_port *port)

if (priv) {
usb_set_serial_port_data(port, NULL);
kfree(priv);
kref_put(&priv->kref, ftdi_sio_priv_release);
}

return 0;
Expand Down Expand Up @@ -1547,7 +1558,8 @@ static int ftdi_open(struct tty_struct *tty,
dev_err(&port->dev,
"%s - failed submitting read urb, error %d\n",
__func__, result);

else
kref_get(&priv->kref);

return result;
} /* ftdi_open */
Expand Down Expand Up @@ -1589,11 +1601,11 @@ static void ftdi_close(struct tty_struct *tty,
mutex_unlock(&port->serial->disc_mutex);

/* cancel any scheduled reading */
cancel_delayed_work(&priv->rx_work);
flush_scheduled_work();
cancel_delayed_work_sync(&priv->rx_work);

/* shutdown our bulk read */
usb_kill_urb(port->read_urb);
kref_put(&priv->kref, ftdi_sio_priv_release);
} /* ftdi_close */


Expand Down
6 changes: 6 additions & 0 deletions drivers/usb/serial/ftdi_sio.h
Original file line number Diff line number Diff line change
Expand Up @@ -919,6 +919,12 @@
#define JETI_VID 0x0c6c
#define JETI_SPC1201_PID 0x04b2

/*
* Marvell SheevaPlug
*/
#define MARVELL_VID 0x9e88
#define MARVELL_SHEEVAPLUG_PID 0x9e8f

/*
* BmRequestType: 1100 0000b
* bRequest: FTDI_E2_READ
Expand Down
5 changes: 3 additions & 2 deletions drivers/usb/storage/unusual_devs.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,9 @@ UNUSUAL_DEV( 0x0420, 0x0001, 0x0100, 0x0100,
US_SC_DEVICE, US_PR_DEVICE, NULL,
US_FL_IGNORE_RESIDUE ),

/* Reported by Andrew Nayenko <relan@bk.ru> */
UNUSUAL_DEV( 0x0421, 0x0019, 0x0592, 0x0592,
/* Reported by Andrew Nayenko <relan@bk.ru>
* Updated for new firmware by Phillip Potter <phillipinda@hotmail.com> */
UNUSUAL_DEV( 0x0421, 0x0019, 0x0592, 0x0610,
"Nokia",
"Nokia 6288",
US_SC_DEVICE, US_PR_DEVICE, NULL,
Expand Down

0 comments on commit 6580cd5

Please sign in to comment.