• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  * Description: hcc product configuration.
15  * Author:
16  * Create: 2021-09-18
17  */
18 
19 #ifndef __HCC_CFG_COMM_H__
20 #define __HCC_CFG_COMM_H__
21 
22 #include "osal_types.h"
23 #include "td_base.h"
24 
25 #ifdef __cplusplus
26 #if __cplusplus
27 extern "C" {
28 #endif
29 #endif
30 
31 #define HCC_TRANS_THREAD_TASK_STACK_SIZE 4096
32 
33 /*
34  * 各个bus使用差异说明:
35  * SDIO: h->D:  无论是否聚合都带描述符, && 发送之前需要发送控制帧标识队列
36  *       D->h:  不论是否聚合都不带描述符,使用64个寄存器存储,第0个标识队列ID, && 发送之前不需要发送控制帧
37  */
38 typedef enum _hcc_transfer_mode_ {
39     HCC_SINGLE_MODE,        /* 单帧发送 */
40     HCC_ASSEMBLE_MODE,      /* 聚合发送 */
41     HCC_TRANS_MODE_BUTT,
42     HCC_TRANS_MODE_INVALID = TD_U8_MAX
43 } hcc_transfer_mode;
44 
45 typedef enum _hcc_ipc_transfer_mode_ {
46     HCC_IPC_TRANS_POSTMEM,        /* 内存后申请模式 */
47     HCC_IPC_TRANS_PREMEM,         /* 内存预申请模式 */
48     HCC_IPC_TRANS_MODE_BUTT,
49     HCC_IPC_TRANS_MODE_INVALID = TD_U8_MAX
50 } hcc_ipc_transfer_mode;
51 
52 typedef enum _hcc_bus_type_ {
53     HCC_BUS_MIN = 0x0,
54     HCC_BUS_USB = 0x0,
55     HCC_BUS_SDIO = 0x1,
56     HCC_BUS_IPC = 0x3,
57     HCC_BUS_PCIE = 0x4,
58     HCC_BUS_VIRTUAL = 0x5,
59     HCC_BUS_UART = 0x6,
60     HCC_BUS_BUTT,
61     HCC_BUS_MAX  = 0xFF
62 } hcc_bus_type;
63 
64 #define HCC_CHANNEL_AP HCC_BUS_IPC
65 
66 typedef enum _hcc_serv_main_type {
67     HCC_ACTION_TYPE_BT = 0,        /* data from bt */
68     HCC_ACTION_TYPE_OAM = 1,       /* data from oam,plat etc. */
69     HCC_ACTION_TYPE_TEST = 2,      /* used for hcc transfer test,msg,dfx etc */
70     HCC_ACTION_TYPE_GLP = 3,       /* used for device chr exception, discarded by hso now */
71     HCC_ACTION_TYPE_CUSTOMIZE = 4, /* used for wifi control message */
72     HCC_ACTION_TYPE_BTC_MSG = 5,   /* used for btc msg */
73     HCC_ACTION_TYPE_WIFI = 6,      /* data from wifi data transfer */
74     HCC_SERVICE_VIRTUAL_HMAC = 7,      /* test for resv1 */
75     HCC_SERVICE_VIRTUAL_DMAC = 8,      /* test for resv2 */
76     HCC_SERVICE_FOR_HCC_INTERNAL = 9,  /* test for resv3 */
77     HCC_ACTION_TYPE_SLE = 0xA,         /* data from sle */
78     HCC_SERVICE_TYPE_MAX,
79 } hcc_service_type;
80 
81 typedef enum _hcc_queue_type {
82     CTRL_QUEUE = 0,                /* used for wifi control message */
83     DATA_HI_QUEUE = 1,             /* used for wifi mgmt frame */
84     DATA_LO_QUEUE = 2,             /* used for wifi data frame */
85     BT_DATA_QUEUE = 3,             /* used for bt data */
86     SLE_DATA_QUEUE = 4,            /* used for gle data */
87     HCC_QUEUE_INTERNAL = 5,        /* used for oam,plat etc */
88     BTC_MSG_QUEUE = 6,             /* used for btc msg */
89     HCC_TEST_QUEUE = 7,            /* used for hcc test */
90     HCC_QUEUE_COUNT
91 } hcc_queue_type;
92 
93 typedef enum _syschannel_queue_type {
94     SYSCH_MSG_QUEUE = 0,                /* used for syschannel message */
95     SYSCH_DATA_QUEUE = 1,               /* used for syschannel data */
96     SYSCH_TEST_QUEUE = 2,               /* used for syschannel test */
97 } syschannel_queue_type;
98 
99 typedef enum _d2h_msg_type {
100     D2H_MSG_FLOWCTRL_ON = 0,       /* can't send data, now discard, wifi flowctrl self */
101     D2H_MSG_FLOWCTRL_OFF = 1,      /* can send data, now discard, wifi flowctrl self */
102     D2H_MSG_FLOWCTRL_CHECK = 2,
103     D2H_MSG_TEST = 3,
104     D2H_MSG_TEST_START = 4,        /* hcc test 开始测试,时间在Host侧记录 */
105     D2H_MSG_TEST_STOP = 5,         /* hcc test 结束测试,时间在Host侧记录 */
106     D2H_MSG_CREDIT_UPDATE = 6,     /* update high priority buffer credit value, not used */
107     D2H_MSG_DEVICE_PANIC = 7,
108     D2H_MSG_BSP_READY = 8,         /* device boot msg */
109     D2H_MSG_WLAN_READY = 9,        /* wlan ready msg */
110     D2H_MSG_PLAT_END = 10,         /* 保留前十个 */
111 } d2h_msg_type;
112 
113 /* Host to device sdio message type */
114 typedef enum _h2d_msg_type {
115     H2D_MSG_FLOWCTRL_ON = 0,
116     H2D_MSG_FLOWCTRL_OFF = 1,  /* can send data, force to open */
117     H2D_MSG_FLOWCTRL_CHECK = 2,
118     H2D_MSG_TEST_INIT = 3,
119     H2D_MSG_TEST = 4,       /* msg for hcc test */
120     H2D_MSG_TEST_LOOP = 5,  /* 双向测试使用msg机制触发 */
121     H2D_MSG_WLAN_OPEN = 6,          /* wlan open msg */
122     H2D_MSG_WLAN_CLOSE = 7,         /* wlan close msg */
123     H2D_MSG_BT_OPEN = 8,
124     H2D_MSG_BT_CLOSE = 9,
125     H2D_MSG_PLAT_END = 10,  /* 保留前十个 */
126 } h2d_msg_type;
127 
128 #define FC_MSG_FLOWCTRL_ON  D2H_MSG_FLOWCTRL_ON
129 #define FC_MSG_FLOWCTRL_OFF D2H_MSG_FLOWCTRL_OFF
130 #define FC_MSG_FLOWCTRL_CHECK  D2H_MSG_FLOWCTRL_CHECK
131 
132 typedef td_u32 hcc_tx_msg_type;
133 typedef td_u32 hcc_rx_msg_type;
134 
135 #ifdef __cplusplus
136 #if __cplusplus
137 }
138 #endif
139 #endif
140 
141 #endif /* __HCC_CFG_COMM_H__ */
142