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