xref: /rk3399_rockchip-uboot/include/max96755f.h (revision da42fac8c19436e7eda2506ab748bad718cf4e4a)
1787e7c25SGuochun Huang /* SPDX-License-Identifier: GPL-2.0 */
2787e7c25SGuochun Huang /*
3787e7c25SGuochun Huang  * (C) Copyright 2022 Rockchip Electronics Co., Ltd
4787e7c25SGuochun Huang  */
5787e7c25SGuochun Huang 
6787e7c25SGuochun Huang #ifndef _MAX96755F_H_
7787e7c25SGuochun Huang #define _MAX96755F_H_
8787e7c25SGuochun Huang 
9787e7c25SGuochun Huang #include <linux/bitfield.h>
10787e7c25SGuochun Huang #include <asm-generic/gpio.h>
11787e7c25SGuochun Huang #include <drm_modes.h>
12787e7c25SGuochun Huang 
13787e7c25SGuochun Huang #define GPIO_A_REG(gpio)	(0x02be + ((gpio) * 3))
14787e7c25SGuochun Huang #define GPIO_B_REG(gpio)	(0x02bf + ((gpio) * 3))
15787e7c25SGuochun Huang #define GPIO_C_REG(gpio)	(0x02c0 + ((gpio) * 3))
16787e7c25SGuochun Huang 
17787e7c25SGuochun Huang /* 0000h */
18787e7c25SGuochun Huang #define DEV_ADDR		GENMASK(7, 1)
19787e7c25SGuochun Huang #define CFG_BLOCK		BIT(0)
20787e7c25SGuochun Huang 
21787e7c25SGuochun Huang /* 0001h */
22787e7c25SGuochun Huang #define IIC_2_EN		BIT(7)
23787e7c25SGuochun Huang #define IIC_1_EN		BIT(6)
24787e7c25SGuochun Huang #define DIS_REM_CC		BIT(4)
25787e7c25SGuochun Huang #define TX_RATE			GENMASK(3, 2)
26787e7c25SGuochun Huang 
27787e7c25SGuochun Huang /* 0002h */
28787e7c25SGuochun Huang #define VID_TX_EN_U		BIT(7)
29787e7c25SGuochun Huang #define VID_TX_EN_Z		BIT(6)
30787e7c25SGuochun Huang #define VID_TX_EN_Y		BIT(5)
31787e7c25SGuochun Huang #define VID_TX_EN_X		BIT(4)
32787e7c25SGuochun Huang #define AUD_TX_EN_Y		BIT(3)
33787e7c25SGuochun Huang #define AUD_TX_EN_X		BIT(2)
34787e7c25SGuochun Huang 
35787e7c25SGuochun Huang /* 0003h */
36787e7c25SGuochun Huang #define UART_2_EN		BIT(5)
37787e7c25SGuochun Huang #define UART_1_EN		BIT(4)
38787e7c25SGuochun Huang 
39787e7c25SGuochun Huang /* 0005h */
40787e7c25SGuochun Huang #define LOCK_EN			BIT(7)
41787e7c25SGuochun Huang #define ERRB_EN			BIT(6)
42787e7c25SGuochun Huang #define PU_LF3			BIT(3)
43787e7c25SGuochun Huang #define PU_LF2			BIT(2)
44787e7c25SGuochun Huang #define PU_LF1			BIT(1)
45787e7c25SGuochun Huang #define PU_LF0			BIT(0)
46787e7c25SGuochun Huang 
47787e7c25SGuochun Huang /* 0006h */
48787e7c25SGuochun Huang #define RCLKEN			BIT(5)
49787e7c25SGuochun Huang 
50787e7c25SGuochun Huang /* 0010h */
51787e7c25SGuochun Huang #define RESET_ALL		BIT(7)
52787e7c25SGuochun Huang #define RESET_LINK		BIT(6)
53787e7c25SGuochun Huang #define RESET_ONESHOT		BIT(5)
54787e7c25SGuochun Huang #define AUTO_LINK		BIT(4)
55787e7c25SGuochun Huang #define SLEEP			BIT(3)
56787e7c25SGuochun Huang #define REG_ENABLE		BIT(2)
57787e7c25SGuochun Huang #define LINK_CFG		GENMASK(1, 0)
58787e7c25SGuochun Huang 
59787e7c25SGuochun Huang /* 0013h */
60787e7c25SGuochun Huang #define LINK_MODE		GENMASK(5, 4)
61787e7c25SGuochun Huang #define	LOCKED			BIT(3)
62787e7c25SGuochun Huang 
63787e7c25SGuochun Huang /* 0048h */
64787e7c25SGuochun Huang #define REM_MS_EN		BIT(5)
65787e7c25SGuochun Huang #define LOC_MS_EN		BIT(4)
66787e7c25SGuochun Huang 
67787e7c25SGuochun Huang /* 0053h */
68787e7c25SGuochun Huang #define TX_SPLIT_MASK_B		BIT(5)
69787e7c25SGuochun Huang #define TX_SPLIT_MASK_A		BIT(4)
70787e7c25SGuochun Huang #define TX_STR_SEL		GENMASK(1, 0)
71787e7c25SGuochun Huang 
72787e7c25SGuochun Huang /* 0140h */
73787e7c25SGuochun Huang #define AUD_RX_EN		BIT(0)
74787e7c25SGuochun Huang 
75787e7c25SGuochun Huang /* 0170h */
76787e7c25SGuochun Huang #define SPI_EN			BIT(0)
77787e7c25SGuochun Huang 
78787e7c25SGuochun Huang /* 02beh */
79787e7c25SGuochun Huang #define RES_CFG			BIT(7)
80787e7c25SGuochun Huang #define TX_PRIO			BIT(6)
81787e7c25SGuochun Huang #define TX_COMP_EN		BIT(5)
82787e7c25SGuochun Huang #define GPIO_OUT		BIT(4)
83787e7c25SGuochun Huang #define GPIO_IN			BIT(3)
84787e7c25SGuochun Huang #define GPIO_RX_EN		BIT(2)
85787e7c25SGuochun Huang #define GPIO_TX_EN		BIT(1)
86787e7c25SGuochun Huang #define GPIO_OUT_DIS		BIT(0)
87787e7c25SGuochun Huang 
88787e7c25SGuochun Huang /* 02bfh */
89787e7c25SGuochun Huang #define PULL_UPDN_SEL		GENMASK(7, 6)
90787e7c25SGuochun Huang #define OUT_TYPE		BIT(5)
91787e7c25SGuochun Huang #define GPIO_TX_ID		GENMASK(4, 0)
92787e7c25SGuochun Huang 
93787e7c25SGuochun Huang /* 02c0h */
94787e7c25SGuochun Huang #define OVR_RES_CFG		BIT(7)
95787e7c25SGuochun Huang #define GPIO_RX_ID		GENMASK(4, 0)
96787e7c25SGuochun Huang 
97787e7c25SGuochun Huang /* 0311h */
98787e7c25SGuochun Huang #define START_PORTBU		BIT(7)
99787e7c25SGuochun Huang #define START_PORTBZ		BIT(6)
100787e7c25SGuochun Huang #define START_PORTBY		BIT(5)
101787e7c25SGuochun Huang #define START_PORTBX		BIT(4)
102787e7c25SGuochun Huang #define START_PORTAU		BIT(3)
103787e7c25SGuochun Huang #define START_PORTAZ		BIT(2)
104787e7c25SGuochun Huang #define START_PORTAY		BIT(1)
105787e7c25SGuochun Huang #define START_PORTAX		BIT(0)
106787e7c25SGuochun Huang 
107787e7c25SGuochun Huang /* 032ah */
108787e7c25SGuochun Huang #define DV_LOCK			BIT(7)
109787e7c25SGuochun Huang #define DV_SWP_AB		BIT(6)
110787e7c25SGuochun Huang #define LINE_ALT		BIT(5)
111787e7c25SGuochun Huang #define DV_CONV			BIT(2)
112787e7c25SGuochun Huang #define DV_SPL			BIT(1)
113787e7c25SGuochun Huang #define DV_EN			BIT(0)
114787e7c25SGuochun Huang 
115787e7c25SGuochun Huang /* 0330h */
116787e7c25SGuochun Huang #define PHY_CONFIG		GENMASK(2, 0)
117787e7c25SGuochun Huang #define MIPI_RX_RESET		BIT(3)
118787e7c25SGuochun Huang 
119787e7c25SGuochun Huang /* 0331h */
120787e7c25SGuochun Huang #define NUM_LANES		GENMASK(1, 0)
121787e7c25SGuochun Huang 
122787e7c25SGuochun Huang /* 0385h */
123787e7c25SGuochun Huang #define DPI_HSYNC_WIDTH_L	GENMASK(7, 0)
124787e7c25SGuochun Huang 
125787e7c25SGuochun Huang /* 0386h */
126787e7c25SGuochun Huang #define DPI_VYSNC_WIDTH_L	GENMASK(7, 0)
127787e7c25SGuochun Huang 
128787e7c25SGuochun Huang /* 0387h */
129787e7c25SGuochun Huang #define	DPI_HSYNC_WIDTH_H	GENMASK(3, 0)
130787e7c25SGuochun Huang #define DPI_VSYNC_WIDTH_H	GENMASK(7, 4)
131787e7c25SGuochun Huang 
132787e7c25SGuochun Huang /* 03a4h */
133787e7c25SGuochun Huang #define DPI_DE_SKEW_SEL		BIT(1)
134787e7c25SGuochun Huang #define DPI_DESKEW_EN		BIT(0)
135787e7c25SGuochun Huang 
136787e7c25SGuochun Huang /* 03a5h */
137787e7c25SGuochun Huang #define DPI_VFP_L		GENMASK(7, 0)
138787e7c25SGuochun Huang 
139787e7c25SGuochun Huang /* 03a6h */
140787e7c25SGuochun Huang #define DPI_VFP_H		GENMASK(3, 0)
141787e7c25SGuochun Huang #define DPI_VBP_L		GENMASK(7, 4)
142787e7c25SGuochun Huang 
143787e7c25SGuochun Huang /* 03a7h */
144787e7c25SGuochun Huang #define DPI_VBP_H		GENMASK(7, 0)
145787e7c25SGuochun Huang 
146787e7c25SGuochun Huang /* 03a8h */
147787e7c25SGuochun Huang #define DPI_VACT_L		GENMASK(7, 0)
148787e7c25SGuochun Huang 
149787e7c25SGuochun Huang /* 03a9h */
150787e7c25SGuochun Huang #define DPI_VACT_H		GENMASK(3, 0)
151787e7c25SGuochun Huang 
152787e7c25SGuochun Huang /* 03aah */
153787e7c25SGuochun Huang #define DPI_HFP_L		GENMASK(7, 0)
154787e7c25SGuochun Huang 
155787e7c25SGuochun Huang /* 03abh */
156787e7c25SGuochun Huang #define DPI_HFP_H		GENMASK(3, 0)
157787e7c25SGuochun Huang #define DPI_HBP_L		GENMASK(7, 4)
158787e7c25SGuochun Huang 
159787e7c25SGuochun Huang /* 03ach */
160787e7c25SGuochun Huang #define DPI_HBP_H		GENMASK(7, 0)
161787e7c25SGuochun Huang 
162787e7c25SGuochun Huang /* 03adh */
163787e7c25SGuochun Huang #define DPI_HACT_L		GENMASK(7, 0)
164787e7c25SGuochun Huang 
165787e7c25SGuochun Huang /* 03aeh */
166787e7c25SGuochun Huang #define DPI_HACT_H		GENMASK(4, 0)
167787e7c25SGuochun Huang 
168787e7c25SGuochun Huang enum link_mode {
169787e7c25SGuochun Huang 	DUAL_LINK,
170787e7c25SGuochun Huang 	LINKA,
171787e7c25SGuochun Huang 	LINKB,
172787e7c25SGuochun Huang 	SPLITTER_MODE,
173787e7c25SGuochun Huang };
174787e7c25SGuochun Huang 
175787e7c25SGuochun Huang struct max96755f_priv {
176787e7c25SGuochun Huang 	struct udevice *dev;
177787e7c25SGuochun Huang 	struct gpio_desc enable_gpio;
178787e7c25SGuochun Huang 	bool split_mode;
179787e7c25SGuochun Huang 	bool dv_swp_ab;
180787e7c25SGuochun Huang 	bool dpi_deskew_en;
181787e7c25SGuochun Huang 	struct drm_display_mode mode;
182787e7c25SGuochun Huang 	u32 num_lanes;
183f1efa5adSGuochun Huang 	struct gpio_desc lock_gpio;
184*da42fac8SGuochun Huang 	u32 dsi_lane_map[4];
185787e7c25SGuochun Huang };
186787e7c25SGuochun Huang 
187787e7c25SGuochun Huang #endif
188