diff options
Diffstat (limited to 'drivers/usb/serial/cyberjack.c')
-rw-r--r-- | drivers/usb/serial/cyberjack.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c index dd501bb63ed6..336523fd7366 100644 --- a/drivers/usb/serial/cyberjack.c +++ b/drivers/usb/serial/cyberjack.c | |||
@@ -58,11 +58,11 @@ static int debug; | |||
58 | 58 | ||
59 | /* Function prototypes */ | 59 | /* Function prototypes */ |
60 | static int cyberjack_startup(struct usb_serial *serial); | 60 | static int cyberjack_startup(struct usb_serial *serial); |
61 | static void cyberjack_shutdown(struct usb_serial *serial); | 61 | static void cyberjack_disconnect(struct usb_serial *serial); |
62 | static void cyberjack_release(struct usb_serial *serial); | ||
62 | static int cyberjack_open(struct tty_struct *tty, | 63 | static int cyberjack_open(struct tty_struct *tty, |
63 | struct usb_serial_port *port, struct file *filp); | 64 | struct usb_serial_port *port, struct file *filp); |
64 | static void cyberjack_close(struct tty_struct *tty, | 65 | static void cyberjack_close(struct usb_serial_port *port); |
65 | struct usb_serial_port *port, struct file *filp); | ||
66 | static int cyberjack_write(struct tty_struct *tty, | 66 | static int cyberjack_write(struct tty_struct *tty, |
67 | struct usb_serial_port *port, const unsigned char *buf, int count); | 67 | struct usb_serial_port *port, const unsigned char *buf, int count); |
68 | static int cyberjack_write_room(struct tty_struct *tty); | 68 | static int cyberjack_write_room(struct tty_struct *tty); |
@@ -95,7 +95,8 @@ static struct usb_serial_driver cyberjack_device = { | |||
95 | .id_table = id_table, | 95 | .id_table = id_table, |
96 | .num_ports = 1, | 96 | .num_ports = 1, |
97 | .attach = cyberjack_startup, | 97 | .attach = cyberjack_startup, |
98 | .shutdown = cyberjack_shutdown, | 98 | .disconnect = cyberjack_disconnect, |
99 | .release = cyberjack_release, | ||
99 | .open = cyberjack_open, | 100 | .open = cyberjack_open, |
100 | .close = cyberjack_close, | 101 | .close = cyberjack_close, |
101 | .write = cyberjack_write, | 102 | .write = cyberjack_write, |
@@ -149,17 +150,25 @@ static int cyberjack_startup(struct usb_serial *serial) | |||
149 | return 0; | 150 | return 0; |
150 | } | 151 | } |
151 | 152 | ||
152 | static void cyberjack_shutdown(struct usb_serial *serial) | 153 | static void cyberjack_disconnect(struct usb_serial *serial) |
153 | { | 154 | { |
154 | int i; | 155 | int i; |
155 | 156 | ||
156 | dbg("%s", __func__); | 157 | dbg("%s", __func__); |
157 | 158 | ||
158 | for (i = 0; i < serial->num_ports; ++i) { | 159 | for (i = 0; i < serial->num_ports; ++i) |
159 | usb_kill_urb(serial->port[i]->interrupt_in_urb); | 160 | usb_kill_urb(serial->port[i]->interrupt_in_urb); |
161 | } | ||
162 | |||
163 | static void cyberjack_release(struct usb_serial *serial) | ||
164 | { | ||
165 | int i; | ||
166 | |||
167 | dbg("%s", __func__); | ||
168 | |||
169 | for (i = 0; i < serial->num_ports; ++i) { | ||
160 | /* My special items, the standard routines free my urbs */ | 170 | /* My special items, the standard routines free my urbs */ |
161 | kfree(usb_get_serial_port_data(serial->port[i])); | 171 | kfree(usb_get_serial_port_data(serial->port[i])); |
162 | usb_set_serial_port_data(serial->port[i], NULL); | ||
163 | } | 172 | } |
164 | } | 173 | } |
165 | 174 | ||
@@ -185,8 +194,7 @@ static int cyberjack_open(struct tty_struct *tty, | |||
185 | return result; | 194 | return result; |
186 | } | 195 | } |
187 | 196 | ||
188 | static void cyberjack_close(struct tty_struct *tty, | 197 | static void cyberjack_close(struct usb_serial_port *port) |
189 | struct usb_serial_port *port, struct file *filp) | ||
190 | { | 198 | { |
191 | dbg("%s - port %d", __func__, port->number); | 199 | dbg("%s - port %d", __func__, port->number); |
192 | 200 | ||