GNU Linux-libre 5.19-rc6-gnu
[releases.git] / drivers / gpu / drm / rcar-du / rcar_mipi_dsi_regs.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * rcar_mipi_dsi_regs.h  --  R-Car MIPI DSI Interface Registers Definitions
4  *
5  * Copyright (C) 2020 Renesas Electronics Corporation
6  */
7
8 #ifndef __RCAR_MIPI_DSI_REGS_H__
9 #define __RCAR_MIPI_DSI_REGS_H__
10
11 #define LINKSR                          0x010
12 #define LINKSR_LPBUSY                   (1 << 1)
13 #define LINKSR_HSBUSY                   (1 << 0)
14
15 /*
16  * Video Mode Register
17  */
18 #define TXVMSETR                        0x180
19 #define TXVMSETR_SYNSEQ_PULSES          (0 << 16)
20 #define TXVMSETR_SYNSEQ_EVENTS          (1 << 16)
21 #define TXVMSETR_VSTPM                  (1 << 15)
22 #define TXVMSETR_PIXWDTH                (1 << 8)
23 #define TXVMSETR_VSEN_EN                (1 << 4)
24 #define TXVMSETR_VSEN_DIS               (0 << 4)
25 #define TXVMSETR_HFPBPEN_EN             (1 << 2)
26 #define TXVMSETR_HFPBPEN_DIS            (0 << 2)
27 #define TXVMSETR_HBPBPEN_EN             (1 << 1)
28 #define TXVMSETR_HBPBPEN_DIS            (0 << 1)
29 #define TXVMSETR_HSABPEN_EN             (1 << 0)
30 #define TXVMSETR_HSABPEN_DIS            (0 << 0)
31
32 #define TXVMCR                          0x190
33 #define TXVMCR_VFCLR                    (1 << 12)
34 #define TXVMCR_EN_VIDEO                 (1 << 0)
35
36 #define TXVMSR                          0x1a0
37 #define TXVMSR_STR                      (1 << 16)
38 #define TXVMSR_VFRDY                    (1 << 12)
39 #define TXVMSR_ACT                      (1 << 8)
40 #define TXVMSR_RDY                      (1 << 0)
41
42 #define TXVMSCR                         0x1a4
43 #define TXVMSCR_STR                     (1 << 16)
44
45 #define TXVMPSPHSETR                    0x1c0
46 #define TXVMPSPHSETR_DT_RGB16           (0x0e << 16)
47 #define TXVMPSPHSETR_DT_RGB18           (0x1e << 16)
48 #define TXVMPSPHSETR_DT_RGB18_LS        (0x2e << 16)
49 #define TXVMPSPHSETR_DT_RGB24           (0x3e << 16)
50 #define TXVMPSPHSETR_DT_YCBCR16         (0x2c << 16)
51
52 #define TXVMVPRMSET0R                   0x1d0
53 #define TXVMVPRMSET0R_HSPOL_HIG         (0 << 17)
54 #define TXVMVPRMSET0R_HSPOL_LOW         (1 << 17)
55 #define TXVMVPRMSET0R_VSPOL_HIG         (0 << 16)
56 #define TXVMVPRMSET0R_VSPOL_LOW         (1 << 16)
57 #define TXVMVPRMSET0R_CSPC_RGB          (0 << 4)
58 #define TXVMVPRMSET0R_CSPC_YCbCr        (1 << 4)
59 #define TXVMVPRMSET0R_BPP_16            (0 << 0)
60 #define TXVMVPRMSET0R_BPP_18            (1 << 0)
61 #define TXVMVPRMSET0R_BPP_24            (2 << 0)
62
63 #define TXVMVPRMSET1R                   0x1d4
64 #define TXVMVPRMSET1R_VACTIVE(x)        (((x) & 0x7fff) << 16)
65 #define TXVMVPRMSET1R_VSA(x)            (((x) & 0xfff) << 0)
66
67 #define TXVMVPRMSET2R                   0x1d8
68 #define TXVMVPRMSET2R_VFP(x)            (((x) & 0x1fff) << 16)
69 #define TXVMVPRMSET2R_VBP(x)            (((x) & 0x1fff) << 0)
70
71 #define TXVMVPRMSET3R                   0x1dc
72 #define TXVMVPRMSET3R_HACTIVE(x)        (((x) & 0x7fff) << 16)
73 #define TXVMVPRMSET3R_HSA(x)            (((x) & 0xfff) << 0)
74
75 #define TXVMVPRMSET4R                   0x1e0
76 #define TXVMVPRMSET4R_HFP(x)            (((x) & 0x1fff) << 16)
77 #define TXVMVPRMSET4R_HBP(x)            (((x) & 0x1fff) << 0)
78
79 /*
80  * PHY-Protocol Interface (PPI) Registers
81  */
82 #define PPISETR                         0x700
83 #define PPISETR_DLEN_0                  (0x1 << 0)
84 #define PPISETR_DLEN_1                  (0x3 << 0)
85 #define PPISETR_DLEN_2                  (0x7 << 0)
86 #define PPISETR_DLEN_3                  (0xf << 0)
87 #define PPISETR_CLEN                    (1 << 8)
88
89 #define PPICLCR                         0x710
90 #define PPICLCR_TXREQHS                 (1 << 8)
91 #define PPICLCR_TXULPSEXT               (1 << 1)
92 #define PPICLCR_TXULPSCLK               (1 << 0)
93
94 #define PPICLSR                         0x720
95 #define PPICLSR_HSTOLP                  (1 << 27)
96 #define PPICLSR_TOHS                    (1 << 26)
97 #define PPICLSR_STPST                   (1 << 0)
98
99 #define PPICLSCR                        0x724
100 #define PPICLSCR_HSTOLP                 (1 << 27)
101 #define PPICLSCR_TOHS                   (1 << 26)
102
103 #define PPIDLSR                         0x760
104 #define PPIDLSR_STPST                   (0xf << 0)
105
106 /*
107  * Clocks registers
108  */
109 #define LPCLKSET                        0x1000
110 #define LPCLKSET_CKEN                   (1 << 8)
111 #define LPCLKSET_LPCLKDIV(x)            (((x) & 0x3f) << 0)
112
113 #define CFGCLKSET                       0x1004
114 #define CFGCLKSET_CKEN                  (1 << 8)
115 #define CFGCLKSET_CFGCLKDIV(x)          (((x) & 0x3f) << 0)
116
117 #define DOTCLKDIV                       0x1008
118 #define DOTCLKDIV_CKEN                  (1 << 8)
119 #define DOTCLKDIV_DOTCLKDIV(x)          (((x) & 0x3f) << 0)
120
121 #define VCLKSET                         0x100c
122 #define VCLKSET_CKEN                    (1 << 16)
123 #define VCLKSET_COLOR_RGB               (0 << 8)
124 #define VCLKSET_COLOR_YCC               (1 << 8)
125 #define VCLKSET_DIV(x)                  (((x) & 0x3) << 4)
126 #define VCLKSET_BPP_16                  (0 << 2)
127 #define VCLKSET_BPP_18                  (1 << 2)
128 #define VCLKSET_BPP_18L                 (2 << 2)
129 #define VCLKSET_BPP_24                  (3 << 2)
130 #define VCLKSET_LANE(x)                 (((x) & 0x3) << 0)
131
132 #define VCLKEN                          0x1010
133 #define VCLKEN_CKEN                     (1 << 0)
134
135 #define PHYSETUP                        0x1014
136 #define PHYSETUP_HSFREQRANGE(x)         (((x) & 0x7f) << 16)
137 #define PHYSETUP_HSFREQRANGE_MASK       (0x7f << 16)
138 #define PHYSETUP_CFGCLKFREQRANGE(x)     (((x) & 0x3f) << 8)
139 #define PHYSETUP_SHUTDOWNZ              (1 << 1)
140 #define PHYSETUP_RSTZ                   (1 << 0)
141
142 #define CLOCKSET1                       0x101c
143 #define CLOCKSET1_LOCK_PHY              (1 << 17)
144 #define CLOCKSET1_LOCK                  (1 << 16)
145 #define CLOCKSET1_CLKSEL                (1 << 8)
146 #define CLOCKSET1_CLKINSEL_EXTAL        (0 << 2)
147 #define CLOCKSET1_CLKINSEL_DIG          (1 << 2)
148 #define CLOCKSET1_CLKINSEL_DU           (1 << 3)
149 #define CLOCKSET1_SHADOW_CLEAR          (1 << 1)
150 #define CLOCKSET1_UPDATEPLL             (1 << 0)
151
152 #define CLOCKSET2                       0x1020
153 #define CLOCKSET2_M(x)                  (((x) & 0xfff) << 16)
154 #define CLOCKSET2_VCO_CNTRL(x)          (((x) & 0x3f) << 8)
155 #define CLOCKSET2_N(x)                  (((x) & 0xf) << 0)
156
157 #define CLOCKSET3                       0x1024
158 #define CLOCKSET3_PROP_CNTRL(x)         (((x) & 0x3f) << 24)
159 #define CLOCKSET3_INT_CNTRL(x)          (((x) & 0x3f) << 16)
160 #define CLOCKSET3_CPBIAS_CNTRL(x)       (((x) & 0x7f) << 8)
161 #define CLOCKSET3_GMP_CNTRL(x)          (((x) & 0x3) << 0)
162
163 #define PHTW                            0x1034
164 #define PHTW_DWEN                       (1 << 24)
165 #define PHTW_TESTDIN_DATA(x)            (((x) & 0xff) << 16)
166 #define PHTW_CWEN                       (1 << 8)
167 #define PHTW_TESTDIN_CODE(x)            (((x) & 0xff) << 0)
168
169 #define PHTC                            0x103c
170 #define PHTC_TESTCLR                    (1 << 0)
171
172 #endif /* __RCAR_MIPI_DSI_REGS_H__ */