Matthew Garrett | 0d45619 | 2010-04-01 12:31:07 -0400 | [diff] [blame] | 1 | /* |
| 2 | * Definitions for USB serial mobile broadband cards |
| 3 | */ |
| 4 | |
| 5 | #ifndef __LINUX_USB_USB_WWAN |
| 6 | #define __LINUX_USB_USB_WWAN |
| 7 | |
| 8 | extern void usb_wwan_dtr_rts(struct usb_serial_port *port, int on); |
| 9 | extern int usb_wwan_open(struct tty_struct *tty, struct usb_serial_port *port); |
| 10 | extern void usb_wwan_close(struct usb_serial_port *port); |
| 11 | extern int usb_wwan_startup(struct usb_serial *serial); |
| 12 | extern void usb_wwan_disconnect(struct usb_serial *serial); |
| 13 | extern void usb_wwan_release(struct usb_serial *serial); |
| 14 | extern int usb_wwan_write_room(struct tty_struct *tty); |
| 15 | extern void usb_wwan_set_termios(struct tty_struct *tty, |
| 16 | struct usb_serial_port *port, |
| 17 | struct ktermios *old); |
Alan Cox | 60b33c1 | 2011-02-14 16:26:14 +0000 | [diff] [blame] | 18 | extern int usb_wwan_tiocmget(struct tty_struct *tty); |
Alan Cox | 20b9d17 | 2011-02-14 16:26:50 +0000 | [diff] [blame] | 19 | extern int usb_wwan_tiocmset(struct tty_struct *tty, |
Matthew Garrett | 0d45619 | 2010-04-01 12:31:07 -0400 | [diff] [blame] | 20 | unsigned int set, unsigned int clear); |
Alan Cox | 00a0d0d | 2011-02-14 16:27:06 +0000 | [diff] [blame] | 21 | extern int usb_wwan_ioctl(struct tty_struct *tty, |
Dan Williams | 02303f7 | 2010-11-19 16:04:00 -0600 | [diff] [blame] | 22 | unsigned int cmd, unsigned long arg); |
Matthew Garrett | 0d45619 | 2010-04-01 12:31:07 -0400 | [diff] [blame] | 23 | extern int usb_wwan_send_setup(struct usb_serial_port *port); |
| 24 | extern int usb_wwan_write(struct tty_struct *tty, struct usb_serial_port *port, |
| 25 | const unsigned char *buf, int count); |
| 26 | extern int usb_wwan_chars_in_buffer(struct tty_struct *tty); |
| 27 | #ifdef CONFIG_PM |
| 28 | extern int usb_wwan_suspend(struct usb_serial *serial, pm_message_t message); |
| 29 | extern int usb_wwan_resume(struct usb_serial *serial); |
| 30 | #endif |
| 31 | |
| 32 | /* per port private data */ |
| 33 | |
| 34 | #define N_IN_URB 4 |
| 35 | #define N_OUT_URB 4 |
| 36 | #define IN_BUFLEN 4096 |
| 37 | #define OUT_BUFLEN 4096 |
| 38 | |
| 39 | struct usb_wwan_intf_private { |
| 40 | spinlock_t susp_lock; |
| 41 | unsigned int suspended:1; |
| 42 | int in_flight; |
| 43 | int (*send_setup) (struct usb_serial_port *port); |
| 44 | void *private; |
| 45 | }; |
| 46 | |
| 47 | struct usb_wwan_port_private { |
| 48 | /* Input endpoints and buffer for this port */ |
| 49 | struct urb *in_urbs[N_IN_URB]; |
| 50 | u8 *in_buffer[N_IN_URB]; |
| 51 | /* Output endpoints and buffer for this port */ |
| 52 | struct urb *out_urbs[N_OUT_URB]; |
| 53 | u8 *out_buffer[N_OUT_URB]; |
| 54 | unsigned long out_busy; /* Bit vector of URBs in use */ |
| 55 | int opened; |
| 56 | struct usb_anchor delayed; |
| 57 | |
| 58 | /* Settings for the port */ |
| 59 | int rts_state; /* Handshaking pins (outputs) */ |
| 60 | int dtr_state; |
| 61 | int cts_state; /* Handshaking pins (inputs) */ |
| 62 | int dsr_state; |
| 63 | int dcd_state; |
| 64 | int ri_state; |
| 65 | |
| 66 | unsigned long tx_start_time[N_OUT_URB]; |
| 67 | }; |
| 68 | |
| 69 | #endif /* __LINUX_USB_USB_WWAN */ |