edp_rk3288.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. /*
  2. * Copyright (c) 2015 Google, Inc
  3. * Copyright 2014 Rockchip Inc.
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #ifndef _ASM_ARCH_EDP_H
  8. #define _ASM_ARCH_EDP_H
  9. struct rk3288_edp {
  10. u8 res0[0x10];
  11. u32 dp_tx_version;
  12. u8 res1[0x4];
  13. u32 func_en_1;
  14. u32 func_en_2;
  15. u32 video_ctl_1;
  16. u32 video_ctl_2;
  17. u32 video_ctl_3;
  18. u32 video_ctl_4;
  19. u8 res2[0xc];
  20. u32 video_ctl_8;
  21. u8 res3[0x4];
  22. u32 video_ctl_10;
  23. u32 total_line_l;
  24. u32 total_line_h;
  25. u32 active_line_l;
  26. u32 active_line_h;
  27. u32 v_f_porch;
  28. u32 vsync;
  29. u32 v_b_porch;
  30. u32 total_pixel_l;
  31. u32 total_pixel_h;
  32. u32 active_pixel_l;
  33. u32 active_pixel_h;
  34. u32 h_f_porch_l;
  35. u32 h_f_porch_h;
  36. u32 hsync_l;
  37. u32 hysnc_h;
  38. u32 h_b_porch_l;
  39. u32 h_b_porch_h;
  40. u32 vid_status;
  41. u32 total_line_sta_l;
  42. u32 total_line_sta_h;
  43. u32 active_line_sta_l;
  44. u32 active_line_sta_h;
  45. u32 v_f_porch_sta;
  46. u32 vsync_sta;
  47. u32 v_b_porch_sta;
  48. u32 total_pixel_sta_l;
  49. u32 total_pixel_sta_h;
  50. u32 active_pixel_sta_l;
  51. u32 active_pixel_sta_h;
  52. u32 h_f_porch_sta_l;
  53. u32 h_f_porch_sta_h;
  54. u32 hsync_sta_l;
  55. u32 hsync_sta_h;
  56. u32 h_b_porch_sta_l;
  57. u32 h_b_porch__sta_h;
  58. u8 res4[0x28];
  59. u32 pll_reg_1;
  60. u8 res5[4];
  61. u32 ssc_reg;
  62. u8 res6[0xc];
  63. u32 tx_common;
  64. u32 tx_common2;
  65. u8 res7[0x4];
  66. u32 dp_aux;
  67. u32 dp_bias;
  68. u32 dp_test;
  69. u32 dp_pd;
  70. u32 dp_reserv1;
  71. u32 dp_reserv2;
  72. u8 res8[0x224];
  73. u32 lane_map;
  74. u8 res9[0x14];
  75. u32 analog_ctl_2;
  76. u8 res10[0x48];
  77. u32 int_state;
  78. u32 common_int_sta_1;
  79. u32 common_int_sta_2;
  80. u32 common_int_sta_3;
  81. u32 common_int_sta_4;
  82. u32 spdif_biphase_int_sta;
  83. u8 res11[0x4];
  84. u32 dp_int_sta;
  85. u32 common_int_mask_1;
  86. u32 common_int_mask_2;
  87. u32 common_int_mask_3;
  88. u32 common_int_mask_4;
  89. u8 res12[0x08];
  90. u32 int_sta_mask;
  91. u32 int_ctl;
  92. u8 res13[0x200];
  93. u32 sys_ctl_1;
  94. u32 sys_ctl_2;
  95. u32 sys_ctl_3;
  96. u32 sys_ctl_4;
  97. u32 dp_vid_ctl;
  98. u8 res14[0x4];
  99. u32 dp_aud_ctl;
  100. u8 res15[0x24];
  101. u32 pkt_send_ctl;
  102. u8 res16[0x4];
  103. u32 dp_hdcp_ctl;
  104. u8 res17[0x34];
  105. u32 link_bw_set;
  106. u32 lane_count_set;
  107. u32 dp_training_ptn_set;
  108. u32 ln_link_trn_ctl[4];
  109. u8 res18[0x4];
  110. u32 dp_hw_link_training;
  111. u8 res19[0x1c];
  112. u32 dp_debug_ctl;
  113. u32 hpd_deglitch_l;
  114. u32 hpd_deglitch_h;
  115. u8 res20[0x14];
  116. u32 dp_link_debug_ctl;
  117. u8 res21[0x1c];
  118. u32 m_vid_0;
  119. u32 m_vid_1;
  120. u32 m_vid_2;
  121. u32 n_vid_0;
  122. u32 n_vid_1;
  123. u32 n_vid_2;
  124. u32 m_vid_mon;
  125. u8 res22[0x14];
  126. u32 dp_video_fifo_thrd;
  127. u8 res23[0x8];
  128. u32 dp_audio_margin;
  129. u8 res24[0x20];
  130. u32 dp_m_cal_ctl;
  131. u32 m_vid_gen_filter_th;
  132. u8 res25[0x10];
  133. u32 m_aud_gen_filter_th;
  134. u8 res26[0x4];
  135. u32 aux_ch_sta;
  136. u32 aux_err_num;
  137. u32 aux_ch_defer_dtl;
  138. u32 aux_rx_comm;
  139. u32 buf_data_ctl;
  140. u32 aux_ch_ctl_1;
  141. u32 aux_addr_7_0;
  142. u32 aux_addr_15_8;
  143. u32 aux_addr_19_16;
  144. u32 aux_ch_ctl_2;
  145. u8 res27[0x18];
  146. u32 buf_data[16];
  147. u32 soc_general_ctl;
  148. u8 res29[0x1e0];
  149. u32 pll_reg_2;
  150. u32 pll_reg_3;
  151. u32 pll_reg_4;
  152. u8 res30[0x10];
  153. u32 pll_reg_5;
  154. };
  155. check_member(rk3288_edp, pll_reg_5, 0xa00);
  156. /* func_en_1 */
  157. #define VID_CAP_FUNC_EN_N (0x1 << 6)
  158. #define VID_FIFO_FUNC_EN_N (0x1 << 5)
  159. #define AUD_FIFO_FUNC_EN_N (0x1 << 4)
  160. #define AUD_FUNC_EN_N (0x1 << 3)
  161. #define HDCP_FUNC_EN_N (0x1 << 2)
  162. #define SW_FUNC_EN_N (0x1 << 0)
  163. /* func_en_2 */
  164. #define SSC_FUNC_EN_N (0x1 << 7)
  165. #define AUX_FUNC_EN_N (0x1 << 2)
  166. #define SERDES_FIFO_FUNC_EN_N (0x1 << 1)
  167. #define LS_CLK_DOMAIN_FUNC_EN_N (0x1 << 0)
  168. /* video_ctl_1 */
  169. #define VIDEO_EN (0x1 << 7)
  170. #define VIDEO_MUTE (0x1 << 6)
  171. /* video_ctl_2 */
  172. #define IN_D_RANGE_MASK (0x1 << 7)
  173. #define IN_D_RANGE_SHIFT (7)
  174. #define IN_D_RANGE_CEA (0x1 << 7)
  175. #define IN_D_RANGE_VESA (0x0 << 7)
  176. #define IN_BPC_MASK (0x7 << 4)
  177. #define IN_BPC_SHIFT (4)
  178. #define IN_BPC_12_BITS (0x3 << 4)
  179. #define IN_BPC_10_BITS (0x2 << 4)
  180. #define IN_BPC_8_BITS (0x1 << 4)
  181. #define IN_BPC_6_BITS (0x0 << 4)
  182. #define IN_COLOR_F_MASK (0x3 << 0)
  183. #define IN_COLOR_F_SHIFT (0)
  184. #define IN_COLOR_F_YCBCR444 (0x2 << 0)
  185. #define IN_COLOR_F_YCBCR422 (0x1 << 0)
  186. #define IN_COLOR_F_RGB (0x0 << 0)
  187. /* video_ctl_3 */
  188. #define IN_YC_COEFFI_MASK (0x1 << 7)
  189. #define IN_YC_COEFFI_SHIFT (7)
  190. #define IN_YC_COEFFI_ITU709 (0x1 << 7)
  191. #define IN_YC_COEFFI_ITU601 (0x0 << 7)
  192. #define VID_CHK_UPDATE_TYPE_MASK (0x1 << 4)
  193. #define VID_CHK_UPDATE_TYPE_SHIFT (4)
  194. #define VID_CHK_UPDATE_TYPE_1 (0x1 << 4)
  195. #define VID_CHK_UPDATE_TYPE_0 (0x0 << 4)
  196. /* video_ctl_4 */
  197. #define BIST_EN (0x1 << 3)
  198. #define BIST_WH_64 (0x1 << 2)
  199. #define BIST_WH_32 (0x0 << 2)
  200. #define BIST_TYPE_COLR_BAR (0x0 << 0)
  201. #define BIST_TYPE_GRAY_BAR (0x1 << 0)
  202. #define BIST_TYPE_MOBILE_BAR (0x2 << 0)
  203. /* video_ctl_8 */
  204. #define VID_HRES_TH(x) (((x) & 0xf) << 4)
  205. #define VID_VRES_TH(x) (((x) & 0xf) << 0)
  206. /* video_ctl_10 */
  207. #define F_SEL (0x1 << 4)
  208. #define INTERACE_SCAN_CFG (0x1 << 2)
  209. #define INTERACD_SCAN_CFG_OFFSET 2
  210. #define VSYNC_POLARITY_CFG (0x1 << 1)
  211. #define VSYNC_POLARITY_CFG_OFFSET 1
  212. #define HSYNC_POLARITY_CFG (0x1 << 0)
  213. #define HSYNC_POLARITY_CFG_OFFSET 0
  214. /* dp_pd */
  215. #define PD_INC_BG (0x1 << 7)
  216. #define PD_EXP_BG (0x1 << 6)
  217. #define PD_AUX (0x1 << 5)
  218. #define PD_PLL (0x1 << 4)
  219. #define PD_CH3 (0x1 << 3)
  220. #define PD_CH2 (0x1 << 2)
  221. #define PD_CH1 (0x1 << 1)
  222. #define PD_CH0 (0x1 << 0)
  223. /* pll_reg_1 */
  224. #define REF_CLK_24M (0x1 << 1)
  225. #define REF_CLK_27M (0x0 << 1)
  226. /* line_map */
  227. #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6)
  228. #define LANE3_MAP_LOGIC_LANE_1 (0x1 << 6)
  229. #define LANE3_MAP_LOGIC_LANE_2 (0x2 << 6)
  230. #define LANE3_MAP_LOGIC_LANE_3 (0x3 << 6)
  231. #define LANE2_MAP_LOGIC_LANE_0 (0x0 << 4)
  232. #define LANE2_MAP_LOGIC_LANE_1 (0x1 << 4)
  233. #define LANE2_MAP_LOGIC_LANE_2 (0x2 << 4)
  234. #define LANE2_MAP_LOGIC_LANE_3 (0x3 << 4)
  235. #define LANE1_MAP_LOGIC_LANE_0 (0x0 << 2)
  236. #define LANE1_MAP_LOGIC_LANE_1 (0x1 << 2)
  237. #define LANE1_MAP_LOGIC_LANE_2 (0x2 << 2)
  238. #define LANE1_MAP_LOGIC_LANE_3 (0x3 << 2)
  239. #define LANE0_MAP_LOGIC_LANE_0 (0x0 << 0)
  240. #define LANE0_MAP_LOGIC_LANE_1 (0x1 << 0)
  241. #define LANE0_MAP_LOGIC_LANE_2 (0x2 << 0)
  242. #define LANE0_MAP_LOGIC_LANE_3 (0x3 << 0)
  243. /* analog_ctl_2 */
  244. #define SEL_24M (0x1 << 3)
  245. /* common_int_sta_1 */
  246. #define VSYNC_DET (0x1 << 7)
  247. #define PLL_LOCK_CHG (0x1 << 6)
  248. #define SPDIF_ERR (0x1 << 5)
  249. #define SPDIF_UNSTBL (0x1 << 4)
  250. #define VID_FORMAT_CHG (0x1 << 3)
  251. #define AUD_CLK_CHG (0x1 << 2)
  252. #define VID_CLK_CHG (0x1 << 1)
  253. #define SW_INT (0x1 << 0)
  254. /* common_int_sta_2 */
  255. #define ENC_EN_CHG (0x1 << 6)
  256. #define HW_BKSV_RDY (0x1 << 3)
  257. #define HW_SHA_DONE (0x1 << 2)
  258. #define HW_AUTH_STATE_CHG (0x1 << 1)
  259. #define HW_AUTH_DONE (0x1 << 0)
  260. /* common_int_sta_3 */
  261. #define AFIFO_UNDER (0x1 << 7)
  262. #define AFIFO_OVER (0x1 << 6)
  263. #define R0_CHK_FLAG (0x1 << 5)
  264. /* common_int_sta_4 */
  265. #define PSR_ACTIVE (0x1 << 7)
  266. #define PSR_INACTIVE (0x1 << 6)
  267. #define SPDIF_BI_PHASE_ERR (0x1 << 5)
  268. #define HOTPLUG_CHG (0x1 << 2)
  269. #define HPD_LOST (0x1 << 1)
  270. #define PLUG (0x1 << 0)
  271. /* dp_int_sta */
  272. #define INT_HPD (0x1 << 6)
  273. #define HW_LT_DONE (0x1 << 5)
  274. #define SINK_LOST (0x1 << 3)
  275. #define LINK_LOST (0x1 << 2)
  276. #define RPLY_RECEIV (0x1 << 1)
  277. #define AUX_ERR (0x1 << 0)
  278. /* int_ctl */
  279. #define SOFT_INT_CTRL (0x1 << 2)
  280. #define INT_POL (0x1 << 0)
  281. /* sys_ctl_1 */
  282. #define DET_STA (0x1 << 2)
  283. #define FORCE_DET (0x1 << 1)
  284. #define DET_CTRL (0x1 << 0)
  285. /* sys_ctl_2 */
  286. #define CHA_CRI(x) (((x) & 0xf) << 4)
  287. #define CHA_STA (0x1 << 2)
  288. #define FORCE_CHA (0x1 << 1)
  289. #define CHA_CTRL (0x1 << 0)
  290. /* sys_ctl_3 */
  291. #define HPD_STATUS (0x1 << 6)
  292. #define F_HPD (0x1 << 5)
  293. #define HPD_CTRL (0x1 << 4)
  294. #define HDCP_RDY (0x1 << 3)
  295. #define STRM_VALID (0x1 << 2)
  296. #define F_VALID (0x1 << 1)
  297. #define VALID_CTRL (0x1 << 0)
  298. /* sys_ctl_4 */
  299. #define FIX_M_AUD (0x1 << 4)
  300. #define ENHANCED (0x1 << 3)
  301. #define FIX_M_VID (0x1 << 2)
  302. #define M_VID_UPDATE_CTRL (0x3 << 0)
  303. /* pll_reg_2 */
  304. #define LDO_OUTPUT_V_SEL_145 (2 << 6)
  305. #define KVCO_DEFALUT (1 << 4)
  306. #define CHG_PUMP_CUR_SEL_5US (1 << 2)
  307. #define V2L_CUR_SEL_1MA (1 << 0)
  308. /* pll_reg_3 */
  309. #define LOCK_DET_CNT_SEL_256 (2 << 5)
  310. #define LOOP_FILTER_RESET (0 << 4)
  311. #define PALL_SSC_RESET (0 << 3)
  312. #define LOCK_DET_BYPASS (0 << 2)
  313. #define PLL_LOCK_DET_MODE (0 << 1)
  314. #define PLL_LOCK_DET_FORCE (0 << 0)
  315. /* pll_reg_5 */
  316. #define REGULATOR_V_SEL_950MV (2 << 4)
  317. #define STANDBY_CUR_SEL (0 << 3)
  318. #define CHG_PUMP_INOUT_CTRL_1200MV (1 << 1)
  319. #define CHG_PUMP_INPUT_CTRL_OP (0 << 0)
  320. /* ssc_reg */
  321. #define SSC_OFFSET (0 << 6)
  322. #define SSC_MODE (1 << 4)
  323. #define SSC_DEPTH (9 << 0)
  324. /* tx_common */
  325. #define TX_SWING_PRE_EMP_MODE (1 << 7)
  326. #define PRE_DRIVER_PW_CTRL1 (0 << 5)
  327. #define LP_MODE_CLK_REGULATOR (0 << 4)
  328. #define RESISTOR_MSB_CTRL (0 << 3)
  329. #define RESISTOR_CTRL (7 << 0)
  330. /* dp_aux */
  331. #define DP_AUX_COMMON_MODE (0 << 4)
  332. #define DP_AUX_EN (0 << 3)
  333. #define AUX_TERM_50OHM (3 << 0)
  334. /* dp_bias */
  335. #define DP_BG_OUT_SEL (4 << 4)
  336. #define DP_DB_CUR_CTRL (0 << 3)
  337. #define DP_BG_SEL (1 << 2)
  338. #define DP_RESISTOR_TUNE_BG (2 << 0)
  339. /* dp_reserv2 */
  340. #define CH1_CH3_SWING_EMP_CTRL (5 << 4)
  341. #define CH0_CH2_SWING_EMP_CTRL (5 << 0)
  342. /* dp_training_ptn_set */
  343. #define SCRAMBLING_DISABLE (0x1 << 5)
  344. #define SCRAMBLING_ENABLE (0x0 << 5)
  345. #define LINK_QUAL_PATTERN_SET_MASK (0x7 << 2)
  346. #define LINK_QUAL_PATTERN_SET_HBR2 (0x5 << 2)
  347. #define LINK_QUAL_PATTERN_SET_80BIT (0x4 << 2)
  348. #define LINK_QUAL_PATTERN_SET_PRBS7 (0x3 << 2)
  349. #define LINK_QUAL_PATTERN_SET_D10_2 (0x1 << 2)
  350. #define LINK_QUAL_PATTERN_SET_DISABLE (0x0 << 2)
  351. #define SW_TRAINING_PATTERN_SET_MASK (0x3 << 0)
  352. #define SW_TRAINING_PATTERN_SET_PTN2 (0x2 << 0)
  353. #define SW_TRAINING_PATTERN_SET_PTN1 (0x1 << 0)
  354. #define SW_TRAINING_PATTERN_SET_DISABLE (0x0 << 0)
  355. /* dp_hw_link_training_ctl */
  356. #define HW_LT_ERR_CODE_MASK 0x70
  357. #define HW_LT_ERR_CODE_SHIFT 4
  358. #define HW_LT_EN (0x1 << 0)
  359. /* dp_debug_ctl */
  360. #define PLL_LOCK (0x1 << 4)
  361. #define F_PLL_LOCK (0x1 << 3)
  362. #define PLL_LOCK_CTRL (0x1 << 2)
  363. #define POLL_EN (0x1 << 1)
  364. #define PN_INV (0x1 << 0)
  365. /* aux_ch_sta */
  366. #define AUX_BUSY (0x1 << 4)
  367. #define AUX_STATUS_MASK (0xf << 0)
  368. /* aux_ch_defer_ctl */
  369. #define DEFER_CTRL_EN (0x1 << 7)
  370. #define DEFER_COUNT(x) (((x) & 0x7f) << 0)
  371. /* aux_rx_comm */
  372. #define AUX_RX_COMM_I2C_DEFER (0x2 << 2)
  373. #define AUX_RX_COMM_AUX_DEFER (0x2 << 0)
  374. /* buffer_data_ctl */
  375. #define BUF_CLR (0x1 << 7)
  376. #define BUF_HAVE_DATA (0x1 << 4)
  377. #define BUF_DATA_COUNT(x) (((x) & 0xf) << 0)
  378. /* aux_ch_ctl_1 */
  379. #define AUX_LENGTH(x) (((x - 1) & 0xf) << 4)
  380. #define AUX_TX_COMM_MASK (0xf << 0)
  381. #define AUX_TX_COMM_DP_TRANSACTION (0x1 << 3)
  382. #define AUX_TX_COMM_I2C_TRANSACTION (0x0 << 3)
  383. #define AUX_TX_COMM_MOT (0x1 << 2)
  384. #define AUX_TX_COMM_WRITE (0x0 << 0)
  385. #define AUX_TX_COMM_READ (0x1 << 0)
  386. /* aux_ch_ctl_2 */
  387. #define PD_AUX_IDLE (0x1 << 3)
  388. #define ADDR_ONLY (0x1 << 1)
  389. #define AUX_EN (0x1 << 0)
  390. /* tx_sw_reset */
  391. #define RST_DP_TX (0x1 << 0)
  392. /* analog_ctl_1 */
  393. #define TX_TERMINAL_CTRL_50_OHM (0x1 << 4)
  394. /* analog_ctl_3 */
  395. #define DRIVE_DVDD_BIT_1_0625V (0x4 << 5)
  396. #define VCO_BIT_600_MICRO (0x5 << 0)
  397. /* pll_filter_ctl_1 */
  398. #define PD_RING_OSC (0x1 << 6)
  399. #define AUX_TERMINAL_CTRL_37_5_OHM (0x0 << 4)
  400. #define AUX_TERMINAL_CTRL_45_OHM (0x1 << 4)
  401. #define AUX_TERMINAL_CTRL_50_OHM (0x2 << 4)
  402. #define AUX_TERMINAL_CTRL_65_OHM (0x3 << 4)
  403. #define TX_CUR1_2X (0x1 << 2)
  404. #define TX_CUR_16_MA (0x3 << 0)
  405. /* Definition for DPCD Register */
  406. #define DPCD_DPCD_REV (0x0000)
  407. #define DPCD_MAX_LINK_RATE (0x0001)
  408. #define DPCD_MAX_LANE_COUNT (0x0002)
  409. #define DP_MAX_LANE_COUNT_MASK 0x1f
  410. #define DP_TPS3_SUPPORTED (1 << 6)
  411. #define DP_ENHANCED_FRAME_CAP (1 << 7)
  412. #define DPCD_LINK_BW_SET (0x0100)
  413. #define DPCD_LANE_COUNT_SET (0x0101)
  414. #define DPCD_TRAINING_PATTERN_SET (0x0102)
  415. #define DP_TRAINING_PATTERN_DISABLE 0
  416. #define DP_TRAINING_PATTERN_1 1
  417. #define DP_TRAINING_PATTERN_2 2
  418. #define DP_TRAINING_PATTERN_3 3
  419. #define DP_TRAINING_PATTERN_MASK 0x3
  420. #define DPCD_TRAINING_LANE0_SET (0x0103)
  421. #define DP_TRAIN_VOLTAGE_SWING_MASK 0x3
  422. #define DP_TRAIN_VOLTAGE_SWING_SHIFT 0
  423. #define DP_TRAIN_MAX_SWING_REACHED (1 << 2)
  424. #define DP_TRAIN_VOLTAGE_SWING_400 (0 << 0)
  425. #define DP_TRAIN_VOLTAGE_SWING_600 (1 << 0)
  426. #define DP_TRAIN_VOLTAGE_SWING_800 (2 << 0)
  427. #define DP_TRAIN_VOLTAGE_SWING_1200 (3 << 0)
  428. #define DP_TRAIN_PRE_EMPHASIS_MASK (3 << 3)
  429. #define DP_TRAIN_PRE_EMPHASIS_0 (0 << 3)
  430. #define DP_TRAIN_PRE_EMPHASIS_3_5 (1 << 3)
  431. #define DP_TRAIN_PRE_EMPHASIS_6 (2 << 3)
  432. #define DP_TRAIN_PRE_EMPHASIS_9_5 (3 << 3)
  433. #define DP_TRAIN_PRE_EMPHASIS_SHIFT 3
  434. #define DP_TRAIN_MAX_PRE_EMPHASIS_REACHED (1 << 5)
  435. #define DPCD_LANE0_1_STATUS (0x0202)
  436. #define DPCD_LANE2_3_STATUS (0x0203)
  437. #define DP_LANE_CR_DONE (1 << 0)
  438. #define DP_LANE_CHANNEL_EQ_DONE (1 << 1)
  439. #define DP_LANE_SYMBOL_LOCKED (1 << 2)
  440. #define DP_CHANNEL_EQ_BITS (DP_LANE_CR_DONE |\
  441. DP_LANE_CHANNEL_EQ_DONE |\
  442. DP_LANE_SYMBOL_LOCKED)
  443. #define DPCD_LANE_ALIGN_STATUS_UPDATED (0x0204)
  444. #define DP_INTERLANE_ALIGN_DONE (1 << 0)
  445. #define DP_DOWNSTREAM_PORT_STATUS_CHANGED (1 << 6)
  446. #define DP_LINK_STATUS_UPDATED (1 << 7)
  447. #define DPCD_ADJUST_REQUEST_LANE0_1 (0x0206)
  448. #define DPCD_ADJUST_REQUEST_LANE2_3 (0x0207)
  449. #define DP_ADJUST_VOLTAGE_SWING_LANE0_MASK 0x03
  450. #define DP_ADJUST_VOLTAGE_SWING_LANE0_SHIFT 0
  451. #define DP_ADJUST_PRE_EMPHASIS_LANE0_MASK 0x0c
  452. #define DP_ADJUST_PRE_EMPHASIS_LANE0_SHIFT 2
  453. #define DP_ADJUST_VOLTAGE_SWING_LANE1_MASK 0x30
  454. #define DP_ADJUST_VOLTAGE_SWING_LANE1_SHIFT 4
  455. #define DP_ADJUST_PRE_EMPHASIS_LANE1_MASK 0xc0
  456. #define DP_ADJUST_PRE_EMPHASIS_LANE1_SHIFT 6
  457. #define DPCD_TEST_REQUEST (0x0218)
  458. #define DPCD_TEST_RESPONSE (0x0260)
  459. #define DPCD_TEST_EDID_CHECKSUM (0x0261)
  460. #define DPCD_LINK_POWER_STATE (0x0600)
  461. #define DP_SET_POWER_D0 0x1
  462. #define DP_SET_POWER_D3 0x2
  463. #define DP_SET_POWER_MASK 0x3
  464. #define AUX_ADDR_7_0(x) (((x) >> 0) & 0xff)
  465. #define AUX_ADDR_15_8(x) (((x) >> 8) & 0xff)
  466. #define AUX_ADDR_19_16(x) (((x) >> 16) & 0x0f)
  467. #define STREAM_ON_TIMEOUT 100
  468. #define PLL_LOCK_TIMEOUT 10
  469. #define DP_INIT_TRIES 10
  470. #define EDID_ADDR 0x50
  471. #define EDID_LENGTH 0x80
  472. #define EDID_HEADER 0x00
  473. #define EDID_EXTENSION_FLAG 0x7e
  474. enum dpcd_request {
  475. DPCD_READ,
  476. DPCD_WRITE,
  477. };
  478. enum dp_irq_type {
  479. DP_IRQ_TYPE_HP_CABLE_IN,
  480. DP_IRQ_TYPE_HP_CABLE_OUT,
  481. DP_IRQ_TYPE_HP_CHANGE,
  482. DP_IRQ_TYPE_UNKNOWN,
  483. };
  484. enum color_coefficient {
  485. COLOR_YCBCR601,
  486. COLOR_YCBCR709
  487. };
  488. enum dynamic_range {
  489. VESA,
  490. CEA
  491. };
  492. enum clock_recovery_m_value_type {
  493. CALCULATED_M,
  494. REGISTER_M
  495. };
  496. enum video_timing_recognition_type {
  497. VIDEO_TIMING_FROM_CAPTURE,
  498. VIDEO_TIMING_FROM_REGISTER
  499. };
  500. enum pattern_set {
  501. PRBS7,
  502. D10_2,
  503. TRAINING_PTN1,
  504. TRAINING_PTN2,
  505. DP_NONE
  506. };
  507. enum color_space {
  508. CS_RGB,
  509. CS_YCBCR422,
  510. CS_YCBCR444
  511. };
  512. enum color_depth {
  513. COLOR_6,
  514. COLOR_8,
  515. COLOR_10,
  516. COLOR_12
  517. };
  518. enum link_rate_type {
  519. LINK_RATE_1_62GBPS = 0x06,
  520. LINK_RATE_2_70GBPS = 0x0a
  521. };
  522. enum link_lane_count_type {
  523. LANE_CNT1 = 1,
  524. LANE_CNT2 = 2,
  525. LANE_CNT4 = 4
  526. };
  527. enum link_training_state {
  528. LT_START,
  529. LT_CLK_RECOVERY,
  530. LT_EQ_TRAINING,
  531. FINISHED,
  532. FAILED
  533. };
  534. enum voltage_swing_level {
  535. VOLTAGE_LEVEL_0,
  536. VOLTAGE_LEVEL_1,
  537. VOLTAGE_LEVEL_2,
  538. VOLTAGE_LEVEL_3,
  539. };
  540. enum pre_emphasis_level {
  541. PRE_EMPHASIS_LEVEL_0,
  542. PRE_EMPHASIS_LEVEL_1,
  543. PRE_EMPHASIS_LEVEL_2,
  544. PRE_EMPHASIS_LEVEL_3,
  545. };
  546. enum analog_power_block {
  547. AUX_BLOCK,
  548. CH0_BLOCK,
  549. CH1_BLOCK,
  550. CH2_BLOCK,
  551. CH3_BLOCK,
  552. ANALOG_TOTAL,
  553. POWER_ALL
  554. };
  555. struct link_train {
  556. unsigned char revision;
  557. u8 link_rate;
  558. u8 lane_count;
  559. };
  560. #endif