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