1 /****************************************************************************** 2 * 3 * Copyright(c) 2016 - 2019 Realtek Corporation. All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 ******************************************************************************/ 15 16 #ifndef _HAL_H2CEXTRAINFO_H2C_C2H_AP_H_ 17 #define _HAL_H2CEXTRAINFO_H2C_C2H_AP_H_ 18 19 /* H2C extra info (rsvd page) usage, unit : page (128byte)*/ 20 /* dlfw : not include txdesc size*/ 21 /* update pkt : not include txdesc size*/ 22 /* cfg param : not include txdesc size*/ 23 /* scan info : not include txdesc size*/ 24 /* dl flash : not include txdesc size*/ 25 #define DLFW_RSVDPG_SIZE 2048 26 #define UPDATE_PKT_RSVDPG_SIZE 2048 27 #define CFG_PARAM_RSVDPG_SIZE 2048 28 #define SCAN_INFO_RSVDPG_SIZE 256 29 #define DL_FLASH_RSVDPG_SIZE 2048 30 /* su0 snding pkt : include txdesc size */ 31 #define SU0_SNDING_PKT_OFFSET 0 32 #define SU0_SNDING_PKT_RSVDPG_SIZE 128 33 34 #define PARAM_INFO_GET_LEN(extra_info) GET_C2H_FIELD(extra_info + 0X00, 0, 8) 35 #define PARAM_INFO_SET_LEN(extra_info, value) \ 36 SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 8, value) 37 #define PARAM_INFO_SET_LEN_NO_CLR(extra_info, value) \ 38 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 8, value) 39 #define PARAM_INFO_GET_IO_CMD(extra_info) GET_C2H_FIELD(extra_info + 0X00, 8, 7) 40 #define PARAM_INFO_SET_IO_CMD(extra_info, value) \ 41 SET_C2H_FIELD_CLR(extra_info + 0X00, 8, 7, value) 42 #define PARAM_INFO_SET_IO_CMD_NO_CLR(extra_info, value) \ 43 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 8, 7, value) 44 #define PARAM_INFO_GET_MSK_EN(extra_info) \ 45 GET_C2H_FIELD(extra_info + 0X00, 15, 1) 46 #define PARAM_INFO_SET_MSK_EN(extra_info, value) \ 47 SET_C2H_FIELD_CLR(extra_info + 0X00, 15, 1, value) 48 #define PARAM_INFO_SET_MSK_EN_NO_CLR(extra_info, value) \ 49 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 15, 1, value) 50 #define PARAM_INFO_GET_LLT_PG_BNDY(extra_info) \ 51 GET_C2H_FIELD(extra_info + 0X00, 16, 8) 52 #define PARAM_INFO_SET_LLT_PG_BNDY(extra_info, value) \ 53 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value) 54 #define PARAM_INFO_SET_LLT_PG_BNDY_NO_CLR(extra_info, value) \ 55 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value) 56 #define PARAM_INFO_GET_EFUSE_RSVDPAGE_LOC(extra_info) \ 57 GET_C2H_FIELD(extra_info + 0X00, 16, 8) 58 #define PARAM_INFO_SET_EFUSE_RSVDPAGE_LOC(extra_info, value) \ 59 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value) 60 #define PARAM_INFO_SET_EFUSE_RSVDPAGE_LOC_NO_CLR(extra_info, value) \ 61 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value) 62 #define PARAM_INFO_GET_EFUSE_PATCH_EN(extra_info) \ 63 GET_C2H_FIELD(extra_info + 0X00, 16, 8) 64 #define PARAM_INFO_SET_EFUSE_PATCH_EN(extra_info, value) \ 65 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value) 66 #define PARAM_INFO_SET_EFUSE_PATCH_EN_NO_CLR(extra_info, value) \ 67 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value) 68 #define PARAM_INFO_GET_RF_ADDR(extra_info) \ 69 GET_C2H_FIELD(extra_info + 0X00, 16, 8) 70 #define PARAM_INFO_SET_RF_ADDR(extra_info, value) \ 71 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value) 72 #define PARAM_INFO_SET_RF_ADDR_NO_CLR(extra_info, value) \ 73 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value) 74 #define PARAM_INFO_GET_IO_ADDR(extra_info) \ 75 GET_C2H_FIELD(extra_info + 0X00, 16, 16) 76 #define PARAM_INFO_SET_IO_ADDR(extra_info, value) \ 77 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 16, value) 78 #define PARAM_INFO_SET_IO_ADDR_NO_CLR(extra_info, value) \ 79 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 16, value) 80 #define PARAM_INFO_GET_DELAY_VAL(extra_info) \ 81 GET_C2H_FIELD(extra_info + 0X00, 16, 16) 82 #define PARAM_INFO_SET_DELAY_VAL(extra_info, value) \ 83 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 16, value) 84 #define PARAM_INFO_SET_DELAY_VAL_NO_CLR(extra_info, value) \ 85 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 16, value) 86 #define PARAM_INFO_GET_RF_PATH(extra_info) \ 87 GET_C2H_FIELD(extra_info + 0X00, 24, 8) 88 #define PARAM_INFO_SET_RF_PATH(extra_info, value) \ 89 SET_C2H_FIELD_CLR(extra_info + 0X00, 24, 8, value) 90 #define PARAM_INFO_SET_RF_PATH_NO_CLR(extra_info, value) \ 91 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 24, 8, value) 92 #define PARAM_INFO_GET_DATA(extra_info) GET_C2H_FIELD(extra_info + 0X04, 0, 32) 93 #define PARAM_INFO_SET_DATA(extra_info, value) \ 94 SET_C2H_FIELD_CLR(extra_info + 0X04, 0, 32, value) 95 #define PARAM_INFO_SET_DATA_NO_CLR(extra_info, value) \ 96 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 0, 32, value) 97 #define PARAM_INFO_GET_MASK(extra_info) GET_C2H_FIELD(extra_info + 0X08, 0, 32) 98 #define PARAM_INFO_SET_MASK(extra_info, value) \ 99 SET_C2H_FIELD_CLR(extra_info + 0X08, 0, 32, value) 100 #define PARAM_INFO_SET_MASK_NO_CLR(extra_info, value) \ 101 SET_C2H_FIELD_NO_CLR(extra_info + 0X08, 0, 32, value) 102 #define CH_INFO_GET_CH(extra_info) GET_C2H_FIELD(extra_info + 0X00, 0, 8) 103 #define CH_INFO_SET_CH(extra_info, value) \ 104 SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 8, value) 105 #define CH_INFO_SET_CH_NO_CLR(extra_info, value) \ 106 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 8, value) 107 #define CH_INFO_GET_PRI_CH_IDX(extra_info) \ 108 GET_C2H_FIELD(extra_info + 0X00, 8, 4) 109 #define CH_INFO_SET_PRI_CH_IDX(extra_info, value) \ 110 SET_C2H_FIELD_CLR(extra_info + 0X00, 8, 4, value) 111 #define CH_INFO_SET_PRI_CH_IDX_NO_CLR(extra_info, value) \ 112 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 8, 4, value) 113 #define CH_INFO_GET_BW(extra_info) GET_C2H_FIELD(extra_info + 0X00, 12, 4) 114 #define CH_INFO_SET_BW(extra_info, value) \ 115 SET_C2H_FIELD_CLR(extra_info + 0X00, 12, 4, value) 116 #define CH_INFO_SET_BW_NO_CLR(extra_info, value) \ 117 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 12, 4, value) 118 #define CH_INFO_GET_TIMEOUT(extra_info) GET_C2H_FIELD(extra_info + 0X00, 16, 8) 119 #define CH_INFO_SET_TIMEOUT(extra_info, value) \ 120 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value) 121 #define CH_INFO_SET_TIMEOUT_NO_CLR(extra_info, value) \ 122 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value) 123 #define CH_INFO_GET_ACTION_ID(extra_info) \ 124 GET_C2H_FIELD(extra_info + 0X00, 24, 7) 125 #define CH_INFO_SET_ACTION_ID(extra_info, value) \ 126 SET_C2H_FIELD_CLR(extra_info + 0X00, 24, 7, value) 127 #define CH_INFO_SET_ACTION_ID_NO_CLR(extra_info, value) \ 128 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 24, 7, value) 129 #define CH_INFO_GET_EXTRA_INFO(extra_info) \ 130 GET_C2H_FIELD(extra_info + 0X00, 31, 1) 131 #define CH_INFO_SET_EXTRA_INFO(extra_info, value) \ 132 SET_C2H_FIELD_CLR(extra_info + 0X00, 31, 1, value) 133 #define CH_INFO_SET_EXTRA_INFO_NO_CLR(extra_info, value) \ 134 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 31, 1, value) 135 #define CH_EXTRA_INFO_GET_ID(extra_info) GET_C2H_FIELD(extra_info + 0X00, 0, 7) 136 #define CH_EXTRA_INFO_SET_ID(extra_info, value) \ 137 SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 7, value) 138 #define CH_EXTRA_INFO_SET_ID_NO_CLR(extra_info, value) \ 139 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 7, value) 140 #define CH_EXTRA_INFO_GET_INFO(extra_info) \ 141 GET_C2H_FIELD(extra_info + 0X00, 7, 1) 142 #define CH_EXTRA_INFO_SET_INFO(extra_info, value) \ 143 SET_C2H_FIELD_CLR(extra_info + 0X00, 7, 1, value) 144 #define CH_EXTRA_INFO_SET_INFO_NO_CLR(extra_info, value) \ 145 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 7, 1, value) 146 #define CH_EXTRA_INFO_GET_SIZE(extra_info) \ 147 GET_C2H_FIELD(extra_info + 0X00, 8, 8) 148 #define CH_EXTRA_INFO_SET_SIZE(extra_info, value) \ 149 SET_C2H_FIELD_CLR(extra_info + 0X00, 8, 8, value) 150 #define CH_EXTRA_INFO_SET_SIZE_NO_CLR(extra_info, value) \ 151 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 8, 8, value) 152 #define CH_EXTRA_INFO_GET_DATA(extra_info) \ 153 GET_C2H_FIELD(extra_info + 0X00, 16, 1) 154 #define CH_EXTRA_INFO_SET_DATA(extra_info, value) \ 155 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 1, value) 156 #define CH_EXTRA_INFO_SET_DATA_NO_CLR(extra_info, value) \ 157 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 1, value) 158 #define HIOE_INSTRUCTION_INFO_GET_BYTEDATA_L(extra_info) \ 159 GET_C2H_FIELD(extra_info + 0X00, 0, 16) 160 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_L(extra_info, value) \ 161 SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 16, value) 162 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_L_NO_CLR(extra_info, value) \ 163 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 16, value) 164 #define HIOE_INSTRUCTION_INFO_GET_BITDATA(extra_info) \ 165 GET_C2H_FIELD(extra_info + 0X00, 0, 16) 166 #define HIOE_INSTRUCTION_INFO_SET_BITDATA(extra_info, value) \ 167 SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 16, value) 168 #define HIOE_INSTRUCTION_INFO_SET_BITDATA_NO_CLR(extra_info, value) \ 169 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 16, value) 170 #define HIOE_INSTRUCTION_INFO_GET_BYTEDATA_H(extra_info) \ 171 GET_C2H_FIELD(extra_info + 0X00, 16, 16) 172 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_H(extra_info, value) \ 173 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 16, value) 174 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_H_NO_CLR(extra_info, value) \ 175 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 16, value) 176 #define HIOE_INSTRUCTION_INFO_GET_BITMASK(extra_info) \ 177 GET_C2H_FIELD(extra_info + 0X00, 16, 16) 178 #define HIOE_INSTRUCTION_INFO_SET_BITMASK(extra_info, value) \ 179 SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 16, value) 180 #define HIOE_INSTRUCTION_INFO_SET_BITMASK_NO_CLR(extra_info, value) \ 181 SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 16, value) 182 #define HIOE_INSTRUCTION_INFO_GET_REG_ADDR(extra_info) \ 183 GET_C2H_FIELD(extra_info + 0X04, 0, 22) 184 #define HIOE_INSTRUCTION_INFO_SET_REG_ADDR(extra_info, value) \ 185 SET_C2H_FIELD_CLR(extra_info + 0X04, 0, 22, value) 186 #define HIOE_INSTRUCTION_INFO_SET_REG_ADDR_NO_CLR(extra_info, value) \ 187 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 0, 22, value) 188 #define HIOE_INSTRUCTION_INFO_GET_DELAY_VALUE(extra_info) \ 189 GET_C2H_FIELD(extra_info + 0X04, 0, 22) 190 #define HIOE_INSTRUCTION_INFO_SET_DELAY_VALUE(extra_info, value) \ 191 SET_C2H_FIELD_CLR(extra_info + 0X04, 0, 22, value) 192 #define HIOE_INSTRUCTION_INFO_SET_DELAY_VALUE_NO_CLR(extra_info, value) \ 193 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 0, 22, value) 194 #define HIOE_INSTRUCTION_INFO_GET_MODE_SELECT(extra_info) \ 195 GET_C2H_FIELD(extra_info + 0X04, 22, 1) 196 #define HIOE_INSTRUCTION_INFO_SET_MODE_SELECT(extra_info, value) \ 197 SET_C2H_FIELD_CLR(extra_info + 0X04, 22, 1, value) 198 #define HIOE_INSTRUCTION_INFO_SET_MODE_SELECT_NO_CLR(extra_info, value) \ 199 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 22, 1, value) 200 #define HIOE_INSTRUCTION_INFO_GET_IO_DELAY(extra_info) \ 201 GET_C2H_FIELD(extra_info + 0X04, 23, 1) 202 #define HIOE_INSTRUCTION_INFO_SET_IO_DELAY(extra_info, value) \ 203 SET_C2H_FIELD_CLR(extra_info + 0X04, 23, 1, value) 204 #define HIOE_INSTRUCTION_INFO_SET_IO_DELAY_NO_CLR(extra_info, value) \ 205 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 23, 1, value) 206 #define HIOE_INSTRUCTION_INFO_GET_BYTEMASK(extra_info) \ 207 GET_C2H_FIELD(extra_info + 0X04, 24, 4) 208 #define HIOE_INSTRUCTION_INFO_SET_BYTEMASK(extra_info, value) \ 209 SET_C2H_FIELD_CLR(extra_info + 0X04, 24, 4, value) 210 #define HIOE_INSTRUCTION_INFO_SET_BYTEMASK_NO_CLR(extra_info, value) \ 211 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 24, 4, value) 212 #define HIOE_INSTRUCTION_INFO_GET_RD_EN(extra_info) \ 213 GET_C2H_FIELD(extra_info + 0X04, 28, 1) 214 #define HIOE_INSTRUCTION_INFO_SET_RD_EN(extra_info, value) \ 215 SET_C2H_FIELD_CLR(extra_info + 0X04, 28, 1, value) 216 #define HIOE_INSTRUCTION_INFO_SET_RD_EN_NO_CLR(extra_info, value) \ 217 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 28, 1, value) 218 #define HIOE_INSTRUCTION_INFO_GET_WR_EN(extra_info) \ 219 GET_C2H_FIELD(extra_info + 0X04, 29, 1) 220 #define HIOE_INSTRUCTION_INFO_SET_WR_EN(extra_info, value) \ 221 SET_C2H_FIELD_CLR(extra_info + 0X04, 29, 1, value) 222 #define HIOE_INSTRUCTION_INFO_SET_WR_EN_NO_CLR(extra_info, value) \ 223 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 29, 1, value) 224 #define HIOE_INSTRUCTION_INFO_GET_RAW_R(extra_info) \ 225 GET_C2H_FIELD(extra_info + 0X04, 30, 1) 226 #define HIOE_INSTRUCTION_INFO_SET_RAW_R(extra_info, value) \ 227 SET_C2H_FIELD_CLR(extra_info + 0X04, 30, 1, value) 228 #define HIOE_INSTRUCTION_INFO_SET_RAW_R_NO_CLR(extra_info, value) \ 229 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 30, 1, value) 230 #define HIOE_INSTRUCTION_INFO_GET_RAW(extra_info) \ 231 GET_C2H_FIELD(extra_info + 0X04, 31, 1) 232 #define HIOE_INSTRUCTION_INFO_SET_RAW(extra_info, value) \ 233 SET_C2H_FIELD_CLR(extra_info + 0X04, 31, 1, value) 234 #define HIOE_INSTRUCTION_INFO_SET_RAW_NO_CLR(extra_info, value) \ 235 SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 31, 1, value) 236 #endif 237