diff options
author | Olof Johansson <olof@lixom.net> | 2012-11-06 07:51:06 -0800 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-11-06 07:51:06 -0800 |
commit | 66267ee58732bb4c21c7bbba004ee481b8ad2b30 (patch) | |
tree | bf7f72e623d7c1ca6472e0a1286e802cd3bff139 /drivers/usb/serial/f81232.c | |
parent | 6ed68a6d83e4497dc33581ccc82b4fa3e7e8226d (diff) | |
parent | f58007762f537ba13674a3138b3f4c20fff1cba9 (diff) | |
download | linux-stable-66267ee58732bb4c21c7bbba004ee481b8ad2b30.tar.gz linux-stable-66267ee58732bb4c21c7bbba004ee481b8ad2b30.tar.bz2 linux-stable-66267ee58732bb4c21c7bbba004ee481b8ad2b30.zip |
Merge branch 'arm-next' of git://git.xilinx.com/linux-xlnx into next/cleanup
From Michal Simek:
* 'arm-next' of git://git.xilinx.com/linux-xlnx:
zynq: move static peripheral mappings
zynq: remove use of CLKDEV_LOOKUP
zynq: use pl310 device tree bindings
zynq: use GIC device tree bindings
+ Linux 3.7-rc3
Diffstat (limited to 'drivers/usb/serial/f81232.c')
-rw-r--r-- | drivers/usb/serial/f81232.c | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/drivers/usb/serial/f81232.c b/drivers/usb/serial/f81232.c index 244477107e2f..6e4eb57d0177 100644 --- a/drivers/usb/serial/f81232.c +++ b/drivers/usb/serial/f81232.c @@ -318,39 +318,30 @@ static int f81232_ioctl(struct tty_struct *tty, return -ENOIOCTLCMD; } -static int f81232_startup(struct usb_serial *serial) +static int f81232_port_probe(struct usb_serial_port *port) { struct f81232_private *priv; - int i; - for (i = 0; i < serial->num_ports; ++i) { - priv = kzalloc(sizeof(struct f81232_private), GFP_KERNEL); - if (!priv) - goto cleanup; - spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->delta_msr_wait); - usb_set_serial_port_data(serial->port[i], priv); - } - return 0; + priv = kzalloc(sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; -cleanup: - for (--i; i >= 0; --i) { - priv = usb_get_serial_port_data(serial->port[i]); - kfree(priv); - usb_set_serial_port_data(serial->port[i], NULL); - } - return -ENOMEM; + spin_lock_init(&priv->lock); + init_waitqueue_head(&priv->delta_msr_wait); + + usb_set_serial_port_data(port, priv); + + return 0; } -static void f81232_release(struct usb_serial *serial) +static int f81232_port_remove(struct usb_serial_port *port) { - int i; struct f81232_private *priv; - for (i = 0; i < serial->num_ports; ++i) { - priv = usb_get_serial_port_data(serial->port[i]); - kfree(priv); - } + priv = usb_get_serial_port_data(port); + kfree(priv); + + return 0; } static struct usb_serial_driver f81232_device = { @@ -373,8 +364,8 @@ static struct usb_serial_driver f81232_device = { .tiocmset = f81232_tiocmset, .process_read_urb = f81232_process_read_urb, .read_int_callback = f81232_read_int_callback, - .attach = f81232_startup, - .release = f81232_release, + .port_probe = f81232_port_probe, + .port_remove = f81232_port_remove, }; static struct usb_serial_driver * const serial_drivers[] = { |