1 /* ---------------------------------------------------------------------------- 2 * Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved. 3 * Description: LiteOS USB Driver Generic EP0 Data Stream HeadFile 4 * Author: Yannik Li 5 * Create: 2021-02-21 6 * Redistribution and use in source and binary forms, with or without modification, 7 * are permitted provided that the following conditions are met: 8 * 1. Redistributions of source code must retain the above copyright notice, this list of 9 * conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 11 * of conditions and the following disclaimer in the documentation and/or other materials 12 * provided with the distribution. 13 * 3. Neither the name of the copyright holder nor the names of its contributors may be used 14 * to endorse or promote products derived from this software without specific prior written 15 * permission. 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 18 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 23 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 26 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * --------------------------------------------------------------------------- */ 28 /* ---------------------------------------------------------------------------- 29 * Notice of Export Control Law 30 * =============================================== 31 * Huawei LiteOS may be subject to applicable export control laws and regulations, which might 32 * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. 33 * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such 34 * applicable export control laws and regulations. 35 * --------------------------------------------------------------------------- */ 36 37 #ifndef LITEOS_USB_DEVICE_GENERIC_EPFILE_H 38 #define LITEOS_USB_DEVICE_GENERIC_EPFILE_H 39 40 #include "f_common.h" 41 42 #ifdef __cplusplus 43 #if __cplusplus 44 //extern "C" { 45 #endif /* __cplusplus */ 46 #endif /* __cplusplus */ 47 48 struct generic_io_data 49 { 50 uint32_t buf; 51 int32_t result; 52 uint32_t xfrd; 53 uint32_t len; 54 }; 55 struct generic_io_data_ret 56 { 57 uint32_t buf; 58 uint32_t actual; 59 int status; 60 }; 61 62 struct generic_request 63 { 64 struct list_head entry; 65 struct generic_io_data io_data; 66 void *user_buf; 67 }; 68 69 struct generic_epfile 70 { 71 struct usb_obj obj; 72 pthread_mutex_t mutex; 73 74 struct generic_dev_s *dev; 75 struct generic_ep *ep; 76 spinlock_t list_lock; 77 struct usb_obj memory_obj; 78 struct list_head req_list; 79 struct list_head comp_list; 80 struct generic_request *cur_req; 81 volatile atomic_t busy_flag; 82 uint32_t req_count; 83 EVENT_CB_S sync_event; 84 uint32_t event_mask; 85 char name[5]; 86 unsigned char in; 87 unsigned char isoc; 88 unsigned char _pad; 89 bool is_created; 90 }; 91 92 extern int generic_epfiles_create(struct generic_dev_s *dev); 93 extern int generic_eps_enable(struct generic_dev_s *dev); 94 extern void generic_eps_disable(struct generic_dev_s *dev); 95 extern int generic_remove_epfiles(struct generic_dev_s *dev); 96 97 #ifdef __cplusplus 98 #if __cplusplus 99 //} 100 #endif /* __cplusplus */ 101 #endif /* __cplusplus */ 102 103 #endif /* LITEOS_USB_DEVICE_GNENRIC_EPFILE_H */ 104