VSF Documented
vsf_usbh_wifi_mt76_priv.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_USBH_WIFI_MT76_PRIV_H__
19#define __VSF_USBH_WIFI_MT76_PRIV_H__
20
21/*============================ INCLUDES ======================================*/
22
24
25#if VSF_USE_USB_HOST == ENABLED && VSF_USBH_USE_MT76 == ENABLED && VSF_USE_WIFI == ENABLED
26
29
30/*============================ MACROS ========================================*/
31
32#define MT76_EP_IN_PKT_RX 0
33#define MT76_EP_IN_CMD_RESP 1
34#define MT76_EP_IN_MAX 2
35
36#define MT76_EP_OUT_INBAND_CMD 0
37#define MT76_EP_OUT_AC_BE 1
38#define MT76_EP_OUT_AC_BK 2
39#define MT76_EP_OUT_AC_VI 3
40#define MT76_EP_OUT_AC_VO 4
41#define MT76_EP_OUT_HCCA 5
42#define MT76_EP_OUT_MAX 6
43
44#ifndef VSF_USBH_WIFI_MT76_CFG_RX_NUM
45# define VSF_USBH_WIFI_MT76_CFG_RX_NUM 4
46#endif
47#ifndef VSF_USBH_WIFI_MT76_CFG_TX_NUM
48# define VSF_USBH_WIFI_MT76_CFG_TX_NUM 4
49#endif
50#ifndef VSF_USBH_WIFI_MT76_CFG_RX_BUFSIZE
51# define VSF_USBH_WIFI_MT76_CFG_RX_BUFSIZE 4096
52#endif
53#ifndef VSF_USBH_WIFI_MT76_CFG_TX_BUFSIZE
54# define VSF_USBH_WIFI_MT76_CFG_TX_BUFSIZE 4096
55#endif
56
57/*============================ TYPES =========================================*/
58
65
73
74#define MT76_EP0_CLASS_DATA_SIZE 64
75#define MT76_EP0_QUEUE_SIZE 8
76
87
94
99
108
109typedef struct vk_usbh_wifi_mt76_t {
113
116
119
120 /* chip driver private data follows wifi */
122
123 /* ep0 control-transfer state. All EP0 requests go through ep0_queue;
124 * only one request is in flight at a time, and the dispatcher starts the
125 * next one after the current completes. This removes the old requirement
126 * that callers wait for ep0_state == IDLE before submitting. */
130 bool ep0_crit_pend; /* waiting for ep0.crit */
133 void *ep0_buf; /* caller buffer for IN/OUT data */
136
137 /* Bulk RX/TX iocb pool */
143
144/*============================ HELPER MACRO ==================================*/
145
146#define __this_uwifi(__eda) vsf_container_of(__eda, vk_usbh_wifi_mt76_t, eda)
147
148#endif /* VSF_USE_USB_HOST && VSF_USBH_USE_MT76 && VSF_USE_WIFI */
149#endif /* __VSF_USBH_WIFI_MT76_PRIV_H__ */
Definition vsf_usbh.h:478
Definition vsf_usbh.h:523
Definition vsf_usbh.h:450
Definition vsf_eda.h:769
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_wifi_mt76.h:128
Definition usb_common.h:89
Definition usb_common.h:294
Definition vsf_usbh.h:179
Definition vsf_usbh_wifi_mt76_priv.h:88
uint8_t tail
Definition vsf_usbh_wifi_mt76_priv.h:91
vk_usbh_wifi_mt76_ep0_req_t reqs[MT76_EP0_QUEUE_SIZE]
Definition vsf_usbh_wifi_mt76_priv.h:89
uint8_t count
Definition vsf_usbh_wifi_mt76_priv.h:92
uint8_t head
Definition vsf_usbh_wifi_mt76_priv.h:90
Definition vsf_usbh_wifi_mt76_priv.h:77
uint8_t class_data[MT76_EP0_CLASS_DATA_SIZE]
Definition vsf_usbh_wifi_mt76_priv.h:83
vk_usbh_wifi_mt76_ep0_req_type_t type
Definition vsf_usbh_wifi_mt76_priv.h:78
void * buf
Definition vsf_usbh_wifi_mt76_priv.h:82
uint32_t fce_addr
Definition vsf_usbh_wifi_mt76_priv.h:80
vsf_wifi_done_t done
Definition vsf_usbh_wifi_mt76_priv.h:85
struct usb_ctrlrequest_t req
Definition vsf_usbh_wifi_mt76_priv.h:79
uint32_t fce_val
Definition vsf_usbh_wifi_mt76_priv.h:81
uint16_t class_len
Definition vsf_usbh_wifi_mt76_priv.h:84
Definition vsf_usbh_wifi_mt76_priv.h:95
uint8_t addr
Definition vsf_usbh_wifi_mt76_priv.h:96
struct usb_endpoint_desc_t * desc
Definition vsf_usbh_wifi_mt76_priv.h:97
Definition vsf_usbh_wifi_mt76_priv.h:100
uint8_t is_busy
Definition vsf_usbh_wifi_mt76_priv.h:104
uint8_t ep_idx
Definition vsf_usbh_wifi_mt76_priv.h:105
uint8_t is_supported
Definition vsf_usbh_wifi_mt76_priv.h:103
vk_usbh_urb_t urb
Definition vsf_usbh_wifi_mt76_priv.h:101
uint8_t is_rx
Definition vsf_usbh_wifi_mt76_priv.h:102
vsf_wifi_done_t done
Definition vsf_usbh_wifi_mt76_priv.h:106
Definition vsf_usbh_wifi_mt76_priv.h:109
vsf_wifi_t wifi
Definition vsf_usbh_wifi_mt76_priv.h:118
uint32_t ep0_fce_addr
Definition vsf_usbh_wifi_mt76_priv.h:134
bool ep0_busy
Definition vsf_usbh_wifi_mt76_priv.h:129
bool ep0_crit_pend
Definition vsf_usbh_wifi_mt76_priv.h:130
vk_usbh_wifi_mt76_ep_t out_ep[MT76_EP_OUT_MAX]
Definition vsf_usbh_wifi_mt76_priv.h:115
vk_usbh_wifi_mt76_ep0_queue_t ep0_queue
Definition vsf_usbh_wifi_mt76_priv.h:131
vk_usbh_wifi_mt76_iocb_t rx_pkt_iocb[VSF_USBH_WIFI_MT76_CFG_RX_NUM]
Definition vsf_usbh_wifi_mt76_priv.h:138
mt76_wifi_priv_t mt76_priv
Definition vsf_usbh_wifi_mt76_priv.h:121
vk_usbh_ifs_t * ifs
Definition vsf_usbh_wifi_mt76_priv.h:112
vk_usbh_wifi_mt76_iocb_t mcu_cmd_iocb
Definition vsf_usbh_wifi_mt76_priv.h:141
void * ep0_buf
Definition vsf_usbh_wifi_mt76_priv.h:133
struct usb_ctrlrequest_t ep0_req
Definition vsf_usbh_wifi_mt76_priv.h:132
vsf_wifi_done_t ep0_done
Definition vsf_usbh_wifi_mt76_priv.h:128
vk_usbh_dev_t * dev
Definition vsf_usbh_wifi_mt76_priv.h:111
vk_usbh_wifi_mt76_ep0_state_t ep0_state
Definition vsf_usbh_wifi_mt76_priv.h:127
vsf_eda_t eda
Definition vsf_usbh_wifi_mt76_priv.h:117
vk_usbh_wifi_mt76_ep_t in_ep[MT76_EP_IN_MAX]
Definition vsf_usbh_wifi_mt76_priv.h:114
vk_usbh_t * usbh
Definition vsf_usbh_wifi_mt76_priv.h:110
vk_usbh_wifi_mt76_iocb_t tx_iocb[VSF_USBH_WIFI_MT76_CFG_TX_NUM]
Definition vsf_usbh_wifi_mt76_priv.h:140
uint32_t ep0_fce_val
Definition vsf_usbh_wifi_mt76_priv.h:135
vk_usbh_wifi_mt76_iocb_t rx_cmd_iocb
Definition vsf_usbh_wifi_mt76_priv.h:139
Definition vsf_wifi_priv.h:57
struct vk_usbh_wifi_mt76_ep0_req_t vk_usbh_wifi_mt76_ep0_req_t
#define MT76_EP0_CLASS_DATA_SIZE
Definition vsf_usbh_wifi_mt76_priv.h:74
#define VSF_USBH_WIFI_MT76_CFG_RX_NUM
Definition vsf_usbh_wifi_mt76_priv.h:45
#define MT76_EP0_QUEUE_SIZE
Definition vsf_usbh_wifi_mt76_priv.h:75
struct vk_usbh_wifi_mt76_ep0_queue_t vk_usbh_wifi_mt76_ep0_queue_t
struct vk_usbh_wifi_mt76_iocb_t vk_usbh_wifi_mt76_iocb_t
#define MT76_EP_OUT_MAX
Definition vsf_usbh_wifi_mt76_priv.h:42
#define MT76_EP_IN_MAX
Definition vsf_usbh_wifi_mt76_priv.h:34
struct vk_usbh_wifi_mt76_ep_t vk_usbh_wifi_mt76_ep_t
#define VSF_USBH_WIFI_MT76_CFG_TX_NUM
Definition vsf_usbh_wifi_mt76_priv.h:48
vk_usbh_wifi_mt76_ep0_req_type_t
Definition vsf_usbh_wifi_mt76_priv.h:66
@ MT76_EP0_REQ_FCE_WRITE
Definition vsf_usbh_wifi_mt76_priv.h:69
@ MT76_EP0_REQ_DEV_CMD
Definition vsf_usbh_wifi_mt76_priv.h:70
@ MT76_EP0_REQ_DEV_CLASS_CMD
Definition vsf_usbh_wifi_mt76_priv.h:71
@ MT76_EP0_REQ_WRITE
Definition vsf_usbh_wifi_mt76_priv.h:68
@ MT76_EP0_REQ_READ
Definition vsf_usbh_wifi_mt76_priv.h:67
struct vk_usbh_wifi_mt76_t vk_usbh_wifi_mt76_t
vk_usbh_wifi_mt76_ep0_state_t
Definition vsf_usbh_wifi_mt76_priv.h:59
@ MT76_EP0_FCE_LO
Definition vsf_usbh_wifi_mt76_priv.h:62
@ MT76_EP0_IDLE
Definition vsf_usbh_wifi_mt76_priv.h:60
@ MT76_EP0_FCE_HI
Definition vsf_usbh_wifi_mt76_priv.h:63
@ MT76_EP0_MCU_CMD
Definition vsf_usbh_wifi_mt76_priv.h:61
void(* vsf_wifi_done_t)(vsf_wifi_t *wifi, vsf_err_t err)
Definition vsf_wifi.h:123
Generated from commit: vsfteam/vsf@9e2cb73