| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | /* | 
 |  * Definitions for USB serial mobile broadband cards | 
 |  */ | 
 |  | 
 | #ifndef __LINUX_USB_USB_WWAN | 
 | #define __LINUX_USB_USB_WWAN | 
 |  | 
 | extern void usb_wwan_dtr_rts(struct usb_serial_port *port, int on); | 
 | extern int usb_wwan_open(struct tty_struct *tty, struct usb_serial_port *port); | 
 | extern void usb_wwan_close(struct usb_serial_port *port); | 
 | extern int usb_wwan_port_probe(struct usb_serial_port *port); | 
 | extern int usb_wwan_port_remove(struct usb_serial_port *port); | 
 | extern int usb_wwan_write_room(struct tty_struct *tty); | 
 | extern int usb_wwan_tiocmget(struct tty_struct *tty); | 
 | extern int usb_wwan_tiocmset(struct tty_struct *tty, | 
 | 			     unsigned int set, unsigned int clear); | 
 | extern int usb_wwan_ioctl(struct tty_struct *tty, | 
 | 			  unsigned int cmd, unsigned long arg); | 
 | extern int usb_wwan_write(struct tty_struct *tty, struct usb_serial_port *port, | 
 | 			  const unsigned char *buf, int count); | 
 | extern int usb_wwan_chars_in_buffer(struct tty_struct *tty); | 
 | #ifdef CONFIG_PM | 
 | extern int usb_wwan_suspend(struct usb_serial *serial, pm_message_t message); | 
 | extern int usb_wwan_resume(struct usb_serial *serial); | 
 | #endif | 
 |  | 
 | /* per port private data */ | 
 |  | 
 | #define N_IN_URB 4 | 
 | #define N_OUT_URB 4 | 
 | #define IN_BUFLEN 4096 | 
 | #define OUT_BUFLEN 4096 | 
 |  | 
 | struct usb_wwan_intf_private { | 
 | 	spinlock_t susp_lock; | 
 | 	unsigned int suspended:1; | 
 | 	unsigned int use_send_setup:1; | 
 | 	unsigned int use_zlp:1; | 
 | 	int in_flight; | 
 | 	unsigned int open_ports; | 
 | 	void *private; | 
 | }; | 
 |  | 
 | struct usb_wwan_port_private { | 
 | 	/* Input endpoints and buffer for this port */ | 
 | 	struct urb *in_urbs[N_IN_URB]; | 
 | 	u8 *in_buffer[N_IN_URB]; | 
 | 	/* Output endpoints and buffer for this port */ | 
 | 	struct urb *out_urbs[N_OUT_URB]; | 
 | 	u8 *out_buffer[N_OUT_URB]; | 
 | 	unsigned long out_busy;	/* Bit vector of URBs in use */ | 
 | 	struct usb_anchor delayed; | 
 |  | 
 | 	/* Settings for the port */ | 
 | 	int rts_state;		/* Handshaking pins (outputs) */ | 
 | 	int dtr_state; | 
 | 	int cts_state;		/* Handshaking pins (inputs) */ | 
 | 	int dsr_state; | 
 | 	int dcd_state; | 
 | 	int ri_state; | 
 |  | 
 | 	unsigned long tx_start_time[N_OUT_URB]; | 
 | }; | 
 |  | 
 | #endif /* __LINUX_USB_USB_WWAN */ |