halmac_h2c_extra_info_nic.h 10 KB

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