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_NIC_H_ 17 #define _HAL_H2CEXTRAINFO_H2C_C2H_NIC_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) LE_BITS_TO_4BYTE(extra_info + 0X00, 0, 8) 35 #define PARAM_INFO_SET_LEN(extra_info, value) \ 36 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 0, 8, value) 37 #define PARAM_INFO_GET_IO_CMD(extra_info) \ 38 LE_BITS_TO_4BYTE(extra_info + 0X00, 8, 7) 39 #define PARAM_INFO_SET_IO_CMD(extra_info, value) \ 40 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 8, 7, value) 41 #define PARAM_INFO_GET_MSK_EN(extra_info) \ 42 LE_BITS_TO_4BYTE(extra_info + 0X00, 15, 1) 43 #define PARAM_INFO_SET_MSK_EN(extra_info, value) \ 44 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 15, 1, value) 45 #define PARAM_INFO_GET_LLT_PG_BNDY(extra_info) \ 46 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 8) 47 #define PARAM_INFO_SET_LLT_PG_BNDY(extra_info, value) \ 48 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 8, value) 49 #define PARAM_INFO_GET_EFUSE_RSVDPAGE_LOC(extra_info) \ 50 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 8) 51 #define PARAM_INFO_SET_EFUSE_RSVDPAGE_LOC(extra_info, value) \ 52 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 8, value) 53 #define PARAM_INFO_GET_EFUSE_PATCH_EN(extra_info) \ 54 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 8) 55 #define PARAM_INFO_SET_EFUSE_PATCH_EN(extra_info, value) \ 56 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 8, value) 57 #define PARAM_INFO_GET_RF_ADDR(extra_info) \ 58 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 8) 59 #define PARAM_INFO_SET_RF_ADDR(extra_info, value) \ 60 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 8, value) 61 #define PARAM_INFO_GET_IO_ADDR(extra_info) \ 62 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 16) 63 #define PARAM_INFO_SET_IO_ADDR(extra_info, value) \ 64 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 16, value) 65 #define PARAM_INFO_GET_DELAY_VAL(extra_info) \ 66 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 16) 67 #define PARAM_INFO_SET_DELAY_VAL(extra_info, value) \ 68 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 16, value) 69 #define PARAM_INFO_GET_RF_PATH(extra_info) \ 70 LE_BITS_TO_4BYTE(extra_info + 0X00, 24, 8) 71 #define PARAM_INFO_SET_RF_PATH(extra_info, value) \ 72 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 24, 8, value) 73 #define PARAM_INFO_GET_DATA(extra_info) \ 74 LE_BITS_TO_4BYTE(extra_info + 0X04, 0, 32) 75 #define PARAM_INFO_SET_DATA(extra_info, value) \ 76 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 0, 32, value) 77 #define PARAM_INFO_GET_MASK(extra_info) \ 78 LE_BITS_TO_4BYTE(extra_info + 0X08, 0, 32) 79 #define PARAM_INFO_SET_MASK(extra_info, value) \ 80 SET_BITS_TO_LE_4BYTE(extra_info + 0X08, 0, 32, value) 81 #define CH_INFO_GET_CH(extra_info) LE_BITS_TO_4BYTE(extra_info + 0X00, 0, 8) 82 #define CH_INFO_SET_CH(extra_info, value) \ 83 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 0, 8, value) 84 #define CH_INFO_GET_PRI_CH_IDX(extra_info) \ 85 LE_BITS_TO_4BYTE(extra_info + 0X00, 8, 4) 86 #define CH_INFO_SET_PRI_CH_IDX(extra_info, value) \ 87 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 8, 4, value) 88 #define CH_INFO_GET_BW(extra_info) LE_BITS_TO_4BYTE(extra_info + 0X00, 12, 4) 89 #define CH_INFO_SET_BW(extra_info, value) \ 90 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 12, 4, value) 91 #define CH_INFO_GET_TIMEOUT(extra_info) \ 92 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 8) 93 #define CH_INFO_SET_TIMEOUT(extra_info, value) \ 94 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 8, value) 95 #define CH_INFO_GET_ACTION_ID(extra_info) \ 96 LE_BITS_TO_4BYTE(extra_info + 0X00, 24, 7) 97 #define CH_INFO_SET_ACTION_ID(extra_info, value) \ 98 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 24, 7, value) 99 #define CH_INFO_GET_EXTRA_INFO(extra_info) \ 100 LE_BITS_TO_4BYTE(extra_info + 0X00, 31, 1) 101 #define CH_INFO_SET_EXTRA_INFO(extra_info, value) \ 102 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 31, 1, value) 103 #define CH_EXTRA_INFO_GET_ID(extra_info) \ 104 LE_BITS_TO_4BYTE(extra_info + 0X00, 0, 7) 105 #define CH_EXTRA_INFO_SET_ID(extra_info, value) \ 106 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 0, 7, value) 107 #define CH_EXTRA_INFO_GET_INFO(extra_info) \ 108 LE_BITS_TO_4BYTE(extra_info + 0X00, 7, 1) 109 #define CH_EXTRA_INFO_SET_INFO(extra_info, value) \ 110 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 7, 1, value) 111 #define CH_EXTRA_INFO_GET_SIZE(extra_info) \ 112 LE_BITS_TO_4BYTE(extra_info + 0X00, 8, 8) 113 #define CH_EXTRA_INFO_SET_SIZE(extra_info, value) \ 114 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 8, 8, value) 115 #define CH_EXTRA_INFO_GET_DATA(extra_info) \ 116 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 1) 117 #define CH_EXTRA_INFO_SET_DATA(extra_info, value) \ 118 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 1, value) 119 #define HIOE_INSTRUCTION_INFO_GET_BYTEDATA_L(extra_info) \ 120 LE_BITS_TO_4BYTE(extra_info + 0X00, 0, 16) 121 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_L(extra_info, value) \ 122 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 0, 16, value) 123 #define HIOE_INSTRUCTION_INFO_GET_BITDATA(extra_info) \ 124 LE_BITS_TO_4BYTE(extra_info + 0X00, 0, 16) 125 #define HIOE_INSTRUCTION_INFO_SET_BITDATA(extra_info, value) \ 126 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 0, 16, value) 127 #define HIOE_INSTRUCTION_INFO_GET_BYTEDATA_H(extra_info) \ 128 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 16) 129 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_H(extra_info, value) \ 130 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 16, value) 131 #define HIOE_INSTRUCTION_INFO_GET_BITMASK(extra_info) \ 132 LE_BITS_TO_4BYTE(extra_info + 0X00, 16, 16) 133 #define HIOE_INSTRUCTION_INFO_SET_BITMASK(extra_info, value) \ 134 SET_BITS_TO_LE_4BYTE(extra_info + 0X00, 16, 16, value) 135 #define HIOE_INSTRUCTION_INFO_GET_REG_ADDR(extra_info) \ 136 LE_BITS_TO_4BYTE(extra_info + 0X04, 0, 22) 137 #define HIOE_INSTRUCTION_INFO_SET_REG_ADDR(extra_info, value) \ 138 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 0, 22, value) 139 #define HIOE_INSTRUCTION_INFO_GET_DELAY_VALUE(extra_info) \ 140 LE_BITS_TO_4BYTE(extra_info + 0X04, 0, 22) 141 #define HIOE_INSTRUCTION_INFO_SET_DELAY_VALUE(extra_info, value) \ 142 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 0, 22, value) 143 #define HIOE_INSTRUCTION_INFO_GET_MODE_SELECT(extra_info) \ 144 LE_BITS_TO_4BYTE(extra_info + 0X04, 22, 1) 145 #define HIOE_INSTRUCTION_INFO_SET_MODE_SELECT(extra_info, value) \ 146 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 22, 1, value) 147 #define HIOE_INSTRUCTION_INFO_GET_IO_DELAY(extra_info) \ 148 LE_BITS_TO_4BYTE(extra_info + 0X04, 23, 1) 149 #define HIOE_INSTRUCTION_INFO_SET_IO_DELAY(extra_info, value) \ 150 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 23, 1, value) 151 #define HIOE_INSTRUCTION_INFO_GET_BYTEMASK(extra_info) \ 152 LE_BITS_TO_4BYTE(extra_info + 0X04, 24, 4) 153 #define HIOE_INSTRUCTION_INFO_SET_BYTEMASK(extra_info, value) \ 154 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 24, 4, value) 155 #define HIOE_INSTRUCTION_INFO_GET_RD_EN(extra_info) \ 156 LE_BITS_TO_4BYTE(extra_info + 0X04, 28, 1) 157 #define HIOE_INSTRUCTION_INFO_SET_RD_EN(extra_info, value) \ 158 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 28, 1, value) 159 #define HIOE_INSTRUCTION_INFO_GET_WR_EN(extra_info) \ 160 LE_BITS_TO_4BYTE(extra_info + 0X04, 29, 1) 161 #define HIOE_INSTRUCTION_INFO_SET_WR_EN(extra_info, value) \ 162 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 29, 1, value) 163 #define HIOE_INSTRUCTION_INFO_GET_RAW_R(extra_info) \ 164 LE_BITS_TO_4BYTE(extra_info + 0X04, 30, 1) 165 #define HIOE_INSTRUCTION_INFO_SET_RAW_R(extra_info, value) \ 166 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 30, 1, value) 167 #define HIOE_INSTRUCTION_INFO_GET_RAW(extra_info) \ 168 LE_BITS_TO_4BYTE(extra_info + 0X04, 31, 1) 169 #define HIOE_INSTRUCTION_INFO_SET_RAW(extra_info, value) \ 170 SET_BITS_TO_LE_4BYTE(extra_info + 0X04, 31, 1, value) 171 #endif 172