xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/rockchip/rockchip-mipi-csi-tx.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0+ */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #ifndef ROCKCHIP_MIPI_CSI_TX
7*4882a593Smuzhiyun #define ROCKCHIP_MIPI_CSI_TX
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #define DRIVER_NAME    "rockchip-mipi-csi"
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #define CSITX_CONFIG_DONE		0x0000
12*4882a593Smuzhiyun #define m_CONFIG_DONE			BIT(0)
13*4882a593Smuzhiyun #define m_CONFIG_DONE_IMD		BIT(4)
14*4882a593Smuzhiyun #define m_CONFIG_DONE_MODE		BIT(8)
15*4882a593Smuzhiyun #define v_CONFIG_DONE(x)		(((x) & 0x1) << 0)
16*4882a593Smuzhiyun #define v_CONFIG_DONE_IMD(x)		(((x) & 0x1) << 4)
17*4882a593Smuzhiyun #define v_CONFIG_DONE_MODE(x)		(((x) & 0x1) << 8)
18*4882a593Smuzhiyun enum CONFIG_DONE_MODE {
19*4882a593Smuzhiyun 	FRAME_END_RX_MODE,
20*4882a593Smuzhiyun 	FRAME_END_TX_MODE
21*4882a593Smuzhiyun };
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #define CSITX_ENABLE			0x0004
24*4882a593Smuzhiyun #define m_CSITX_EN			BIT(0)
25*4882a593Smuzhiyun #define m_CPHY_EN			BIT(1)
26*4882a593Smuzhiyun #define m_DPHY_EN			BIT(2)
27*4882a593Smuzhiyun #define m_LANE_NUM			GENMASK(5, 4)
28*4882a593Smuzhiyun #define m_IDI_48BIT_EN			BIT(9)
29*4882a593Smuzhiyun #define v_CSITX_EN(x)			(((x) & 0x1) << 0)
30*4882a593Smuzhiyun #define v_CPHY_EN(x)			(((x) & 0x1) << 1)
31*4882a593Smuzhiyun #define v_DPHY_EN(x)			(((x) & 0x1) << 2)
32*4882a593Smuzhiyun #define v_LANE_NUM(x)			(((x) & 0x3) << 4)
33*4882a593Smuzhiyun #define v_IDI_48BIT_EN(x)		(((x) & 0x1) << 9)
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun #define CSITX_VERSION			0x0008
36*4882a593Smuzhiyun #define CSITX_SYS_CTRL0			0x0010
37*4882a593Smuzhiyun #define m_SOFT_RESET			BIT(0)
38*4882a593Smuzhiyun #define v_SOFT_RESET(x)			(((x) & 0x1) << 0)
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #define CSITX_SYS_CTRL1			0x0014
41*4882a593Smuzhiyun #define m_BYPASS_SELECT			BIT(0)
42*4882a593Smuzhiyun #define v_BYPASS_SELECT(x)		(((x) & 0x1) << 0)
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define CSITX_SYS_CTRL2			0x0018
45*4882a593Smuzhiyun #define m_VSYNC_ENABLE			BIT(0)
46*4882a593Smuzhiyun #define m_HSYNC_ENABLE			BIT(1)
47*4882a593Smuzhiyun #define m_IDI_WHOLE_FRM_EN		BIT(4)
48*4882a593Smuzhiyun #define m_VOP_WHOLE_FRM_EN		BIT(5)
49*4882a593Smuzhiyun #define v_VSYNC_ENABLE(x)		(((x) & 0x1) << 0)
50*4882a593Smuzhiyun #define v_HSYNC_ENABLE(x)		(((x) & 0x1) << 1)
51*4882a593Smuzhiyun #define v_IDI_WHOLE_FRM_EN(x)		(((x) & 0x1) << 4)
52*4882a593Smuzhiyun #define v_VOP_WHOLE_FRM_EN(x)		(((x) & 0x1) << 5)
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #define CSITX_SYS_CTRL3			0x001c
55*4882a593Smuzhiyun #define m_NON_CONTINUES_MODE_EN		BIT(0)
56*4882a593Smuzhiyun #define m_CONT_MODE_CLK_SET		BIT(4)
57*4882a593Smuzhiyun #define m_CONT_MODE_CLK_CLR		BIT(8)
58*4882a593Smuzhiyun #define v_NON_CONTINUES_MODE_EN(x)	(((x) & 0x1) << 0)
59*4882a593Smuzhiyun #define v_CONT_MODE_CLK_SET(x)		(((x) & 0x1) << 4)
60*4882a593Smuzhiyun #define v_CONT_MODE_CLK_CLR(x)		(((x) & 0x1) << 8)
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun #define CSITX_TIMING_CTRL		0x0020
63*4882a593Smuzhiyun #define CSITX_TIMING_VPW_NUM		0x0024
64*4882a593Smuzhiyun #define CSITX_TIMING_VBP_NUM		0x0028
65*4882a593Smuzhiyun #define CSITX_TIMING_VFP_NUM		0x002c
66*4882a593Smuzhiyun #define CSITX_TIMING_HPW_PADDING_NUM	0x0030
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun #define CSITX_VOP_PATH_CTRL		0x0040
69*4882a593Smuzhiyun #define m_VOP_PATH_EN			BIT(0)
70*4882a593Smuzhiyun #define m_VOP_DT_USERDEFINE_EN		BIT(1)
71*4882a593Smuzhiyun #define m_VOP_VC_USERDEFINE_EN		BIT(2)
72*4882a593Smuzhiyun #define m_VOP_WC_USERDEFINE_EN		BIT(3)
73*4882a593Smuzhiyun #define m_PIXEL_FORMAT			GENMASK(7, 4)
74*4882a593Smuzhiyun #define m_VOP_DT_USERDEFINE		GENMASK(13, 8)
75*4882a593Smuzhiyun #define m_VOP_VC_USERDEFINE		GENMASK(15, 14)
76*4882a593Smuzhiyun #define m_VOP_WC_USERDEFINE		GENMASK(31, 16)
77*4882a593Smuzhiyun #define v_VOP_PATH_EN(x)		(((x) & 0x1) << 0)
78*4882a593Smuzhiyun #define v_VOP_DT_USERDEFINE_EN(x)	(((x) & 0x1) << 1)
79*4882a593Smuzhiyun #define v_VOP_VC_USERDEFINE_EN(x)	(((x) & 0x1) << 2)
80*4882a593Smuzhiyun #define v_VOP_WC_USERDEFINE_EN(x)	(((x) & 0x1) << 3)
81*4882a593Smuzhiyun #define v_PIXEL_FORMAT(x)		(((x) & 0xf) << 4)
82*4882a593Smuzhiyun #define v_VOP_DT_USERDEFINE(x)		(((x) & 0x3f) << 8)
83*4882a593Smuzhiyun #define v_VOP_VC_USERDEFINE(x)		(((x) & 0x3) << 14)
84*4882a593Smuzhiyun #define v_VOP_WC_USERDEFINE(x)		(((x) & 0xffff) << 16)
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define CSITX_VOP_PATH_PKT_CTRL		0x0050
87*4882a593Smuzhiyun #define m_VOP_LINE_PADDING_EN		BIT(4)
88*4882a593Smuzhiyun #define m_VOP_LINE_PADDING_NUM		GENMASK(7, 5)
89*4882a593Smuzhiyun #define m_VOP_PKT_PADDING_EN		BIT(8)
90*4882a593Smuzhiyun #define m_VOP_WC_ACTIVE			GENMASK(31, 16)
91*4882a593Smuzhiyun #define v_VOP_LINE_PADDING_EN(x)	(((x) & 0x1) << 4)
92*4882a593Smuzhiyun #define v_VOP_LINE_PADDING_NUM(x)	(((x) & 0x7) << 5)
93*4882a593Smuzhiyun #define v_VOP_PKT_PADDING_EN(x)		(((x) & 0x1) << 8)
94*4882a593Smuzhiyun #define v_VOP_WC_ACTIVE(x)		(((x) & 0xff) << 16)
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun #define CSITX_BYPASS_PATH_CTRL		0x0060
97*4882a593Smuzhiyun #define m_BYPASS_PATH_EN		BIT(0)
98*4882a593Smuzhiyun #define m_BYPASS_DT_USERDEFINE_EN	BIT(1)
99*4882a593Smuzhiyun #define m_BYPASS_VC_USERDEFINE_EN	BIT(2)
100*4882a593Smuzhiyun #define m_BYPASS_WC_USERDEFINE_EN	BIT(3)
101*4882a593Smuzhiyun #define m_CAM_FORMAT			GENMASK(7, 4)
102*4882a593Smuzhiyun #define m_BYPASS_DT_USERDEFINE		GENMASK(13, 8)
103*4882a593Smuzhiyun #define m_BYPASS_VC_USERDEFINE		GENMASK(15, 14)
104*4882a593Smuzhiyun #define m_BYPASS_WC_USERDEFINE		GENMASK(31, 16)
105*4882a593Smuzhiyun #define v_BYPASS_PATH_EN(x)		(((x) & 0x1) << 0)
106*4882a593Smuzhiyun #define v_BYPASS_DT_USERDEFINE_EN(x)	(((x) & 0x1) << 1)
107*4882a593Smuzhiyun #define v_BYPASS_VC_USERDEFINE_EN(x)	(((x) & 0x1) << 2)
108*4882a593Smuzhiyun #define v_BYPASS_WC_USERDEFINE_EN(x)	(((x) & 0x1) << 3)
109*4882a593Smuzhiyun #define v_CAM_FORMAT(x)			(((x) & 0xf) << 4)
110*4882a593Smuzhiyun #define v_BYPASS_DT_USERDEFINE(x)	(((x) & 0x3f) << 8)
111*4882a593Smuzhiyun #define v_BYPASS_VC_USERDEFINE(x)	(((x) & 0x3) << 14)
112*4882a593Smuzhiyun #define v_BYPASS_WC_USERDEFINE(x)	(((x) & 0xff) << 16)
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun #define CSITX_BYPASS_PATH_PKT_CTRL	0x0064
115*4882a593Smuzhiyun #define m_BYPASS_LINE_PADDING_EN	BIT(4)
116*4882a593Smuzhiyun #define m_BYPASS_LINE_PADDING_NUM	GENMASK(7, 5)
117*4882a593Smuzhiyun #define m_BYPASS_PKT_PADDING_EN		BIT(8)
118*4882a593Smuzhiyun #define m_BYPASS_WC_ACTIVE		GENMASK(31, 16)
119*4882a593Smuzhiyun #define v_BYPASS_LINE_PADDING_EN(x)	(((x) & 0x1) << 4)
120*4882a593Smuzhiyun #define v_BYPASS_LINE_PADDING_NUM(x)	(((x) & 0x7) << 5)
121*4882a593Smuzhiyun #define v_BYPASS_PKT_PADDING_EN(x)	(((x) & 0x1) << 8)
122*4882a593Smuzhiyun #define v_BYPASS_WC_ACTIVE(x)		(((x) & 0xff) << 16)
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun #define CSITX_STATUS0			0x0070
125*4882a593Smuzhiyun #define CSITX_STATUS1			0x0074
126*4882a593Smuzhiyun #define m_DPHY_PLL_LOCK			BIT(0)
127*4882a593Smuzhiyun #define m_STOPSTATE_CLK			BIT(1)
128*4882a593Smuzhiyun #define m_STOPSTATE_LANE		GENMASK(7, 4)
129*4882a593Smuzhiyun #define PHY_STOPSTATELANE		(m_STOPSTATE_CLK | m_STOPSTATE_LANE)
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun #define CSITX_STATUS2			0x0078
132*4882a593Smuzhiyun #define CSITX_LINE_FLAG_NUM		0x007c
133*4882a593Smuzhiyun #define CSITX_INTR_EN			0x0080
134*4882a593Smuzhiyun #define m_INTR_MASK			GENMASK(26, 16)
135*4882a593Smuzhiyun #define m_FRM_ST_RX			BIT(0 + 16)
136*4882a593Smuzhiyun #define m_FRM_END_RX			BIT(1 + 16)
137*4882a593Smuzhiyun #define m_LINE_END_TX			BIT(2 + 16)
138*4882a593Smuzhiyun #define m_FRM_ST_TX			BIT(3 + 16)
139*4882a593Smuzhiyun #define m_FRM_END_TX			BIT(4 + 16)
140*4882a593Smuzhiyun #define m_LINE_END_RX			BIT(5 + 16)
141*4882a593Smuzhiyun #define m_LINE_FLAG0			BIT(6 + 16)
142*4882a593Smuzhiyun #define m_LINE_FLAG1			BIT(7 + 16)
143*4882a593Smuzhiyun #define m_STOP_STATE			BIT(8 + 16)
144*4882a593Smuzhiyun #define m_PLL_LOCK			BIT(9 + 16)
145*4882a593Smuzhiyun #define m_CSITX_IDLE			BIT(10 + 16)
146*4882a593Smuzhiyun #define v_FRM_ST_RX(x)			(((x) & 0x1) << 0)
147*4882a593Smuzhiyun #define v_FRM_END_RX(x)			(((x) & 0x1) << 1)
148*4882a593Smuzhiyun #define v_LINE_END_TX(x)		(((x) & 0x1) << 2)
149*4882a593Smuzhiyun #define v_FRM_ST_TX(x)			(((x) & 0x1) << 3)
150*4882a593Smuzhiyun #define v_FRM_END_TX(x)			(((x) & 0x1) << 4)
151*4882a593Smuzhiyun #define v_LINE_END_RX(x)		(((x) & 0x1) << 5)
152*4882a593Smuzhiyun #define v_LINE_FLAG0(x)			(((x) & 0x1) << 6)
153*4882a593Smuzhiyun #define v_LINE_FLAG1(x)			(((x) & 0x1) << 7)
154*4882a593Smuzhiyun #define v_STOP_STATE(x)			(((x) & 0x1) << 8)
155*4882a593Smuzhiyun #define v_PLL_LOCK(x)			(((x) & 0x1) << 9)
156*4882a593Smuzhiyun #define v_CSITX_IDLE(x)			(((x) & 0x1) << 10)
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun #define CSITX_INTR_CLR			0x0084
159*4882a593Smuzhiyun #define CSITX_INTR_STATUS		0x0088
160*4882a593Smuzhiyun #define CSITX_INTR_RAW_STATUS		0x008c
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun #define CSITX_ERR_INTR_EN		0x0090
163*4882a593Smuzhiyun #define m_ERR_INTR_EN			GENMASK(11, 0)
164*4882a593Smuzhiyun #define m_ERR_INTR_MASK			GENMASK(27, 16)
165*4882a593Smuzhiyun #define m_IDI_HDR_FIFO_OVERFLOW		BIT(0 + 16)
166*4882a593Smuzhiyun #define m_IDI_HDR_FIFO_UNDERFLOW	BIT(1 + 16)
167*4882a593Smuzhiyun #define m_IDI_PLD_FIFO_OVERFLOW		BIT(2 + 16)
168*4882a593Smuzhiyun #define m_IDI_PLD_FIFO_UNDERFLOW	BIT(3 + 16)
169*4882a593Smuzhiyun #define m_HDR_FIFO_OVERFLOW		BIT(4 + 16)
170*4882a593Smuzhiyun #define m_HDR_FIFO_UNDERFLOW		BIT(5 + 16)
171*4882a593Smuzhiyun #define m_PLD_FIFO_OVERFLOW		BIT(6 + 16)
172*4882a593Smuzhiyun #define m_PLD_FIFO_UNDERFLOW		BIT(7 + 16)
173*4882a593Smuzhiyun #define m_OUTBUFFER_OVERFLOW		BIT(8 + 16)
174*4882a593Smuzhiyun #define m_OUTBUFFER_UNDERFLOW		BIT(9 + 16)
175*4882a593Smuzhiyun #define m_TX_TXREADYHS_OVERFLOW		BIT(10 + 16)
176*4882a593Smuzhiyun #define m_TX_TXREADYHS_UNDERFLOW	BIT(11 + 16)
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun #define CSITX_ERR_INTR_CLR		0x0094
179*4882a593Smuzhiyun #define CSITX_ERR_INTR_STATUS		0x0098
180*4882a593Smuzhiyun #define CSITX_ERR_INTR_RAW_STATUS	0x009c
181*4882a593Smuzhiyun #define CSITX_ULPS_CTRL			0x00a0
182*4882a593Smuzhiyun #define CSITX_LPDT_CTRL			0x00a4
183*4882a593Smuzhiyun #define CSITX_LPDT_DATA			0x00a8
184*4882a593Smuzhiyun #define CSITX_DPHY_CTRL			0x00b0
185*4882a593Smuzhiyun #define m_CSITX_ENABLE_PHY		GENMASK(7, 3)
186*4882a593Smuzhiyun #define v_CSITX_ENABLE_PHY(x)		(((x) & 0x1f) << 3)
187*4882a593Smuzhiyun #define CSITX_DPHY_PPI_CTRL		0x00b4
188*4882a593Smuzhiyun #define CSITX_DPHY_TEST_CTRL		0x00b8
189*4882a593Smuzhiyun #define CSITX_DPHY_ERROR		0x00bc
190*4882a593Smuzhiyun #define CSITX_DPHY_SCAN_CTRL		0x00c0
191*4882a593Smuzhiyun #define CSITX_DPHY_SCANIN		0x00c4
192*4882a593Smuzhiyun #define CSITX_DPHY_SCANOUT		0x00c8
193*4882a593Smuzhiyun #define CSITX_DPHY_BIST			0x00d0
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun #define MIPI_CSI_FMT_RAW8		0x10
196*4882a593Smuzhiyun #define MIPI_CSI_FMT_RAW10		0x11
197*4882a593Smuzhiyun 
198*4882a593Smuzhiyun #define PHY_STATUS_TIMEOUT_US		10000
199*4882a593Smuzhiyun #define CMD_PKT_STATUS_TIMEOUT_US	20000
200*4882a593Smuzhiyun 
201*4882a593Smuzhiyun #define RK_CSI_TX_MAX_RESET		5
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun enum soc_type {
204*4882a593Smuzhiyun 	RK1808,
205*4882a593Smuzhiyun };
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun enum csi_path_mode {
208*4882a593Smuzhiyun 	VOP_PATH,
209*4882a593Smuzhiyun 	BYPASS_PATH
210*4882a593Smuzhiyun };
211*4882a593Smuzhiyun 
212*4882a593Smuzhiyun #define GRF_REG_FIELD(reg, lsb, msb)	((reg << 16) | (lsb << 8) | (msb))
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun enum grf_reg_fields {
215*4882a593Smuzhiyun 	DPIUPDATECFG,
216*4882a593Smuzhiyun 	DPISHUTDN,
217*4882a593Smuzhiyun 	DPICOLORM,
218*4882a593Smuzhiyun 	VOPSEL,
219*4882a593Smuzhiyun 	TURNREQUEST,
220*4882a593Smuzhiyun 	TURNDISABLE,
221*4882a593Smuzhiyun 	FORCETXSTOPMODE,
222*4882a593Smuzhiyun 	FORCERXMODE,
223*4882a593Smuzhiyun 	ENABLE_N,
224*4882a593Smuzhiyun 	MASTERSLAVEZ,
225*4882a593Smuzhiyun 	ENABLECLK,
226*4882a593Smuzhiyun 	BASEDIR,
227*4882a593Smuzhiyun 	DPHY_SEL,
228*4882a593Smuzhiyun 	TXSKEWCALHS,
229*4882a593Smuzhiyun 	MAX_FIELDS,
230*4882a593Smuzhiyun };
231*4882a593Smuzhiyun 
232*4882a593Smuzhiyun struct rockchip_mipi_csi_plat_data {
233*4882a593Smuzhiyun 	const u32 *csi0_grf_reg_fields;
234*4882a593Smuzhiyun 	const u32 *csi1_grf_reg_fields;
235*4882a593Smuzhiyun 	unsigned long max_bit_rate_per_lane;
236*4882a593Smuzhiyun 	enum soc_type soc_type;
237*4882a593Smuzhiyun 	const char * const *rsts;
238*4882a593Smuzhiyun 	int rsts_num;
239*4882a593Smuzhiyun };
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun struct mipi_dphy {
242*4882a593Smuzhiyun 	/* SNPS PHY */
243*4882a593Smuzhiyun 	struct clk *cfg_clk;
244*4882a593Smuzhiyun 	struct clk *ref_clk;
245*4882a593Smuzhiyun 	u16 input_div;
246*4882a593Smuzhiyun 	u16 feedback_div;
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun 	/* Non-SNPS PHY */
249*4882a593Smuzhiyun 	struct phy *phy;
250*4882a593Smuzhiyun 	struct clk *hs_clk;
251*4882a593Smuzhiyun };
252*4882a593Smuzhiyun 
253*4882a593Smuzhiyun struct rockchip_mipi_csi {
254*4882a593Smuzhiyun 	struct drm_encoder encoder;
255*4882a593Smuzhiyun 	struct drm_connector connector;
256*4882a593Smuzhiyun 	struct device_node *client;
257*4882a593Smuzhiyun 	struct mipi_dsi_host dsi_host;
258*4882a593Smuzhiyun 	struct mipi_dphy dphy;
259*4882a593Smuzhiyun 	struct drm_panel *panel;
260*4882a593Smuzhiyun 	struct device *dev;
261*4882a593Smuzhiyun 	struct regmap *grf;
262*4882a593Smuzhiyun 	struct reset_control *tx_rsts[RK_CSI_TX_MAX_RESET];
263*4882a593Smuzhiyun 	void __iomem *regs;
264*4882a593Smuzhiyun 	void __iomem *test_code_regs;
265*4882a593Smuzhiyun 	struct regmap *regmap;
266*4882a593Smuzhiyun 	u32 *regsbak;
267*4882a593Smuzhiyun 	u32 regs_len;
268*4882a593Smuzhiyun 	struct clk *pclk;
269*4882a593Smuzhiyun 	struct clk *ref_clk;
270*4882a593Smuzhiyun 	int irq;
271*4882a593Smuzhiyun 
272*4882a593Smuzhiyun 	unsigned long mode_flags;
273*4882a593Smuzhiyun 	unsigned int lane_mbps; /* per lane */
274*4882a593Smuzhiyun 	u32 channel;
275*4882a593Smuzhiyun 	u32 lanes;
276*4882a593Smuzhiyun 	u32 format;
277*4882a593Smuzhiyun 	struct drm_display_mode mode;
278*4882a593Smuzhiyun 	u32 path_mode; /* vop path or bypass path */
279*4882a593Smuzhiyun 	struct drm_property *csi_tx_path_property;
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun 	const struct rockchip_mipi_csi_plat_data *pdata;
282*4882a593Smuzhiyun };
283*4882a593Smuzhiyun 
284*4882a593Smuzhiyun enum rockchip_mipi_csi_mode {
285*4882a593Smuzhiyun 	DSI_COMMAND_MODE,
286*4882a593Smuzhiyun 	DSI_VIDEO_MODE,
287*4882a593Smuzhiyun };
288*4882a593Smuzhiyun 
289*4882a593Smuzhiyun #endif
290