xref: /openbmc/u-boot/arch/arm/mach-exynos/include/mach/dp_info.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1  /* SPDX-License-Identifier: GPL-2.0+ */
2  /*
3   * Copyright (C) 2012 Samsung Electronics
4   *
5   * Author: Donghwa Lee <dh09.lee@samsung.com>
6   */
7  
8  #ifndef _DP_INFO_H
9  #define _DP_INFO_H
10  
11  #define msleep(a)			udelay(a * 1000)
12  
13  #define DP_TIMEOUT_LOOP_COUNT		100
14  #define MAX_CR_LOOP			5
15  #define MAX_EQ_LOOP			4
16  
17  #define EXYNOS_DP_SUCCESS		0
18  
19  enum {
20  	DP_DISABLE,
21  	DP_ENABLE,
22  };
23  
24  struct edp_disp_info {
25  	char *name;
26  	unsigned int h_total;
27  	unsigned int h_res;
28  	unsigned int h_sync_width;
29  	unsigned int h_back_porch;
30  	unsigned int h_front_porch;
31  	unsigned int v_total;
32  	unsigned int v_res;
33  	unsigned int v_sync_width;
34  	unsigned int v_back_porch;
35  	unsigned int v_front_porch;
36  
37  	unsigned int v_sync_rate;
38  };
39  
40  struct edp_link_train_info {
41  	unsigned int lt_status;
42  
43  	unsigned int ep_loop;
44  	unsigned int cr_loop[4];
45  
46  };
47  
48  struct edp_video_info {
49  	unsigned int master_mode;
50  	unsigned int bist_mode;
51  	unsigned int bist_pattern;
52  
53  	unsigned int h_sync_polarity;
54  	unsigned int v_sync_polarity;
55  	unsigned int interlaced;
56  
57  	unsigned int color_space;
58  	unsigned int dynamic_range;
59  	unsigned int ycbcr_coeff;
60  	unsigned int color_depth;
61  };
62  
63  struct exynos_dp_priv {
64  	struct edp_disp_info disp_info;
65  	struct edp_link_train_info lt_info;
66  	struct edp_video_info video_info;
67  
68  	/*below info get from panel during training*/
69  	unsigned char lane_bw;
70  	unsigned char lane_cnt;
71  	unsigned char dpcd_rev;
72  	/*support enhanced frame cap */
73  	unsigned char dpcd_efc;
74  	struct exynos_dp *regs;
75  };
76  
77  enum analog_power_block {
78  	AUX_BLOCK,
79  	CH0_BLOCK,
80  	CH1_BLOCK,
81  	CH2_BLOCK,
82  	CH3_BLOCK,
83  	ANALOG_TOTAL,
84  	POWER_ALL
85  };
86  
87  enum pll_status {
88  	PLL_UNLOCKED = 0,
89  	PLL_LOCKED
90  };
91  
92  enum {
93  	COLOR_RGB,
94  	COLOR_YCBCR422,
95  	COLOR_YCBCR444
96  };
97  
98  enum {
99  	VESA,
100  	CEA
101  };
102  
103  enum {
104  	COLOR_YCBCR601,
105  	COLOR_YCBCR709
106  };
107  
108  enum {
109  	COLOR_6,
110  	COLOR_8,
111  	COLOR_10,
112  	COLOR_12
113  };
114  
115  enum {
116  	DP_LANE_BW_1_62 = 0x06,
117  	DP_LANE_BW_2_70 = 0x0a,
118  };
119  
120  enum {
121  	DP_LANE_CNT_1 = 1,
122  	DP_LANE_CNT_2 = 2,
123  	DP_LANE_CNT_4 = 4,
124  };
125  
126  enum {
127  	DP_DPCD_REV_10 = 0x10,
128  	DP_DPCD_REV_11 = 0x11,
129  };
130  
131  enum {
132  	DP_LT_NONE,
133  	DP_LT_START,
134  	DP_LT_CR,
135  	DP_LT_ET,
136  	DP_LT_FINISHED,
137  	DP_LT_FAIL,
138  };
139  
140  enum  {
141  	PRE_EMPHASIS_LEVEL_0,
142  	PRE_EMPHASIS_LEVEL_1,
143  	PRE_EMPHASIS_LEVEL_2,
144  	PRE_EMPHASIS_LEVEL_3,
145  };
146  
147  enum {
148  	PRBS7,
149  	D10_2,
150  	TRAINING_PTN1,
151  	TRAINING_PTN2,
152  	DP_NONE
153  };
154  
155  enum {
156  	VOLTAGE_LEVEL_0,
157  	VOLTAGE_LEVEL_1,
158  	VOLTAGE_LEVEL_2,
159  	VOLTAGE_LEVEL_3,
160  };
161  
162  enum pattern_type {
163  	NO_PATTERN,
164  	COLOR_RAMP,
165  	BALCK_WHITE_V_LINES,
166  	COLOR_SQUARE,
167  	INVALID_PATTERN,
168  	COLORBAR_32,
169  	COLORBAR_64,
170  	WHITE_GRAY_BALCKBAR_32,
171  	WHITE_GRAY_BALCKBAR_64,
172  	MOBILE_WHITEBAR_32,
173  	MOBILE_WHITEBAR_64
174  };
175  
176  enum {
177  	CALCULATED_M,
178  	REGISTER_M
179  };
180  
181  enum {
182  	VIDEO_TIMING_FROM_CAPTURE,
183  	VIDEO_TIMING_FROM_REGISTER
184  };
185  
186  
187  struct exynos_dp_platform_data {
188  	struct exynos_dp_priv *edp_dev_info;
189  };
190  
191  #ifdef CONFIG_EXYNOS_DP
192  unsigned int exynos_init_dp(void);
193  #else
exynos_init_dp(void)194  unsigned int exynos_init_dp(void)
195  {
196  	return 0;
197  }
198  #endif
199  
200  #endif /* _DP_INFO_H */
201