cdn-dp-reg.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. /*
  2. * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
  3. * Author: Chris Zhong <zyw@rock-chips.com>
  4. *
  5. * This software is licensed under the terms of the GNU General Public
  6. * License version 2, as published by the Free Software Foundation, and
  7. * may be copied, distributed, and modified under those terms.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. */
  14. #ifndef _CDN_DP_REG_H
  15. #define _CDN_DP_REG_H
  16. #include <linux/bitops.h>
  17. #define ADDR_IMEM 0x10000
  18. #define ADDR_DMEM 0x20000
  19. /* APB CFG addr */
  20. #define APB_CTRL 0
  21. #define XT_INT_CTRL 0x04
  22. #define MAILBOX_FULL_ADDR 0x08
  23. #define MAILBOX_EMPTY_ADDR 0x0c
  24. #define MAILBOX0_WR_DATA 0x10
  25. #define MAILBOX0_RD_DATA 0x14
  26. #define KEEP_ALIVE 0x18
  27. #define VER_L 0x1c
  28. #define VER_H 0x20
  29. #define VER_LIB_L_ADDR 0x24
  30. #define VER_LIB_H_ADDR 0x28
  31. #define SW_DEBUG_L 0x2c
  32. #define SW_DEBUG_H 0x30
  33. #define MAILBOX_INT_MASK 0x34
  34. #define MAILBOX_INT_STATUS 0x38
  35. #define SW_CLK_L 0x3c
  36. #define SW_CLK_H 0x40
  37. #define SW_EVENTS0 0x44
  38. #define SW_EVENTS1 0x48
  39. #define SW_EVENTS2 0x4c
  40. #define SW_EVENTS3 0x50
  41. #define XT_OCD_CTRL 0x60
  42. #define APB_INT_MASK 0x6c
  43. #define APB_STATUS_MASK 0x70
  44. /* audio decoder addr */
  45. #define AUDIO_SRC_CNTL 0x30000
  46. #define AUDIO_SRC_CNFG 0x30004
  47. #define COM_CH_STTS_BITS 0x30008
  48. #define STTS_BIT_CH(x) (0x3000c + ((x) << 2))
  49. #define SPDIF_CTRL_ADDR 0x3004c
  50. #define SPDIF_CH1_CS_3100_ADDR 0x30050
  51. #define SPDIF_CH1_CS_6332_ADDR 0x30054
  52. #define SPDIF_CH1_CS_9564_ADDR 0x30058
  53. #define SPDIF_CH1_CS_12796_ADDR 0x3005c
  54. #define SPDIF_CH1_CS_159128_ADDR 0x30060
  55. #define SPDIF_CH1_CS_191160_ADDR 0x30064
  56. #define SPDIF_CH2_CS_3100_ADDR 0x30068
  57. #define SPDIF_CH2_CS_6332_ADDR 0x3006c
  58. #define SPDIF_CH2_CS_9564_ADDR 0x30070
  59. #define SPDIF_CH2_CS_12796_ADDR 0x30074
  60. #define SPDIF_CH2_CS_159128_ADDR 0x30078
  61. #define SPDIF_CH2_CS_191160_ADDR 0x3007c
  62. #define SMPL2PKT_CNTL 0x30080
  63. #define SMPL2PKT_CNFG 0x30084
  64. #define FIFO_CNTL 0x30088
  65. #define FIFO_STTS 0x3008c
  66. /* source pif addr */
  67. #define SOURCE_PIF_WR_ADDR 0x30800
  68. #define SOURCE_PIF_WR_REQ 0x30804
  69. #define SOURCE_PIF_RD_ADDR 0x30808
  70. #define SOURCE_PIF_RD_REQ 0x3080c
  71. #define SOURCE_PIF_DATA_WR 0x30810
  72. #define SOURCE_PIF_DATA_RD 0x30814
  73. #define SOURCE_PIF_FIFO1_FLUSH 0x30818
  74. #define SOURCE_PIF_FIFO2_FLUSH 0x3081c
  75. #define SOURCE_PIF_STATUS 0x30820
  76. #define SOURCE_PIF_INTERRUPT_SOURCE 0x30824
  77. #define SOURCE_PIF_INTERRUPT_MASK 0x30828
  78. #define SOURCE_PIF_PKT_ALLOC_REG 0x3082c
  79. #define SOURCE_PIF_PKT_ALLOC_WR_EN 0x30830
  80. #define SOURCE_PIF_SW_RESET 0x30834
  81. /* bellow registers need access by mailbox */
  82. /* source car addr */
  83. #define SOURCE_HDTX_CAR 0x0900
  84. #define SOURCE_DPTX_CAR 0x0904
  85. #define SOURCE_PHY_CAR 0x0908
  86. #define SOURCE_CEC_CAR 0x090c
  87. #define SOURCE_CBUS_CAR 0x0910
  88. #define SOURCE_PKT_CAR 0x0918
  89. #define SOURCE_AIF_CAR 0x091c
  90. #define SOURCE_CIPHER_CAR 0x0920
  91. #define SOURCE_CRYPTO_CAR 0x0924
  92. /* clock meters addr */
  93. #define CM_CTRL 0x0a00
  94. #define CM_I2S_CTRL 0x0a04
  95. #define CM_SPDIF_CTRL 0x0a08
  96. #define CM_VID_CTRL 0x0a0c
  97. #define CM_LANE_CTRL 0x0a10
  98. #define I2S_NM_STABLE 0x0a14
  99. #define I2S_NCTS_STABLE 0x0a18
  100. #define SPDIF_NM_STABLE 0x0a1c
  101. #define SPDIF_NCTS_STABLE 0x0a20
  102. #define NMVID_MEAS_STABLE 0x0a24
  103. #define I2S_MEAS 0x0a40
  104. #define SPDIF_MEAS 0x0a80
  105. #define NMVID_MEAS 0x0ac0
  106. /* source vif addr */
  107. #define BND_HSYNC2VSYNC 0x0b00
  108. #define HSYNC2VSYNC_F1_L1 0x0b04
  109. #define HSYNC2VSYNC_F2_L1 0x0b08
  110. #define HSYNC2VSYNC_STATUS 0x0b0c
  111. #define HSYNC2VSYNC_POL_CTRL 0x0b10
  112. /* dptx phy addr */
  113. #define DP_TX_PHY_CONFIG_REG 0x2000
  114. #define DP_TX_PHY_SW_RESET 0x2004
  115. #define DP_TX_PHY_SCRAMBLER_SEED 0x2008
  116. #define DP_TX_PHY_TRAINING_01_04 0x200c
  117. #define DP_TX_PHY_TRAINING_05_08 0x2010
  118. #define DP_TX_PHY_TRAINING_09_10 0x2014
  119. #define TEST_COR 0x23fc
  120. /* dptx hpd addr */
  121. #define HPD_IRQ_DET_MIN_TIMER 0x2100
  122. #define HPD_IRQ_DET_MAX_TIMER 0x2104
  123. #define HPD_UNPLGED_DET_MIN_TIMER 0x2108
  124. #define HPD_STABLE_TIMER 0x210c
  125. #define HPD_FILTER_TIMER 0x2110
  126. #define HPD_EVENT_MASK 0x211c
  127. #define HPD_EVENT_DET 0x2120
  128. /* dpyx framer addr */
  129. #define DP_FRAMER_GLOBAL_CONFIG 0x2200
  130. #define DP_SW_RESET 0x2204
  131. #define DP_FRAMER_TU 0x2208
  132. #define DP_FRAMER_PXL_REPR 0x220c
  133. #define DP_FRAMER_SP 0x2210
  134. #define AUDIO_PACK_CONTROL 0x2214
  135. #define DP_VC_TABLE(x) (0x2218 + ((x) << 2))
  136. #define DP_VB_ID 0x2258
  137. #define DP_MTPH_LVP_CONTROL 0x225c
  138. #define DP_MTPH_SYMBOL_VALUES 0x2260
  139. #define DP_MTPH_ECF_CONTROL 0x2264
  140. #define DP_MTPH_ACT_CONTROL 0x2268
  141. #define DP_MTPH_STATUS 0x226c
  142. #define DP_INTERRUPT_SOURCE 0x2270
  143. #define DP_INTERRUPT_MASK 0x2274
  144. #define DP_FRONT_BACK_PORCH 0x2278
  145. #define DP_BYTE_COUNT 0x227c
  146. /* dptx stream addr */
  147. #define MSA_HORIZONTAL_0 0x2280
  148. #define MSA_HORIZONTAL_1 0x2284
  149. #define MSA_VERTICAL_0 0x2288
  150. #define MSA_VERTICAL_1 0x228c
  151. #define MSA_MISC 0x2290
  152. #define STREAM_CONFIG 0x2294
  153. #define AUDIO_PACK_STATUS 0x2298
  154. #define VIF_STATUS 0x229c
  155. #define PCK_STUFF_STATUS_0 0x22a0
  156. #define PCK_STUFF_STATUS_1 0x22a4
  157. #define INFO_PACK_STATUS 0x22a8
  158. #define RATE_GOVERNOR_STATUS 0x22ac
  159. #define DP_HORIZONTAL 0x22b0
  160. #define DP_VERTICAL_0 0x22b4
  161. #define DP_VERTICAL_1 0x22b8
  162. #define DP_BLOCK_SDP 0x22bc
  163. /* dptx glbl addr */
  164. #define DPTX_LANE_EN 0x2300
  165. #define DPTX_ENHNCD 0x2304
  166. #define DPTX_INT_MASK 0x2308
  167. #define DPTX_INT_STATUS 0x230c
  168. /* dp aux addr */
  169. #define DP_AUX_HOST_CONTROL 0x2800
  170. #define DP_AUX_INTERRUPT_SOURCE 0x2804
  171. #define DP_AUX_INTERRUPT_MASK 0x2808
  172. #define DP_AUX_SWAP_INVERSION_CONTROL 0x280c
  173. #define DP_AUX_SEND_NACK_TRANSACTION 0x2810
  174. #define DP_AUX_CLEAR_RX 0x2814
  175. #define DP_AUX_CLEAR_TX 0x2818
  176. #define DP_AUX_TIMER_STOP 0x281c
  177. #define DP_AUX_TIMER_CLEAR 0x2820
  178. #define DP_AUX_RESET_SW 0x2824
  179. #define DP_AUX_DIVIDE_2M 0x2828
  180. #define DP_AUX_TX_PREACHARGE_LENGTH 0x282c
  181. #define DP_AUX_FREQUENCY_1M_MAX 0x2830
  182. #define DP_AUX_FREQUENCY_1M_MIN 0x2834
  183. #define DP_AUX_RX_PRE_MIN 0x2838
  184. #define DP_AUX_RX_PRE_MAX 0x283c
  185. #define DP_AUX_TIMER_PRESET 0x2840
  186. #define DP_AUX_NACK_FORMAT 0x2844
  187. #define DP_AUX_TX_DATA 0x2848
  188. #define DP_AUX_RX_DATA 0x284c
  189. #define DP_AUX_TX_STATUS 0x2850
  190. #define DP_AUX_RX_STATUS 0x2854
  191. #define DP_AUX_RX_CYCLE_COUNTER 0x2858
  192. #define DP_AUX_MAIN_STATES 0x285c
  193. #define DP_AUX_MAIN_TIMER 0x2860
  194. #define DP_AUX_AFE_OUT 0x2864
  195. /* crypto addr */
  196. #define CRYPTO_HDCP_REVISION 0x5800
  197. #define HDCP_CRYPTO_CONFIG 0x5804
  198. #define CRYPTO_INTERRUPT_SOURCE 0x5808
  199. #define CRYPTO_INTERRUPT_MASK 0x580c
  200. #define CRYPTO22_CONFIG 0x5818
  201. #define CRYPTO22_STATUS 0x581c
  202. #define SHA_256_DATA_IN 0x583c
  203. #define SHA_256_DATA_OUT_(x) (0x5850 + ((x) << 2))
  204. #define AES_32_KEY_(x) (0x5870 + ((x) << 2))
  205. #define AES_32_DATA_IN 0x5880
  206. #define AES_32_DATA_OUT_(x) (0x5884 + ((x) << 2))
  207. #define CRYPTO14_CONFIG 0x58a0
  208. #define CRYPTO14_STATUS 0x58a4
  209. #define CRYPTO14_PRNM_OUT 0x58a8
  210. #define CRYPTO14_KM_0 0x58ac
  211. #define CRYPTO14_KM_1 0x58b0
  212. #define CRYPTO14_AN_0 0x58b4
  213. #define CRYPTO14_AN_1 0x58b8
  214. #define CRYPTO14_YOUR_KSV_0 0x58bc
  215. #define CRYPTO14_YOUR_KSV_1 0x58c0
  216. #define CRYPTO14_MI_0 0x58c4
  217. #define CRYPTO14_MI_1 0x58c8
  218. #define CRYPTO14_TI_0 0x58cc
  219. #define CRYPTO14_KI_0 0x58d0
  220. #define CRYPTO14_KI_1 0x58d4
  221. #define CRYPTO14_BLOCKS_NUM 0x58d8
  222. #define CRYPTO14_KEY_MEM_DATA_0 0x58dc
  223. #define CRYPTO14_KEY_MEM_DATA_1 0x58e0
  224. #define CRYPTO14_SHA1_MSG_DATA 0x58e4
  225. #define CRYPTO14_SHA1_V_VALUE_(x) (0x58e8 + ((x) << 2))
  226. #define TRNG_CTRL 0x58fc
  227. #define TRNG_DATA_RDY 0x5900
  228. #define TRNG_DATA 0x5904
  229. /* cipher addr */
  230. #define HDCP_REVISION 0x60000
  231. #define INTERRUPT_SOURCE 0x60004
  232. #define INTERRUPT_MASK 0x60008
  233. #define HDCP_CIPHER_CONFIG 0x6000c
  234. #define AES_128_KEY_0 0x60010
  235. #define AES_128_KEY_1 0x60014
  236. #define AES_128_KEY_2 0x60018
  237. #define AES_128_KEY_3 0x6001c
  238. #define AES_128_RANDOM_0 0x60020
  239. #define AES_128_RANDOM_1 0x60024
  240. #define CIPHER14_KM_0 0x60028
  241. #define CIPHER14_KM_1 0x6002c
  242. #define CIPHER14_STATUS 0x60030
  243. #define CIPHER14_RI_PJ_STATUS 0x60034
  244. #define CIPHER_MODE 0x60038
  245. #define CIPHER14_AN_0 0x6003c
  246. #define CIPHER14_AN_1 0x60040
  247. #define CIPHER22_AUTH 0x60044
  248. #define CIPHER14_R0_DP_STATUS 0x60048
  249. #define CIPHER14_BOOTSTRAP 0x6004c
  250. #define DPTX_FRMR_DATA_CLK_RSTN_EN BIT(11)
  251. #define DPTX_FRMR_DATA_CLK_EN BIT(10)
  252. #define DPTX_PHY_DATA_RSTN_EN BIT(9)
  253. #define DPTX_PHY_DATA_CLK_EN BIT(8)
  254. #define DPTX_PHY_CHAR_RSTN_EN BIT(7)
  255. #define DPTX_PHY_CHAR_CLK_EN BIT(6)
  256. #define SOURCE_AUX_SYS_CLK_RSTN_EN BIT(5)
  257. #define SOURCE_AUX_SYS_CLK_EN BIT(4)
  258. #define DPTX_SYS_CLK_RSTN_EN BIT(3)
  259. #define DPTX_SYS_CLK_EN BIT(2)
  260. #define CFG_DPTX_VIF_CLK_RSTN_EN BIT(1)
  261. #define CFG_DPTX_VIF_CLK_EN BIT(0)
  262. #define SOURCE_PHY_RSTN_EN BIT(1)
  263. #define SOURCE_PHY_CLK_EN BIT(0)
  264. #define SOURCE_PKT_SYS_RSTN_EN BIT(3)
  265. #define SOURCE_PKT_SYS_CLK_EN BIT(2)
  266. #define SOURCE_PKT_DATA_RSTN_EN BIT(1)
  267. #define SOURCE_PKT_DATA_CLK_EN BIT(0)
  268. #define SPDIF_CDR_CLK_RSTN_EN BIT(5)
  269. #define SPDIF_CDR_CLK_EN BIT(4)
  270. #define SOURCE_AIF_SYS_RSTN_EN BIT(3)
  271. #define SOURCE_AIF_SYS_CLK_EN BIT(2)
  272. #define SOURCE_AIF_CLK_RSTN_EN BIT(1)
  273. #define SOURCE_AIF_CLK_EN BIT(0)
  274. #define SOURCE_CIPHER_SYSTEM_CLK_RSTN_EN BIT(3)
  275. #define SOURCE_CIPHER_SYS_CLK_EN BIT(2)
  276. #define SOURCE_CIPHER_CHAR_CLK_RSTN_EN BIT(1)
  277. #define SOURCE_CIPHER_CHAR_CLK_EN BIT(0)
  278. #define SOURCE_CRYPTO_SYS_CLK_RSTN_EN BIT(1)
  279. #define SOURCE_CRYPTO_SYS_CLK_EN BIT(0)
  280. #define APB_IRAM_PATH BIT(2)
  281. #define APB_DRAM_PATH BIT(1)
  282. #define APB_XT_RESET BIT(0)
  283. #define MAILBOX_INT_MASK_BIT BIT(1)
  284. #define PIF_INT_MASK_BIT BIT(0)
  285. #define ALL_INT_MASK 3
  286. /* mailbox */
  287. #define MB_OPCODE_ID 0
  288. #define MB_MODULE_ID 1
  289. #define MB_SIZE_MSB_ID 2
  290. #define MB_SIZE_LSB_ID 3
  291. #define MB_DATA_ID 4
  292. #define MB_MODULE_ID_DP_TX 0x01
  293. #define MB_MODULE_ID_HDCP_TX 0x07
  294. #define MB_MODULE_ID_HDCP_RX 0x08
  295. #define MB_MODULE_ID_HDCP_GENERAL 0x09
  296. #define MB_MODULE_ID_GENERAL 0x0a
  297. /* general opcode */
  298. #define GENERAL_MAIN_CONTROL 0x01
  299. #define GENERAL_TEST_ECHO 0x02
  300. #define GENERAL_BUS_SETTINGS 0x03
  301. #define GENERAL_TEST_ACCESS 0x04
  302. #define DPTX_SET_POWER_MNG 0x00
  303. #define DPTX_SET_HOST_CAPABILITIES 0x01
  304. #define DPTX_GET_EDID 0x02
  305. #define DPTX_READ_DPCD 0x03
  306. #define DPTX_WRITE_DPCD 0x04
  307. #define DPTX_ENABLE_EVENT 0x05
  308. #define DPTX_WRITE_REGISTER 0x06
  309. #define DPTX_READ_REGISTER 0x07
  310. #define DPTX_WRITE_FIELD 0x08
  311. #define DPTX_TRAINING_CONTROL 0x09
  312. #define DPTX_READ_EVENT 0x0a
  313. #define DPTX_READ_LINK_STAT 0x0b
  314. #define DPTX_SET_VIDEO 0x0c
  315. #define DPTX_SET_AUDIO 0x0d
  316. #define DPTX_GET_LAST_AUX_STAUS 0x0e
  317. #define DPTX_SET_LINK_BREAK_POINT 0x0f
  318. #define DPTX_FORCE_LANES 0x10
  319. #define DPTX_HPD_STATE 0x11
  320. #define FW_STANDBY 0
  321. #define FW_ACTIVE 1
  322. #define DPTX_EVENT_ENABLE_HPD BIT(0)
  323. #define DPTX_EVENT_ENABLE_TRAINING BIT(1)
  324. #define LINK_TRAINING_NOT_ACTIVE 0
  325. #define LINK_TRAINING_RUN 1
  326. #define LINK_TRAINING_RESTART 2
  327. #define CONTROL_VIDEO_IDLE 0
  328. #define CONTROL_VIDEO_VALID 1
  329. #define TU_CNT_RST_EN BIT(15)
  330. #define VIF_BYPASS_INTERLACE BIT(13)
  331. #define INTERLACE_FMT_DET BIT(12)
  332. #define INTERLACE_DTCT_WIN 0x20
  333. #define DP_FRAMER_SP_INTERLACE_EN BIT(2)
  334. #define DP_FRAMER_SP_HSP BIT(1)
  335. #define DP_FRAMER_SP_VSP BIT(0)
  336. /* capability */
  337. #define AUX_HOST_INVERT 3
  338. #define FAST_LT_SUPPORT 1
  339. #define FAST_LT_NOT_SUPPORT 0
  340. #define LANE_MAPPING_NORMAL 0x1b
  341. #define LANE_MAPPING_FLIPPED 0xe4
  342. #define ENHANCED 1
  343. #define SCRAMBLER_EN BIT(4)
  344. #define FULL_LT_STARTED BIT(0)
  345. #define FASE_LT_STARTED BIT(1)
  346. #define CLK_RECOVERY_FINISHED BIT(2)
  347. #define EQ_PHASE_FINISHED BIT(3)
  348. #define FASE_LT_START_FINISHED BIT(4)
  349. #define CLK_RECOVERY_FAILED BIT(5)
  350. #define EQ_PHASE_FAILED BIT(6)
  351. #define FASE_LT_FAILED BIT(7)
  352. #define DPTX_HPD_EVENT BIT(0)
  353. #define DPTX_TRAINING_EVENT BIT(1)
  354. #define HDCP_TX_STATUS_EVENT BIT(4)
  355. #define HDCP2_TX_IS_KM_STORED_EVENT BIT(5)
  356. #define HDCP2_TX_STORE_KM_EVENT BIT(6)
  357. #define HDCP_TX_IS_RECEIVER_ID_VALID_EVENT BIT(7)
  358. #define TU_SIZE 30
  359. #define CDN_DP_MAX_LINK_RATE DP_LINK_BW_5_4
  360. /* audio */
  361. #define AUDIO_PACK_EN BIT(8)
  362. #define SAMPLING_FREQ(x) (((x) & 0xf) << 16)
  363. #define ORIGINAL_SAMP_FREQ(x) (((x) & 0xf) << 24)
  364. #define SYNC_WR_TO_CH_ZERO BIT(1)
  365. #define I2S_DEC_START BIT(1)
  366. #define AUDIO_SW_RST BIT(0)
  367. #define SMPL2PKT_EN BIT(1)
  368. #define MAX_NUM_CH(x) (((x) & 0x1f) - 1)
  369. #define NUM_OF_I2S_PORTS(x) ((((x) / 2 - 1) & 0x3) << 5)
  370. #define AUDIO_TYPE_LPCM (2 << 7)
  371. #define CFG_SUB_PCKT_NUM(x) ((((x) - 1) & 0x7) << 11)
  372. #define AUDIO_CH_NUM(x) ((((x) - 1) & 0x1f) << 2)
  373. #define TRANS_SMPL_WIDTH_16 0
  374. #define TRANS_SMPL_WIDTH_24 BIT(11)
  375. #define TRANS_SMPL_WIDTH_32 (2 << 11)
  376. #define I2S_DEC_PORT_EN(x) (((x) & 0xf) << 17)
  377. #define SPDIF_ENABLE BIT(21)
  378. #define SPDIF_AVG_SEL BIT(20)
  379. #define SPDIF_JITTER_BYPASS BIT(19)
  380. #define SPDIF_FIFO_MID_RANGE(x) (((x) & 0xff) << 11)
  381. #define SPDIF_JITTER_THRSH(x) (((x) & 0xff) << 3)
  382. #define SPDIF_JITTER_AVG_WIN(x) ((x) & 0x7)
  383. /* Reference cycles when using lane clock as reference */
  384. #define LANE_REF_CYC 0x8000
  385. enum voltage_swing_level {
  386. VOLTAGE_LEVEL_0,
  387. VOLTAGE_LEVEL_1,
  388. VOLTAGE_LEVEL_2,
  389. VOLTAGE_LEVEL_3,
  390. };
  391. enum pre_emphasis_level {
  392. PRE_EMPHASIS_LEVEL_0,
  393. PRE_EMPHASIS_LEVEL_1,
  394. PRE_EMPHASIS_LEVEL_2,
  395. PRE_EMPHASIS_LEVEL_3,
  396. };
  397. enum pattern_set {
  398. PTS1 = BIT(0),
  399. PTS2 = BIT(1),
  400. PTS3 = BIT(2),
  401. PTS4 = BIT(3),
  402. DP_NONE = BIT(4)
  403. };
  404. enum vic_color_depth {
  405. BCS_6 = 0x1,
  406. BCS_8 = 0x2,
  407. BCS_10 = 0x4,
  408. BCS_12 = 0x8,
  409. BCS_16 = 0x10,
  410. };
  411. enum vic_bt_type {
  412. BT_601 = 0x0,
  413. BT_709 = 0x1,
  414. };
  415. void cdn_dp_clock_reset(struct cdn_dp_device *dp);
  416. void cdn_dp_set_fw_clk(struct cdn_dp_device *dp, unsigned long clk);
  417. int cdn_dp_load_firmware(struct cdn_dp_device *dp, const u32 *i_mem,
  418. u32 i_size, const u32 *d_mem, u32 d_size);
  419. int cdn_dp_set_firmware_active(struct cdn_dp_device *dp, bool enable);
  420. int cdn_dp_set_host_cap(struct cdn_dp_device *dp, u8 lanes, bool flip);
  421. int cdn_dp_event_config(struct cdn_dp_device *dp);
  422. u32 cdn_dp_get_event(struct cdn_dp_device *dp);
  423. int cdn_dp_get_hpd_status(struct cdn_dp_device *dp);
  424. int cdn_dp_dpcd_write(struct cdn_dp_device *dp, u32 addr, u8 value);
  425. int cdn_dp_dpcd_read(struct cdn_dp_device *dp, u32 addr, u8 *data, u16 len);
  426. int cdn_dp_get_edid_block(void *dp, u8 *edid,
  427. unsigned int block, size_t length);
  428. int cdn_dp_train_link(struct cdn_dp_device *dp);
  429. int cdn_dp_set_video_status(struct cdn_dp_device *dp, int active);
  430. int cdn_dp_config_video(struct cdn_dp_device *dp);
  431. int cdn_dp_audio_stop(struct cdn_dp_device *dp, struct audio_info *audio);
  432. int cdn_dp_audio_mute(struct cdn_dp_device *dp, bool enable);
  433. int cdn_dp_audio_config(struct cdn_dp_device *dp, struct audio_info *audio);
  434. #endif /* _CDN_DP_REG_H */