xref: /OK3568_Linux_fs/u-boot/include/max96755f.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * (C) Copyright 2022 Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #ifndef _MAX96755F_H_
7*4882a593Smuzhiyun #define _MAX96755F_H_
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <linux/bitfield.h>
10*4882a593Smuzhiyun #include <asm-generic/gpio.h>
11*4882a593Smuzhiyun #include <drm_modes.h>
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #define GPIO_A_REG(gpio)	(0x02be + ((gpio) * 3))
14*4882a593Smuzhiyun #define GPIO_B_REG(gpio)	(0x02bf + ((gpio) * 3))
15*4882a593Smuzhiyun #define GPIO_C_REG(gpio)	(0x02c0 + ((gpio) * 3))
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun /* 0000h */
18*4882a593Smuzhiyun #define DEV_ADDR		GENMASK(7, 1)
19*4882a593Smuzhiyun #define CFG_BLOCK		BIT(0)
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun /* 0001h */
22*4882a593Smuzhiyun #define IIC_2_EN		BIT(7)
23*4882a593Smuzhiyun #define IIC_1_EN		BIT(6)
24*4882a593Smuzhiyun #define DIS_REM_CC		BIT(4)
25*4882a593Smuzhiyun #define TX_RATE			GENMASK(3, 2)
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun /* 0002h */
28*4882a593Smuzhiyun #define VID_TX_EN_U		BIT(7)
29*4882a593Smuzhiyun #define VID_TX_EN_Z		BIT(6)
30*4882a593Smuzhiyun #define VID_TX_EN_Y		BIT(5)
31*4882a593Smuzhiyun #define VID_TX_EN_X		BIT(4)
32*4882a593Smuzhiyun #define AUD_TX_EN_Y		BIT(3)
33*4882a593Smuzhiyun #define AUD_TX_EN_X		BIT(2)
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun /* 0003h */
36*4882a593Smuzhiyun #define UART_2_EN		BIT(5)
37*4882a593Smuzhiyun #define UART_1_EN		BIT(4)
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun /* 0005h */
40*4882a593Smuzhiyun #define LOCK_EN			BIT(7)
41*4882a593Smuzhiyun #define ERRB_EN			BIT(6)
42*4882a593Smuzhiyun #define PU_LF3			BIT(3)
43*4882a593Smuzhiyun #define PU_LF2			BIT(2)
44*4882a593Smuzhiyun #define PU_LF1			BIT(1)
45*4882a593Smuzhiyun #define PU_LF0			BIT(0)
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /* 0006h */
48*4882a593Smuzhiyun #define RCLKEN			BIT(5)
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun /* 0010h */
51*4882a593Smuzhiyun #define RESET_ALL		BIT(7)
52*4882a593Smuzhiyun #define RESET_LINK		BIT(6)
53*4882a593Smuzhiyun #define RESET_ONESHOT		BIT(5)
54*4882a593Smuzhiyun #define AUTO_LINK		BIT(4)
55*4882a593Smuzhiyun #define SLEEP			BIT(3)
56*4882a593Smuzhiyun #define REG_ENABLE		BIT(2)
57*4882a593Smuzhiyun #define LINK_CFG		GENMASK(1, 0)
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun /* 0013h */
60*4882a593Smuzhiyun #define LINK_MODE		GENMASK(5, 4)
61*4882a593Smuzhiyun #define	LOCKED			BIT(3)
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /* 0048h */
64*4882a593Smuzhiyun #define REM_MS_EN		BIT(5)
65*4882a593Smuzhiyun #define LOC_MS_EN		BIT(4)
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun /* 0053h */
68*4882a593Smuzhiyun #define TX_SPLIT_MASK_B		BIT(5)
69*4882a593Smuzhiyun #define TX_SPLIT_MASK_A		BIT(4)
70*4882a593Smuzhiyun #define TX_STR_SEL		GENMASK(1, 0)
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun /* 0140h */
73*4882a593Smuzhiyun #define AUD_RX_EN		BIT(0)
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun /* 0170h */
76*4882a593Smuzhiyun #define SPI_EN			BIT(0)
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /* 02beh */
79*4882a593Smuzhiyun #define RES_CFG			BIT(7)
80*4882a593Smuzhiyun #define TX_PRIO			BIT(6)
81*4882a593Smuzhiyun #define TX_COMP_EN		BIT(5)
82*4882a593Smuzhiyun #define GPIO_OUT		BIT(4)
83*4882a593Smuzhiyun #define GPIO_IN			BIT(3)
84*4882a593Smuzhiyun #define GPIO_RX_EN		BIT(2)
85*4882a593Smuzhiyun #define GPIO_TX_EN		BIT(1)
86*4882a593Smuzhiyun #define GPIO_OUT_DIS		BIT(0)
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun /* 02bfh */
89*4882a593Smuzhiyun #define PULL_UPDN_SEL		GENMASK(7, 6)
90*4882a593Smuzhiyun #define OUT_TYPE		BIT(5)
91*4882a593Smuzhiyun #define GPIO_TX_ID		GENMASK(4, 0)
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun /* 02c0h */
94*4882a593Smuzhiyun #define OVR_RES_CFG		BIT(7)
95*4882a593Smuzhiyun #define GPIO_RX_ID		GENMASK(4, 0)
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun /* 0311h */
98*4882a593Smuzhiyun #define START_PORTBU		BIT(7)
99*4882a593Smuzhiyun #define START_PORTBZ		BIT(6)
100*4882a593Smuzhiyun #define START_PORTBY		BIT(5)
101*4882a593Smuzhiyun #define START_PORTBX		BIT(4)
102*4882a593Smuzhiyun #define START_PORTAU		BIT(3)
103*4882a593Smuzhiyun #define START_PORTAZ		BIT(2)
104*4882a593Smuzhiyun #define START_PORTAY		BIT(1)
105*4882a593Smuzhiyun #define START_PORTAX		BIT(0)
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun /* 032ah */
108*4882a593Smuzhiyun #define DV_LOCK			BIT(7)
109*4882a593Smuzhiyun #define DV_SWP_AB		BIT(6)
110*4882a593Smuzhiyun #define LINE_ALT		BIT(5)
111*4882a593Smuzhiyun #define DV_CONV			BIT(2)
112*4882a593Smuzhiyun #define DV_SPL			BIT(1)
113*4882a593Smuzhiyun #define DV_EN			BIT(0)
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun /* 0330h */
116*4882a593Smuzhiyun #define PHY_CONFIG		GENMASK(2, 0)
117*4882a593Smuzhiyun #define MIPI_RX_RESET		BIT(3)
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun /* 0331h */
120*4882a593Smuzhiyun #define NUM_LANES		GENMASK(1, 0)
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun /* 0385h */
123*4882a593Smuzhiyun #define DPI_HSYNC_WIDTH_L	GENMASK(7, 0)
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun /* 0386h */
126*4882a593Smuzhiyun #define DPI_VYSNC_WIDTH_L	GENMASK(7, 0)
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun /* 0387h */
129*4882a593Smuzhiyun #define	DPI_HSYNC_WIDTH_H	GENMASK(3, 0)
130*4882a593Smuzhiyun #define DPI_VSYNC_WIDTH_H	GENMASK(7, 4)
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun /* 03a4h */
133*4882a593Smuzhiyun #define DPI_DE_SKEW_SEL		BIT(1)
134*4882a593Smuzhiyun #define DPI_DESKEW_EN		BIT(0)
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun /* 03a5h */
137*4882a593Smuzhiyun #define DPI_VFP_L		GENMASK(7, 0)
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun /* 03a6h */
140*4882a593Smuzhiyun #define DPI_VFP_H		GENMASK(3, 0)
141*4882a593Smuzhiyun #define DPI_VBP_L		GENMASK(7, 4)
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun /* 03a7h */
144*4882a593Smuzhiyun #define DPI_VBP_H		GENMASK(7, 0)
145*4882a593Smuzhiyun 
146*4882a593Smuzhiyun /* 03a8h */
147*4882a593Smuzhiyun #define DPI_VACT_L		GENMASK(7, 0)
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun /* 03a9h */
150*4882a593Smuzhiyun #define DPI_VACT_H		GENMASK(3, 0)
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun /* 03aah */
153*4882a593Smuzhiyun #define DPI_HFP_L		GENMASK(7, 0)
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun /* 03abh */
156*4882a593Smuzhiyun #define DPI_HFP_H		GENMASK(3, 0)
157*4882a593Smuzhiyun #define DPI_HBP_L		GENMASK(7, 4)
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun /* 03ach */
160*4882a593Smuzhiyun #define DPI_HBP_H		GENMASK(7, 0)
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun /* 03adh */
163*4882a593Smuzhiyun #define DPI_HACT_L		GENMASK(7, 0)
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun /* 03aeh */
166*4882a593Smuzhiyun #define DPI_HACT_H		GENMASK(4, 0)
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun enum link_mode {
169*4882a593Smuzhiyun 	DUAL_LINK,
170*4882a593Smuzhiyun 	LINKA,
171*4882a593Smuzhiyun 	LINKB,
172*4882a593Smuzhiyun 	SPLITTER_MODE,
173*4882a593Smuzhiyun };
174*4882a593Smuzhiyun 
175*4882a593Smuzhiyun struct max96755f_priv {
176*4882a593Smuzhiyun 	struct udevice *dev;
177*4882a593Smuzhiyun 	struct gpio_desc enable_gpio;
178*4882a593Smuzhiyun 	bool split_mode;
179*4882a593Smuzhiyun 	bool dv_swp_ab;
180*4882a593Smuzhiyun 	bool dpi_deskew_en;
181*4882a593Smuzhiyun 	struct drm_display_mode mode;
182*4882a593Smuzhiyun 	u32 num_lanes;
183*4882a593Smuzhiyun 	struct gpio_desc lock_gpio;
184*4882a593Smuzhiyun 	u32 dsi_lane_map[4];
185*4882a593Smuzhiyun };
186*4882a593Smuzhiyun 
187*4882a593Smuzhiyun #endif
188