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