xref: /linux-6.15/include/linux/usb/cdc.h (revision e3fa404a)
1*5fd54aceSGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2c40a2c88SOliver Neukum /*
3c40a2c88SOliver Neukum  * USB CDC common helpers
4c40a2c88SOliver Neukum  *
5c40a2c88SOliver Neukum  * Copyright (c) 2015 Oliver Neukum <[email protected]>
6c40a2c88SOliver Neukum  */
7b84ee0d7SStephen Rothwell #ifndef __LINUX_USB_CDC_H
8b84ee0d7SStephen Rothwell #define __LINUX_USB_CDC_H
9c40a2c88SOliver Neukum 
10c40a2c88SOliver Neukum #include <uapi/linux/usb/cdc.h>
11c40a2c88SOliver Neukum 
12c40a2c88SOliver Neukum /*
13c40a2c88SOliver Neukum  * inofficial magic numbers
14c40a2c88SOliver Neukum  */
15c40a2c88SOliver Neukum 
16c40a2c88SOliver Neukum #define CDC_PHONET_MAGIC_NUMBER		0xAB
17c40a2c88SOliver Neukum 
18c40a2c88SOliver Neukum /*
19c40a2c88SOliver Neukum  * parsing CDC headers
20c40a2c88SOliver Neukum  */
21c40a2c88SOliver Neukum 
22c40a2c88SOliver Neukum struct usb_cdc_parsed_header {
23c40a2c88SOliver Neukum 	struct usb_cdc_union_desc *usb_cdc_union_desc;
24c40a2c88SOliver Neukum 	struct usb_cdc_header_desc *usb_cdc_header_desc;
25c40a2c88SOliver Neukum 
26c40a2c88SOliver Neukum 	struct usb_cdc_call_mgmt_descriptor *usb_cdc_call_mgmt_descriptor;
27c40a2c88SOliver Neukum 	struct usb_cdc_acm_descriptor *usb_cdc_acm_descriptor;
28c40a2c88SOliver Neukum 	struct usb_cdc_country_functional_desc *usb_cdc_country_functional_desc;
29c40a2c88SOliver Neukum 	struct usb_cdc_network_terminal_desc *usb_cdc_network_terminal_desc;
30c40a2c88SOliver Neukum 	struct usb_cdc_ether_desc *usb_cdc_ether_desc;
31c40a2c88SOliver Neukum 	struct usb_cdc_dmm_desc *usb_cdc_dmm_desc;
32c40a2c88SOliver Neukum 	struct usb_cdc_mdlm_desc *usb_cdc_mdlm_desc;
33c40a2c88SOliver Neukum 	struct usb_cdc_mdlm_detail_desc *usb_cdc_mdlm_detail_desc;
34c40a2c88SOliver Neukum 	struct usb_cdc_obex_desc *usb_cdc_obex_desc;
35c40a2c88SOliver Neukum 	struct usb_cdc_ncm_desc *usb_cdc_ncm_desc;
36c40a2c88SOliver Neukum 	struct usb_cdc_mbim_desc *usb_cdc_mbim_desc;
37c40a2c88SOliver Neukum 	struct usb_cdc_mbim_extended_desc *usb_cdc_mbim_extended_desc;
38c40a2c88SOliver Neukum 
39c40a2c88SOliver Neukum 	bool phonet_magic_present;
40c40a2c88SOliver Neukum };
41c40a2c88SOliver Neukum 
42ad1e7b97SDavid S. Miller struct usb_interface;
43c40a2c88SOliver Neukum int cdc_parse_cdc_header(struct usb_cdc_parsed_header *hdr,
44c40a2c88SOliver Neukum 				struct usb_interface *intf,
45c40a2c88SOliver Neukum 				u8 *buffer,
46c40a2c88SOliver Neukum 				int buflen);
47b84ee0d7SStephen Rothwell 
48b84ee0d7SStephen Rothwell #endif /* __LINUX_USB_CDC_H */
49