| 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 */ |