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