Lines Matching +full:0 +full:x1c00
31 #define TREF_REG 0x00
32 #define TREF_TREF BIT(0)
35 #define SRST_REG 0x04
36 #define SRST_SRST BIT(0)
39 #define PHYCNT_REG 0x08
46 #define PHYCNT_ENABLE_0 BIT(0)
49 #define CHKSUM_REG 0x0c
51 #define CHKSUM_CRC_EN BIT(0)
55 * VCDT[0-15]: Channel 0 VCDT[16-31]: Channel 1
56 * VCDT2[0-15]: Channel 2 VCDT2[16-31]: Channel 3
58 #define VCDT_REG 0x10
59 #define VCDT2_REG 0x14
61 #define VCDT_SEL_VC(n) (((n) & 0x3) << 8)
63 #define VCDT_SEL_DT(n) (((n) & 0x3f) << 0)
66 #define FRDT_REG 0x18
69 #define FLD_REG 0x1c
70 #define FLD_FLD_NUM(n) (((n) & 0xff) << 16)
71 #define FLD_DET_SEL(n) (((n) & 0x3) << 4)
75 #define FLD_FLD_EN BIT(0)
78 #define ASTBY_REG 0x20
80 /* Long Data Type Setting 0 */
81 #define LNGDT0_REG 0x28
84 #define LNGDT1_REG 0x2c
87 #define INTEN_REG 0x30
93 #define INTCLOSE_REG 0x34
96 #define INTSTATE_REG 0x38
101 #define INTERRSTATE_REG 0x3c
104 #define SHPDAT_REG 0x40
107 #define SHPCNT_REG 0x44
110 #define LINKCNT_REG 0x48
116 #define LSWAP_REG 0x4c
117 #define LSWAP_L3SEL(n) (((n) & 0x3) << 6)
118 #define LSWAP_L2SEL(n) (((n) & 0x3) << 4)
119 #define LSWAP_L1SEL(n) (((n) & 0x3) << 2)
120 #define LSWAP_L0SEL(n) (((n) & 0x3) << 0)
123 #define PHTW_REG 0x50
125 #define PHTW_TESTDIN_DATA(n) (((n & 0xff)) << 16)
127 #define PHTW_TESTDIN_CODE(n) ((n & 0xff))
129 #define PHYFRX_REG 0x64
133 #define PHYFRX_FORCERX_MODE_0 BIT(0)
136 #define V4H_N_LANES_REG 0x0004
137 #define V4H_CSI2_RESETN_REG 0x0008
138 #define V4H_PHY_MODE_REG 0x001c
139 #define V4H_PHY_SHUTDOWNZ_REG 0x0040
140 #define V4H_DPHY_RSTZ_REG 0x0044
141 #define V4H_FLDC_REG 0x0804
142 #define V4H_FLDD_REG 0x0808
143 #define V4H_IDIC_REG 0x0810
144 #define V4H_PHY_EN_REG 0x2000
146 #define V4H_ST_PHYST_REG 0x2814
151 #define V4H_ST_PHYST_ST_STOPSTATE_0 BIT(0)
154 #define V4H_PPI_STARTUP_RW_COMMON_DPHY_REG(n) (0x21800 + ((n) * 2)) /* n = 0 - 9 */
155 #define V4H_PPI_STARTUP_RW_COMMON_STARTUP_1_1_REG 0x21822
156 #define V4H_PPI_CALIBCTRL_RW_COMMON_BG_0_REG 0x2184c
157 #define V4H_PPI_RW_LPDCOCAL_TIMEBASE_REG 0x21c02
158 #define V4H_PPI_RW_LPDCOCAL_NREF_REG 0x21c04
159 #define V4H_PPI_RW_LPDCOCAL_NREF_RANGE_REG 0x21c06
160 #define V4H_PPI_RW_LPDCOCAL_TWAIT_CONFIG_REG 0x21c0a
161 #define V4H_PPI_RW_LPDCOCAL_VT_CONFIG_REG 0x21c0c
162 #define V4H_PPI_RW_LPDCOCAL_COARSE_CFG_REG 0x21c10
163 #define V4H_PPI_RW_COMMON_CFG_REG 0x21c6c
164 #define V4H_PPI_RW_TERMCAL_CFG_0_REG 0x21c80
165 #define V4H_PPI_RW_OFFSETCAL_CFG_0_REG 0x21ca0
168 #define V4H_CORE_DIG_IOCTRL_RW_AFE_LANE0_CTRL_2_REG(n) (0x22040 + ((n) * 2)) /* n = 0 - 15 */
169 #define V4H_CORE_DIG_IOCTRL_RW_AFE_LANE1_CTRL_2_REG(n) (0x22440 + ((n) * 2)) /* n = 0 - 15 */
170 #define V4H_CORE_DIG_IOCTRL_RW_AFE_LANE2_CTRL_2_REG(n) (0x22840 + ((n) * 2)) /* n = 0 - 15 */
171 #define V4H_CORE_DIG_IOCTRL_RW_AFE_LANE3_CTRL_2_REG(n) (0x22c40 + ((n) * 2)) /* n = 0 - 15 */
172 #define V4H_CORE_DIG_IOCTRL_RW_AFE_LANE4_CTRL_2_REG(n) (0x23040 + ((n) * 2)) /* n = 0 - 15 */
173 #define V4H_CORE_DIG_IOCTRL_RW_AFE_CB_CTRL_2_REG(n) (0x23840 + ((n) * 2)) /* n = 0 - 11 */
174 #define V4H_CORE_DIG_RW_COMMON_REG(n) (0x23880 + ((n) * 2)) /* n = 0 - 15 */
175 #define V4H_CORE_DIG_ANACTRL_RW_COMMON_ANACTRL_REG(n) (0x239e0 + ((n) * 2)) /* n = 0 - 3 */
176 #define V4H_CORE_DIG_CLANE_1_RW_CFG_0_REG 0x2a400
177 #define V4H_CORE_DIG_CLANE_1_RW_HS_TX_6_REG 0x2a60c
180 #define V4H_CORE_DIG_RW_TRIO0_REG(n) (0x22100 + ((n) * 2)) /* n = 0 - 3 */
181 #define V4H_CORE_DIG_RW_TRIO1_REG(n) (0x22500 + ((n) * 2)) /* n = 0 - 3 */
182 #define V4H_CORE_DIG_RW_TRIO2_REG(n) (0x22900 + ((n) * 2)) /* n = 0 - 3 */
183 #define V4H_CORE_DIG_CLANE_0_RW_LP_0_REG 0x2a080
184 #define V4H_CORE_DIG_CLANE_0_RW_HS_RX_REG(n) (0x2a100 + ((n) * 2)) /* n = 0 - 6 */
185 #define V4H_CORE_DIG_CLANE_1_RW_LP_0_REG 0x2a480
186 #define V4H_CORE_DIG_CLANE_1_RW_HS_RX_REG(n) (0x2a500 + ((n) * 2)) /* n = 0 - 6 */
187 #define V4H_CORE_DIG_CLANE_2_RW_LP_0_REG 0x2a880
188 #define V4H_CORE_DIG_CLANE_2_RW_HS_RX_REG(n) (0x2a900 + ((n) * 2)) /* n = 0 - 6 */
201 …{ .msps = 80, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x0134, .trio2 = 0x6a, .lane27 = 0x0000, .l…
202 …{ .msps = 100, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x00f5, .trio2 = 0x55, .lane27 = 0x0000, .l…
203 …{ .msps = 200, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x0077, .trio2 = 0x2b, .lane27 = 0x0000, .l…
204 …{ .msps = 300, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x004d, .trio2 = 0x1d, .lane27 = 0x0000, .l…
205 …{ .msps = 400, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x0038, .trio2 = 0x16, .lane27 = 0x0000, .l…
206 …{ .msps = 500, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x002b, .trio2 = 0x12, .lane27 = 0x0000, .l…
207 …{ .msps = 600, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x0023, .trio2 = 0x0f, .lane27 = 0x0000, .l…
208 …{ .msps = 700, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x001d, .trio2 = 0x0d, .lane27 = 0x0000, .l…
209 …{ .msps = 800, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x0018, .trio2 = 0x0c, .lane27 = 0x0000, .l…
210 …{ .msps = 900, .rx2 = 0x38, .trio0 = 0x024a, .trio1 = 0x0015, .trio2 = 0x0b, .lane27 = 0x0000, .l…
211 …{ .msps = 1000, .rx2 = 0x3e, .trio0 = 0x024a, .trio1 = 0x0012, .trio2 = 0x0a, .lane27 = 0x0400, .l…
212 …{ .msps = 1100, .rx2 = 0x44, .trio0 = 0x024a, .trio1 = 0x000f, .trio2 = 0x09, .lane27 = 0x0800, .l…
213 …{ .msps = 1200, .rx2 = 0x4a, .trio0 = 0x024a, .trio1 = 0x000e, .trio2 = 0x08, .lane27 = 0x0c00, .l…
214 …{ .msps = 1300, .rx2 = 0x51, .trio0 = 0x024a, .trio1 = 0x000c, .trio2 = 0x08, .lane27 = 0x0c00, .l…
215 …{ .msps = 1400, .rx2 = 0x57, .trio0 = 0x024a, .trio1 = 0x000b, .trio2 = 0x07, .lane27 = 0x1000, .l…
216 …{ .msps = 1500, .rx2 = 0x5d, .trio0 = 0x044a, .trio1 = 0x0009, .trio2 = 0x07, .lane27 = 0x1000, .l…
217 …{ .msps = 1600, .rx2 = 0x63, .trio0 = 0x044a, .trio1 = 0x0008, .trio2 = 0x07, .lane27 = 0x1400, .l…
218 …{ .msps = 1700, .rx2 = 0x6a, .trio0 = 0x044a, .trio1 = 0x0007, .trio2 = 0x06, .lane27 = 0x1400, .l…
219 …{ .msps = 1800, .rx2 = 0x70, .trio0 = 0x044a, .trio1 = 0x0007, .trio2 = 0x06, .lane27 = 0x1400, .l…
220 …{ .msps = 1900, .rx2 = 0x76, .trio0 = 0x044a, .trio1 = 0x0006, .trio2 = 0x06, .lane27 = 0x1400, .l…
221 …{ .msps = 2000, .rx2 = 0x7c, .trio0 = 0x044a, .trio1 = 0x0005, .trio2 = 0x06, .lane27 = 0x1800, .l…
222 …{ .msps = 2100, .rx2 = 0x83, .trio0 = 0x044a, .trio1 = 0x0005, .trio2 = 0x05, .lane27 = 0x1800, .l…
223 …{ .msps = 2200, .rx2 = 0x89, .trio0 = 0x064a, .trio1 = 0x0004, .trio2 = 0x05, .lane27 = 0x1800, .l…
224 …{ .msps = 2300, .rx2 = 0x8f, .trio0 = 0x064a, .trio1 = 0x0003, .trio2 = 0x05, .lane27 = 0x1800, .l…
225 …{ .msps = 2400, .rx2 = 0x95, .trio0 = 0x064a, .trio1 = 0x0003, .trio2 = 0x05, .lane27 = 0x1800, .l…
226 …{ .msps = 2500, .rx2 = 0x9c, .trio0 = 0x064a, .trio1 = 0x0003, .trio2 = 0x05, .lane27 = 0x1c00, .l…
227 …{ .msps = 2600, .rx2 = 0xa2, .trio0 = 0x064a, .trio1 = 0x0002, .trio2 = 0x05, .lane27 = 0x1c00, .l…
228 …{ .msps = 2700, .rx2 = 0xa8, .trio0 = 0x064a, .trio1 = 0x0002, .trio2 = 0x05, .lane27 = 0x1c00, .l…
229 …{ .msps = 2800, .rx2 = 0xae, .trio0 = 0x064a, .trio1 = 0x0002, .trio2 = 0x04, .lane27 = 0x1c00, .l…
230 …{ .msps = 2900, .rx2 = 0xb5, .trio0 = 0x084a, .trio1 = 0x0001, .trio2 = 0x04, .lane27 = 0x1c00, .l…
231 …{ .msps = 3000, .rx2 = 0xbb, .trio0 = 0x084a, .trio1 = 0x0001, .trio2 = 0x04, .lane27 = 0x1c00, .l…
232 …{ .msps = 3100, .rx2 = 0xc1, .trio0 = 0x084a, .trio1 = 0x0001, .trio2 = 0x04, .lane27 = 0x1c00, .l…
233 …{ .msps = 3200, .rx2 = 0xc7, .trio0 = 0x084a, .trio1 = 0x0001, .trio2 = 0x04, .lane27 = 0x1c00, .l…
234 …{ .msps = 3300, .rx2 = 0xce, .trio0 = 0x084a, .trio1 = 0x0001, .trio2 = 0x04, .lane27 = 0x1c00, .l…
235 …{ .msps = 3400, .rx2 = 0xd4, .trio0 = 0x084a, .trio1 = 0x0001, .trio2 = 0x04, .lane27 = 0x1c00, .l…
236 …{ .msps = 3500, .rx2 = 0xda, .trio0 = 0x084a, .trio1 = 0x0001, .trio2 = 0x04, .lane27 = 0x1c00, .l…
251 { .mbps = 1500, .reg = 0xcc },
252 { .mbps = 1550, .reg = 0x1d },
253 { .mbps = 1600, .reg = 0x27 },
254 { .mbps = 1650, .reg = 0x30 },
255 { .mbps = 1700, .reg = 0x39 },
256 { .mbps = 1750, .reg = 0x42 },
257 { .mbps = 1800, .reg = 0x4b },
258 { .mbps = 1850, .reg = 0x55 },
259 { .mbps = 1900, .reg = 0x5e },
260 { .mbps = 1950, .reg = 0x67 },
261 { .mbps = 2000, .reg = 0x71 },
262 { .mbps = 2050, .reg = 0x79 },
263 { .mbps = 2100, .reg = 0x83 },
264 { .mbps = 2150, .reg = 0x8c },
265 { .mbps = 2200, .reg = 0x95 },
266 { .mbps = 2250, .reg = 0x9e },
267 { .mbps = 2300, .reg = 0xa7 },
268 { .mbps = 2350, .reg = 0xb0 },
269 { .mbps = 2400, .reg = 0xba },
270 { .mbps = 2450, .reg = 0xc3 },
271 { .mbps = 2500, .reg = 0xcc },
276 { .mbps = 80, .reg = 0x86 },
277 { .mbps = 90, .reg = 0x86 },
278 { .mbps = 100, .reg = 0x87 },
279 { .mbps = 110, .reg = 0x87 },
280 { .mbps = 120, .reg = 0x88 },
281 { .mbps = 130, .reg = 0x88 },
282 { .mbps = 140, .reg = 0x89 },
283 { .mbps = 150, .reg = 0x89 },
284 { .mbps = 160, .reg = 0x8a },
285 { .mbps = 170, .reg = 0x8a },
286 { .mbps = 180, .reg = 0x8b },
287 { .mbps = 190, .reg = 0x8b },
288 { .mbps = 205, .reg = 0x8c },
289 { .mbps = 220, .reg = 0x8d },
290 { .mbps = 235, .reg = 0x8e },
291 { .mbps = 250, .reg = 0x8e },
296 { .mbps = 80, .reg = 0x00 },
297 { .mbps = 90, .reg = 0x20 },
298 { .mbps = 100, .reg = 0x40 },
299 { .mbps = 110, .reg = 0x02 },
300 { .mbps = 130, .reg = 0x22 },
301 { .mbps = 140, .reg = 0x42 },
302 { .mbps = 150, .reg = 0x04 },
303 { .mbps = 170, .reg = 0x24 },
304 { .mbps = 180, .reg = 0x44 },
305 { .mbps = 200, .reg = 0x06 },
306 { .mbps = 220, .reg = 0x26 },
307 { .mbps = 240, .reg = 0x46 },
308 { .mbps = 250, .reg = 0x08 },
309 { .mbps = 270, .reg = 0x28 },
310 { .mbps = 300, .reg = 0x0a },
311 { .mbps = 330, .reg = 0x2a },
312 { .mbps = 360, .reg = 0x4a },
313 { .mbps = 400, .reg = 0x0c },
314 { .mbps = 450, .reg = 0x2c },
315 { .mbps = 500, .reg = 0x0e },
316 { .mbps = 550, .reg = 0x2e },
317 { .mbps = 600, .reg = 0x10 },
318 { .mbps = 650, .reg = 0x30 },
319 { .mbps = 700, .reg = 0x12 },
320 { .mbps = 750, .reg = 0x32 },
321 { .mbps = 800, .reg = 0x52 },
322 { .mbps = 850, .reg = 0x72 },
323 { .mbps = 900, .reg = 0x14 },
324 { .mbps = 950, .reg = 0x34 },
325 { .mbps = 1000, .reg = 0x54 },
326 { .mbps = 1050, .reg = 0x74 },
327 { .mbps = 1125, .reg = 0x16 },
332 #define PHTC_REG 0x58
333 #define PHTC_TESTCLR BIT(0)
336 #define PHYPLL_REG 0x68
340 { .mbps = 80, .reg = 0x00 },
341 { .mbps = 90, .reg = 0x10 },
342 { .mbps = 100, .reg = 0x20 },
343 { .mbps = 110, .reg = 0x30 },
344 { .mbps = 120, .reg = 0x01 },
345 { .mbps = 130, .reg = 0x11 },
346 { .mbps = 140, .reg = 0x21 },
347 { .mbps = 150, .reg = 0x31 },
348 { .mbps = 160, .reg = 0x02 },
349 { .mbps = 170, .reg = 0x12 },
350 { .mbps = 180, .reg = 0x22 },
351 { .mbps = 190, .reg = 0x32 },
352 { .mbps = 205, .reg = 0x03 },
353 { .mbps = 220, .reg = 0x13 },
354 { .mbps = 235, .reg = 0x23 },
355 { .mbps = 250, .reg = 0x33 },
356 { .mbps = 275, .reg = 0x04 },
357 { .mbps = 300, .reg = 0x14 },
358 { .mbps = 325, .reg = 0x25 },
359 { .mbps = 350, .reg = 0x35 },
360 { .mbps = 400, .reg = 0x05 },
361 { .mbps = 450, .reg = 0x16 },
362 { .mbps = 500, .reg = 0x26 },
363 { .mbps = 550, .reg = 0x37 },
364 { .mbps = 600, .reg = 0x07 },
365 { .mbps = 650, .reg = 0x18 },
366 { .mbps = 700, .reg = 0x28 },
367 { .mbps = 750, .reg = 0x39 },
368 { .mbps = 800, .reg = 0x09 },
369 { .mbps = 850, .reg = 0x19 },
370 { .mbps = 900, .reg = 0x29 },
371 { .mbps = 950, .reg = 0x3a },
372 { .mbps = 1000, .reg = 0x0a },
373 { .mbps = 1050, .reg = 0x1a },
374 { .mbps = 1100, .reg = 0x2a },
375 { .mbps = 1150, .reg = 0x3b },
376 { .mbps = 1200, .reg = 0x0b },
377 { .mbps = 1250, .reg = 0x1b },
378 { .mbps = 1300, .reg = 0x2b },
379 { .mbps = 1350, .reg = 0x3c },
380 { .mbps = 1400, .reg = 0x0c },
381 { .mbps = 1450, .reg = 0x1c },
382 { .mbps = 1500, .reg = 0x2c },
383 { .mbps = 1550, .reg = 0x3d },
384 { .mbps = 1600, .reg = 0x0d },
385 { .mbps = 1650, .reg = 0x1d },
386 { .mbps = 1700, .reg = 0x2e },
387 { .mbps = 1750, .reg = 0x3e },
388 { .mbps = 1800, .reg = 0x0e },
389 { .mbps = 1850, .reg = 0x1e },
390 { .mbps = 1900, .reg = 0x2f },
391 { .mbps = 1950, .reg = 0x3f },
392 { .mbps = 2000, .reg = 0x0f },
393 { .mbps = 2050, .reg = 0x40 },
394 { .mbps = 2100, .reg = 0x41 },
395 { .mbps = 2150, .reg = 0x42 },
396 { .mbps = 2200, .reg = 0x43 },
397 { .mbps = 2300, .reg = 0x45 },
398 { .mbps = 2350, .reg = 0x46 },
399 { .mbps = 2400, .reg = 0x47 },
400 { .mbps = 2450, .reg = 0x48 },
401 { .mbps = 2500, .reg = 0x49 },
406 { .mbps = 80, .reg = 0x00 },
407 { .mbps = 90, .reg = 0x10 },
408 { .mbps = 100, .reg = 0x20 },
409 { .mbps = 110, .reg = 0x30 },
410 { .mbps = 120, .reg = 0x01 },
411 { .mbps = 130, .reg = 0x11 },
412 { .mbps = 140, .reg = 0x21 },
413 { .mbps = 150, .reg = 0x31 },
414 { .mbps = 160, .reg = 0x02 },
415 { .mbps = 170, .reg = 0x12 },
416 { .mbps = 180, .reg = 0x22 },
417 { .mbps = 190, .reg = 0x32 },
418 { .mbps = 205, .reg = 0x03 },
419 { .mbps = 220, .reg = 0x13 },
420 { .mbps = 235, .reg = 0x23 },
421 { .mbps = 250, .reg = 0x33 },
422 { .mbps = 275, .reg = 0x04 },
423 { .mbps = 300, .reg = 0x14 },
424 { .mbps = 325, .reg = 0x25 },
425 { .mbps = 350, .reg = 0x35 },
426 { .mbps = 400, .reg = 0x05 },
427 { .mbps = 450, .reg = 0x16 },
428 { .mbps = 500, .reg = 0x26 },
429 { .mbps = 550, .reg = 0x37 },
430 { .mbps = 600, .reg = 0x07 },
431 { .mbps = 650, .reg = 0x18 },
432 { .mbps = 700, .reg = 0x28 },
433 { .mbps = 750, .reg = 0x39 },
434 { .mbps = 800, .reg = 0x09 },
435 { .mbps = 850, .reg = 0x19 },
436 { .mbps = 900, .reg = 0x29 },
437 { .mbps = 950, .reg = 0x3a },
438 { .mbps = 1000, .reg = 0x0a },
439 { .mbps = 1050, .reg = 0x1a },
440 { .mbps = 1100, .reg = 0x2a },
441 { .mbps = 1150, .reg = 0x3b },
442 { .mbps = 1200, .reg = 0x0b },
443 { .mbps = 1250, .reg = 0x1b },
444 { .mbps = 1300, .reg = 0x2b },
445 { .mbps = 1350, .reg = 0x3c },
446 { .mbps = 1400, .reg = 0x0c },
447 { .mbps = 1450, .reg = 0x1c },
448 { .mbps = 1500, .reg = 0x2c },
453 { .mbps = 80, .reg = 0x00 },
454 { .mbps = 90, .reg = 0x10 },
455 { .mbps = 100, .reg = 0x20 },
456 { .mbps = 110, .reg = 0x30 },
457 { .mbps = 120, .reg = 0x01 },
458 { .mbps = 130, .reg = 0x11 },
459 { .mbps = 140, .reg = 0x21 },
460 { .mbps = 150, .reg = 0x31 },
461 { .mbps = 160, .reg = 0x02 },
462 { .mbps = 170, .reg = 0x12 },
463 { .mbps = 180, .reg = 0x22 },
464 { .mbps = 190, .reg = 0x32 },
465 { .mbps = 205, .reg = 0x03 },
466 { .mbps = 220, .reg = 0x13 },
467 { .mbps = 235, .reg = 0x23 },
468 { .mbps = 250, .reg = 0x33 },
469 { .mbps = 275, .reg = 0x04 },
470 { .mbps = 300, .reg = 0x14 },
471 { .mbps = 325, .reg = 0x05 },
472 { .mbps = 350, .reg = 0x15 },
473 { .mbps = 400, .reg = 0x25 },
474 { .mbps = 450, .reg = 0x06 },
475 { .mbps = 500, .reg = 0x16 },
476 { .mbps = 550, .reg = 0x07 },
477 { .mbps = 600, .reg = 0x17 },
478 { .mbps = 650, .reg = 0x08 },
479 { .mbps = 700, .reg = 0x18 },
480 { .mbps = 750, .reg = 0x09 },
481 { .mbps = 800, .reg = 0x19 },
482 { .mbps = 850, .reg = 0x29 },
483 { .mbps = 900, .reg = 0x39 },
484 { .mbps = 950, .reg = 0x0a },
485 { .mbps = 1000, .reg = 0x1a },
486 { .mbps = 1050, .reg = 0x2a },
487 { .mbps = 1100, .reg = 0x3a },
488 { .mbps = 1150, .reg = 0x0b },
489 { .mbps = 1200, .reg = 0x1b },
490 { .mbps = 1250, .reg = 0x2b },
491 { .mbps = 1300, .reg = 0x3b },
492 { .mbps = 1350, .reg = 0x0c },
493 { .mbps = 1400, .reg = 0x1c },
494 { .mbps = 1450, .reg = 0x2c },
495 { .mbps = 1500, .reg = 0x3c },
500 #define PHEERM_REG 0x74
503 #define PHCLM_REG 0x78
504 #define PHCLM_STOPSTATECKL BIT(0)
507 #define PHDLM_REG 0x7c
510 #define CSI0CLKFCPR_REG 0x260
511 #define CSI0CLKFREQRANGE(n) ((n & 0x3f) << 16)
571 for (i = 0; i < ARRAY_SIZE(rcar_csi2_formats); i++) in rcsi2_code_to_fmt()
661 rcsi2_write(priv, PHYCNT_REG, 0); in rcsi2_enter_standby_gen3()
680 if (ret < 0) in rcsi2_exit_standby()
685 return 0; in rcsi2_exit_standby()
694 for (timeout = 0; timeout <= 20; timeout++) { in rcsi2_wait_phy_start()
699 return 0; in rcsi2_wait_phy_start()
718 for (hsfreq = priv->info->hsfreqrange; hsfreq->mbps != 0; hsfreq++) { in rcsi2_set_phypll()
735 return 0; in rcsi2_set_phypll()
776 struct v4l2_mbus_config mbus_config = { 0 }; in rcsi2_get_active_lanes()
785 return 0; in rcsi2_get_active_lanes()
817 return 0; in rcsi2_get_active_lanes()
824 u32 phycnt, vcdt = 0, vcdt2 = 0, fld = 0; in rcsi2_start_receiver_gen3()
850 for (i = 0; i < priv->info->num_channels; i++) { in rcsi2_start_receiver_gen3()
853 if (priv->channel_vc[i] < 0) in rcsi2_start_receiver_gen3()
871 fld |= FLD_FLD_NUM(0); in rcsi2_start_receiver_gen3()
888 if (mbps < 0) in rcsi2_start_receiver_gen3()
897 rcsi2_write(priv, PHTC_REG, 0); in rcsi2_start_receiver_gen3()
908 LSWAP_L0SEL(priv->lane_swap[0] - 1) | in rcsi2_start_receiver_gen3()
947 rcsi2_write(priv, PHYFRX_REG, 0); in rcsi2_start_receiver_gen3()
961 return 0; in rcsi2_start_receiver_gen3()
969 for (timeout = 0; timeout <= 10; timeout++) { in rcsi2_wait_phy_start_v4h()
972 return 0; in rcsi2_wait_phy_start_v4h()
984 for (conf = cphy_setting_table_r8a779g0; conf->msps != 0; conf++) { in rcsi2_c_phy_setting_v4h()
995 rcsi2_write16(priv, V4H_CORE_DIG_RW_COMMON_REG(7), 0x0155); in rcsi2_c_phy_setting_v4h()
996 rcsi2_write16(priv, V4H_PPI_STARTUP_RW_COMMON_DPHY_REG(7), 0x0068); in rcsi2_c_phy_setting_v4h()
997 rcsi2_write16(priv, V4H_PPI_STARTUP_RW_COMMON_DPHY_REG(8), 0x0010); in rcsi2_c_phy_setting_v4h()
999 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_LP_0_REG, 0x463c); in rcsi2_c_phy_setting_v4h()
1000 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_LP_0_REG, 0x463c); in rcsi2_c_phy_setting_v4h()
1001 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_LP_0_REG, 0x463c); in rcsi2_c_phy_setting_v4h()
1003 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_HS_RX_REG(0), 0x00d5); in rcsi2_c_phy_setting_v4h()
1004 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_RX_REG(0), 0x00d5); in rcsi2_c_phy_setting_v4h()
1005 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_HS_RX_REG(0), 0x00d5); in rcsi2_c_phy_setting_v4h()
1007 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_HS_RX_REG(1), 0x0013); in rcsi2_c_phy_setting_v4h()
1008 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_RX_REG(1), 0x0013); in rcsi2_c_phy_setting_v4h()
1009 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_HS_RX_REG(1), 0x0013); in rcsi2_c_phy_setting_v4h()
1011 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_HS_RX_REG(5), 0x0013); in rcsi2_c_phy_setting_v4h()
1012 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_RX_REG(5), 0x0013); in rcsi2_c_phy_setting_v4h()
1013 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_HS_RX_REG(5), 0x0013); in rcsi2_c_phy_setting_v4h()
1015 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_HS_RX_REG(6), 0x000a); in rcsi2_c_phy_setting_v4h()
1016 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_RX_REG(6), 0x000a); in rcsi2_c_phy_setting_v4h()
1017 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_HS_RX_REG(6), 0x000a); in rcsi2_c_phy_setting_v4h()
1023 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE0_CTRL_2_REG(2), 0x0001); in rcsi2_c_phy_setting_v4h()
1024 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE1_CTRL_2_REG(2), 0); in rcsi2_c_phy_setting_v4h()
1025 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE2_CTRL_2_REG(2), 0x0001); in rcsi2_c_phy_setting_v4h()
1026 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE3_CTRL_2_REG(2), 0x0001); in rcsi2_c_phy_setting_v4h()
1027 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE4_CTRL_2_REG(2), 0); in rcsi2_c_phy_setting_v4h()
1029 rcsi2_write16(priv, V4H_CORE_DIG_RW_TRIO0_REG(0), conf->trio0); in rcsi2_c_phy_setting_v4h()
1030 rcsi2_write16(priv, V4H_CORE_DIG_RW_TRIO1_REG(0), conf->trio0); in rcsi2_c_phy_setting_v4h()
1031 rcsi2_write16(priv, V4H_CORE_DIG_RW_TRIO2_REG(0), conf->trio0); in rcsi2_c_phy_setting_v4h()
1046 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_CFG_0_REG, 0xf5); in rcsi2_c_phy_setting_v4h()
1047 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_TX_6_REG, 0x5000); in rcsi2_c_phy_setting_v4h()
1050 rcsi2_write(priv, V4H_DPHY_RSTZ_REG, BIT(0)); in rcsi2_c_phy_setting_v4h()
1051 rcsi2_write(priv, V4H_PHY_SHUTDOWNZ_REG, BIT(0)); in rcsi2_c_phy_setting_v4h()
1063 return 0; in rcsi2_c_phy_setting_v4h()
1086 if (msps < 0) in rcsi2_start_receiver_v4h()
1090 rcsi2_write(priv, V4H_CSI2_RESETN_REG, 0); in rcsi2_start_receiver_v4h()
1091 rcsi2_write(priv, V4H_DPHY_RSTZ_REG, 0); in rcsi2_start_receiver_v4h()
1092 rcsi2_write(priv, V4H_PHY_SHUTDOWNZ_REG, 0); in rcsi2_start_receiver_v4h()
1095 rcsi2_write(priv, V4H_PHY_EN_REG, BIT(0)); in rcsi2_start_receiver_v4h()
1096 rcsi2_write(priv, V4H_FLDC_REG, 0); in rcsi2_start_receiver_v4h()
1097 rcsi2_write(priv, V4H_FLDD_REG, 0); in rcsi2_start_receiver_v4h()
1098 rcsi2_write(priv, V4H_IDIC_REG, 0); in rcsi2_start_receiver_v4h()
1099 rcsi2_write(priv, V4H_PHY_MODE_REG, BIT(0)); in rcsi2_start_receiver_v4h()
1103 rcsi2_write(priv, V4H_CSI2_RESETN_REG, BIT(0)); in rcsi2_start_receiver_v4h()
1107 rcsi2_write16(priv, V4H_CORE_DIG_ANACTRL_RW_COMMON_ANACTRL_REG(0), 0x1bfd); in rcsi2_start_receiver_v4h()
1108 rcsi2_write16(priv, V4H_PPI_STARTUP_RW_COMMON_STARTUP_1_1_REG, 0x0233); in rcsi2_start_receiver_v4h()
1109 rcsi2_write16(priv, V4H_PPI_STARTUP_RW_COMMON_DPHY_REG(6), 0x0027); in rcsi2_start_receiver_v4h()
1110 rcsi2_write16(priv, V4H_PPI_CALIBCTRL_RW_COMMON_BG_0_REG, 0x01f4); in rcsi2_start_receiver_v4h()
1111 rcsi2_write16(priv, V4H_PPI_RW_TERMCAL_CFG_0_REG, 0x0013); in rcsi2_start_receiver_v4h()
1112 rcsi2_write16(priv, V4H_PPI_RW_OFFSETCAL_CFG_0_REG, 0x0003); in rcsi2_start_receiver_v4h()
1113 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_TIMEBASE_REG, 0x004f); in rcsi2_start_receiver_v4h()
1114 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_NREF_REG, 0x0320); in rcsi2_start_receiver_v4h()
1115 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_NREF_RANGE_REG, 0x000f); in rcsi2_start_receiver_v4h()
1116 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_TWAIT_CONFIG_REG, 0xfe18); in rcsi2_start_receiver_v4h()
1117 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_VT_CONFIG_REG, 0x0c3c); in rcsi2_start_receiver_v4h()
1118 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_COARSE_CFG_REG, 0x0105); in rcsi2_start_receiver_v4h()
1119 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_CB_CTRL_2_REG(6), 0x1000); in rcsi2_start_receiver_v4h()
1120 rcsi2_write16(priv, V4H_PPI_RW_COMMON_CFG_REG, 0x0003); in rcsi2_start_receiver_v4h()
1131 return 0; in rcsi2_start_receiver_v4h()
1139 if (ret < 0) in rcsi2_start()
1154 return 0; in rcsi2_start()
1160 v4l2_subdev_call(priv->remote, video, s_stream, 0); in rcsi2_stop()
1167 int ret = 0; in rcsi2_s_stream()
1174 if (enable && priv->stream_count == 0) { in rcsi2_s_stream()
1200 format->format.code = rcar_csi2_formats[0].code; in rcsi2_set_pad_format()
1208 return 0; in rcsi2_set_pad_format()
1245 return 0; in rcsi2_init_state()
1305 if (pad < 0) { in rcsi2_notify_bound()
1316 &priv->subdev.entity, 0, in rcsi2_notify_bound()
1342 /* Only port 0 endpoint 0 is valid. */ in rcsi2_parse_v4l2()
1384 for (i = 0; i < ARRAY_SIZE(priv->lane_swap); i++) { in rcsi2_parse_v4l2()
1395 return 0; in rcsi2_parse_v4l2()
1408 ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(priv->dev), 0, 0, 0); in rcsi2_parse_dt()
1463 for (timeout = 0; timeout <= 20; timeout++) { in rcsi2_phtw_write()
1465 return 0; in rcsi2_phtw_write()
1487 return 0; in rcsi2_phtw_write_array()
1518 { .data = 0xcc, .code = 0xe2 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1519 { .data = 0x01, .code = 0xe3 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1520 { .data = 0x11, .code = 0xe4 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1521 { .data = 0x01, .code = 0xe5 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1522 { .data = 0x10, .code = 0x04 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1527 { .data = 0x38, .code = 0x08 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1528 { .data = 0x01, .code = 0x00 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1529 { .data = 0x4b, .code = 0xac }, in __rcsi2_init_phtw_h3_v3h_m3n()
1530 { .data = 0x03, .code = 0x00 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1531 { .data = 0x80, .code = 0x07 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1541 if (mbps != 0 && mbps <= 250) { in __rcsi2_init_phtw_h3_v3h_m3n()
1542 ret = rcsi2_phtw_write(priv, 0x39, 0x05); in __rcsi2_init_phtw_h3_v3h_m3n()
1547 0xf1); in __rcsi2_init_phtw_h3_v3h_m3n()
1562 return __rcsi2_init_phtw_h3_v3h_m3n(priv, 0); in rcsi2_init_phtw_h3es2()
1567 return rcsi2_phtw_write_mbps(priv, mbps, phtw_mbps_v3m_e3, 0x44); in rcsi2_init_phtw_v3m_e3()
1573 { .data = 0xee, .code = 0x34 }, in rcsi2_phy_post_init_v3m_e3()
1574 { .data = 0xee, .code = 0x44 }, in rcsi2_phy_post_init_v3m_e3()
1575 { .data = 0xee, .code = 0x54 }, in rcsi2_phy_post_init_v3m_e3()
1576 { .data = 0xee, .code = 0x84 }, in rcsi2_phy_post_init_v3m_e3()
1577 { .data = 0xee, .code = 0x94 }, in rcsi2_phy_post_init_v3m_e3()
1589 { .data = 0xcc, .code = 0xe2 }, in rcsi2_init_phtw_v3u()
1594 { .data = 0x01, .code = 0xe3 }, in rcsi2_init_phtw_v3u()
1595 { .data = 0x11, .code = 0xe4 }, in rcsi2_init_phtw_v3u()
1596 { .data = 0x01, .code = 0xe5 }, in rcsi2_init_phtw_v3u()
1602 { .data = 0x38, .code = 0x08 }, in rcsi2_init_phtw_v3u()
1607 { .data = 0x01, .code = 0x00 }, in rcsi2_init_phtw_v3u()
1608 { .data = 0x4b, .code = 0xac }, in rcsi2_init_phtw_v3u()
1609 { .data = 0x03, .code = 0x00 }, in rcsi2_init_phtw_v3u()
1610 { .data = 0x80, .code = 0x07 }, in rcsi2_init_phtw_v3u()
1616 if (mbps != 0 && mbps <= 1500) in rcsi2_init_phtw_v3u()
1619 ret = rcsi2_phtw_write_mbps(priv, mbps, phtw_mbps_v3u, 0xe2); in rcsi2_init_phtw_v3u()
1627 if (mbps != 0 && mbps <= 1500) { in rcsi2_init_phtw_v3u()
1685 return 0; in rcsi2_link_setup()
1698 priv->base = devm_platform_ioremap_resource(pdev, 0); in rcsi2_probe_resources()
1702 irq = platform_get_irq(pdev, 0); in rcsi2_probe_resources()
1703 if (irq < 0) in rcsi2_probe_resources()
1722 .csi0clkfreqrange = 0x20,
1733 .csi0clkfreqrange = 0x20,
1760 .csi0clkfreqrange = 0x20,
1780 .csi0clkfreqrange = 0x20,
1799 .csi0clkfreqrange = 0x20,
1899 priv->stream_count = 0; in rcsi2_probe()
1936 for (i = 0; i < ARRAY_SIZE(priv->channel_vc); i++) in rcsi2_probe()
1946 if (ret < 0) in rcsi2_probe()
1951 return 0; in rcsi2_probe()