1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
- */
- #ifndef _IPA3_ODL_H_
- #define _IPA3_ODL_H_
- #define IPA_ODL_AGGR_BYTE_LIMIT (15 * 1024)
- #define IPA_ODL_RX_RING_SIZE 192
- #define MAX_QUEUE_TO_ODL 1024
- #define CONFIG_SUCCESS 1
- #define ODL_EP_TYPE_HSUSB 2
- #define ODL_EP_PERIPHERAL_IFACE_ID 3
- struct ipa3_odlstats {
- u32 odl_rx_pkt;
- u32 odl_tx_diag_pkt;
- u32 odl_drop_pkt;
- atomic_t numer_in_queue;
- };
- struct odl_state_bit_mask {
- u32 odl_init:1;
- u32 odl_open:1;
- u32 adpl_open:1;
- u32 aggr_byte_limit_sent:1;
- u32 odl_ep_setup:1;
- u32 odl_setup_done_sent:1;
- u32 odl_ep_info_sent:1;
- u32 odl_connected:1;
- u32 odl_disconnected:1;
- u32:0;
- };
- /**
- * struct ipa3_odl_char_device_context - IPA ODL character device
- * @class: pointer to the struct class
- * @dev_num: device number
- * @dev: the dev_t of the device
- * @cdev: cdev of the device
- */
- struct ipa3_odl_char_device_context {
- struct class *class;
- dev_t dev_num;
- struct device *dev;
- struct cdev cdev;
- };
- struct ipa_odl_context {
- struct ipa3_odl_char_device_context odl_cdev[2];
- struct list_head adpl_msg_list;
- struct mutex adpl_msg_lock;
- struct ipa_sys_connect_params odl_sys_param;
- u32 odl_client_hdl;
- struct odl_state_bit_mask odl_state;
- bool odl_ctl_msg_wq_flag;
- struct ipa3_odlstats stats;
- u32 odl_pm_hdl;
- };
- struct ipa3_push_msg_odl {
- void *buff;
- int len;
- struct list_head link;
- };
- extern struct ipa_odl_context *ipa3_odl_ctx;
- int ipa_odl_init(void);
- void ipa3_odl_pipe_cleanup(bool is_ssr);
- int ipa3_odl_pipe_open(void);
- #endif /* _IPA3_ODL_H_ */
|