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()
652 rcsi2_write(priv, PHYCNT_REG, 0); in rcsi2_enter_standby_gen3()
671 if (ret < 0) in rcsi2_exit_standby()
676 return 0; in rcsi2_exit_standby()
685 for (timeout = 0; timeout <= 20; timeout++) { in rcsi2_wait_phy_start()
690 return 0; in rcsi2_wait_phy_start()
709 for (hsfreq = priv->info->hsfreqrange; hsfreq->mbps != 0; hsfreq++) { in rcsi2_set_phypll()
726 return 0; in rcsi2_set_phypll()
767 struct v4l2_mbus_config mbus_config = { 0 }; in rcsi2_get_active_lanes()
776 return 0; in rcsi2_get_active_lanes()
808 return 0; in rcsi2_get_active_lanes()
814 u32 phycnt, vcdt = 0, vcdt2 = 0, fld = 0; in rcsi2_start_receiver_gen3()
836 for (i = 0; i < priv->info->num_channels; i++) { in rcsi2_start_receiver_gen3()
839 if (priv->channel_vc[i] < 0) in rcsi2_start_receiver_gen3()
857 fld |= FLD_FLD_NUM(0); in rcsi2_start_receiver_gen3()
874 if (mbps < 0) in rcsi2_start_receiver_gen3()
883 rcsi2_write(priv, PHTC_REG, 0); in rcsi2_start_receiver_gen3()
894 LSWAP_L0SEL(priv->lane_swap[0] - 1) | in rcsi2_start_receiver_gen3()
933 rcsi2_write(priv, PHYFRX_REG, 0); in rcsi2_start_receiver_gen3()
947 return 0; in rcsi2_start_receiver_gen3()
955 for (timeout = 0; timeout <= 10; timeout++) { in rcsi2_wait_phy_start_v4h()
958 return 0; in rcsi2_wait_phy_start_v4h()
970 for (conf = cphy_setting_table_r8a779g0; conf->msps != 0; conf++) { in rcsi2_c_phy_setting_v4h()
981 rcsi2_write16(priv, V4H_CORE_DIG_RW_COMMON_REG(7), 0x0155); in rcsi2_c_phy_setting_v4h()
982 rcsi2_write16(priv, V4H_PPI_STARTUP_RW_COMMON_DPHY_REG(7), 0x0068); in rcsi2_c_phy_setting_v4h()
983 rcsi2_write16(priv, V4H_PPI_STARTUP_RW_COMMON_DPHY_REG(8), 0x0010); in rcsi2_c_phy_setting_v4h()
985 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_LP_0_REG, 0x463c); in rcsi2_c_phy_setting_v4h()
986 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_LP_0_REG, 0x463c); in rcsi2_c_phy_setting_v4h()
987 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_LP_0_REG, 0x463c); in rcsi2_c_phy_setting_v4h()
989 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_HS_RX_REG(0), 0x00d5); in rcsi2_c_phy_setting_v4h()
990 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_RX_REG(0), 0x00d5); in rcsi2_c_phy_setting_v4h()
991 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_HS_RX_REG(0), 0x00d5); in rcsi2_c_phy_setting_v4h()
993 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_HS_RX_REG(1), 0x0013); in rcsi2_c_phy_setting_v4h()
994 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_RX_REG(1), 0x0013); in rcsi2_c_phy_setting_v4h()
995 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_HS_RX_REG(1), 0x0013); in rcsi2_c_phy_setting_v4h()
997 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_HS_RX_REG(5), 0x0013); in rcsi2_c_phy_setting_v4h()
998 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_RX_REG(5), 0x0013); in rcsi2_c_phy_setting_v4h()
999 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_HS_RX_REG(5), 0x0013); in rcsi2_c_phy_setting_v4h()
1001 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_0_RW_HS_RX_REG(6), 0x000a); in rcsi2_c_phy_setting_v4h()
1002 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_RX_REG(6), 0x000a); in rcsi2_c_phy_setting_v4h()
1003 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_2_RW_HS_RX_REG(6), 0x000a); in rcsi2_c_phy_setting_v4h()
1009 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE0_CTRL_2_REG(2), 0x0001); in rcsi2_c_phy_setting_v4h()
1010 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE1_CTRL_2_REG(2), 0); in rcsi2_c_phy_setting_v4h()
1011 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE2_CTRL_2_REG(2), 0x0001); in rcsi2_c_phy_setting_v4h()
1012 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE3_CTRL_2_REG(2), 0x0001); in rcsi2_c_phy_setting_v4h()
1013 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_LANE4_CTRL_2_REG(2), 0); in rcsi2_c_phy_setting_v4h()
1015 rcsi2_write16(priv, V4H_CORE_DIG_RW_TRIO0_REG(0), conf->trio0); in rcsi2_c_phy_setting_v4h()
1016 rcsi2_write16(priv, V4H_CORE_DIG_RW_TRIO1_REG(0), conf->trio0); in rcsi2_c_phy_setting_v4h()
1017 rcsi2_write16(priv, V4H_CORE_DIG_RW_TRIO2_REG(0), conf->trio0); in rcsi2_c_phy_setting_v4h()
1032 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_CFG_0_REG, 0xf5); in rcsi2_c_phy_setting_v4h()
1033 rcsi2_write16(priv, V4H_CORE_DIG_CLANE_1_RW_HS_TX_6_REG, 0x5000); in rcsi2_c_phy_setting_v4h()
1036 rcsi2_write(priv, V4H_DPHY_RSTZ_REG, BIT(0)); in rcsi2_c_phy_setting_v4h()
1037 rcsi2_write(priv, V4H_PHY_SHUTDOWNZ_REG, BIT(0)); in rcsi2_c_phy_setting_v4h()
1049 return 0; in rcsi2_c_phy_setting_v4h()
1069 if (msps < 0) in rcsi2_start_receiver_v4h()
1073 rcsi2_write(priv, V4H_CSI2_RESETN_REG, 0); in rcsi2_start_receiver_v4h()
1074 rcsi2_write(priv, V4H_DPHY_RSTZ_REG, 0); in rcsi2_start_receiver_v4h()
1075 rcsi2_write(priv, V4H_PHY_SHUTDOWNZ_REG, 0); in rcsi2_start_receiver_v4h()
1078 rcsi2_write(priv, V4H_PHY_EN_REG, BIT(0)); in rcsi2_start_receiver_v4h()
1079 rcsi2_write(priv, V4H_FLDC_REG, 0); in rcsi2_start_receiver_v4h()
1080 rcsi2_write(priv, V4H_FLDD_REG, 0); in rcsi2_start_receiver_v4h()
1081 rcsi2_write(priv, V4H_IDIC_REG, 0); in rcsi2_start_receiver_v4h()
1082 rcsi2_write(priv, V4H_PHY_MODE_REG, BIT(0)); in rcsi2_start_receiver_v4h()
1086 rcsi2_write(priv, V4H_CSI2_RESETN_REG, BIT(0)); in rcsi2_start_receiver_v4h()
1090 rcsi2_write16(priv, V4H_CORE_DIG_ANACTRL_RW_COMMON_ANACTRL_REG(0), 0x1bfd); in rcsi2_start_receiver_v4h()
1091 rcsi2_write16(priv, V4H_PPI_STARTUP_RW_COMMON_STARTUP_1_1_REG, 0x0233); in rcsi2_start_receiver_v4h()
1092 rcsi2_write16(priv, V4H_PPI_STARTUP_RW_COMMON_DPHY_REG(6), 0x0027); in rcsi2_start_receiver_v4h()
1093 rcsi2_write16(priv, V4H_PPI_CALIBCTRL_RW_COMMON_BG_0_REG, 0x01f4); in rcsi2_start_receiver_v4h()
1094 rcsi2_write16(priv, V4H_PPI_RW_TERMCAL_CFG_0_REG, 0x0013); in rcsi2_start_receiver_v4h()
1095 rcsi2_write16(priv, V4H_PPI_RW_OFFSETCAL_CFG_0_REG, 0x0003); in rcsi2_start_receiver_v4h()
1096 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_TIMEBASE_REG, 0x004f); in rcsi2_start_receiver_v4h()
1097 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_NREF_REG, 0x0320); in rcsi2_start_receiver_v4h()
1098 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_NREF_RANGE_REG, 0x000f); in rcsi2_start_receiver_v4h()
1099 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_TWAIT_CONFIG_REG, 0xfe18); in rcsi2_start_receiver_v4h()
1100 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_VT_CONFIG_REG, 0x0c3c); in rcsi2_start_receiver_v4h()
1101 rcsi2_write16(priv, V4H_PPI_RW_LPDCOCAL_COARSE_CFG_REG, 0x0105); in rcsi2_start_receiver_v4h()
1102 rcsi2_write16(priv, V4H_CORE_DIG_IOCTRL_RW_AFE_CB_CTRL_2_REG(6), 0x1000); in rcsi2_start_receiver_v4h()
1103 rcsi2_write16(priv, V4H_PPI_RW_COMMON_CFG_REG, 0x0003); in rcsi2_start_receiver_v4h()
1114 return 0; in rcsi2_start_receiver_v4h()
1122 if (ret < 0) in rcsi2_start()
1137 return 0; in rcsi2_start()
1143 v4l2_subdev_call(priv->remote, video, s_stream, 0); in rcsi2_stop()
1149 int ret = 0; in rcsi2_s_stream()
1158 if (enable && priv->stream_count == 0) { in rcsi2_s_stream()
1183 format->format.code = rcar_csi2_formats[0].code; in rcsi2_set_pad_format()
1188 framefmt = v4l2_subdev_get_try_format(sd, sd_state, 0); in rcsi2_set_pad_format()
1194 return 0; in rcsi2_set_pad_format()
1208 format->format = *v4l2_subdev_get_try_format(sd, sd_state, 0); in rcsi2_get_pad_format()
1212 return 0; in rcsi2_get_pad_format()
1279 if (pad < 0) { in rcsi2_notify_bound()
1290 &priv->subdev.entity, 0, in rcsi2_notify_bound()
1316 /* Only port 0 endpoint 0 is valid. */ in rcsi2_parse_v4l2()
1358 for (i = 0; i < ARRAY_SIZE(priv->lane_swap); i++) { in rcsi2_parse_v4l2()
1369 return 0; in rcsi2_parse_v4l2()
1382 ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(priv->dev), 0, 0, 0); in rcsi2_parse_dt()
1437 for (timeout = 0; timeout <= 20; timeout++) { in rcsi2_phtw_write()
1439 return 0; in rcsi2_phtw_write()
1461 return 0; in rcsi2_phtw_write_array()
1492 { .data = 0xcc, .code = 0xe2 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1493 { .data = 0x01, .code = 0xe3 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1494 { .data = 0x11, .code = 0xe4 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1495 { .data = 0x01, .code = 0xe5 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1496 { .data = 0x10, .code = 0x04 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1501 { .data = 0x38, .code = 0x08 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1502 { .data = 0x01, .code = 0x00 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1503 { .data = 0x4b, .code = 0xac }, in __rcsi2_init_phtw_h3_v3h_m3n()
1504 { .data = 0x03, .code = 0x00 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1505 { .data = 0x80, .code = 0x07 }, in __rcsi2_init_phtw_h3_v3h_m3n()
1515 if (mbps != 0 && mbps <= 250) { in __rcsi2_init_phtw_h3_v3h_m3n()
1516 ret = rcsi2_phtw_write(priv, 0x39, 0x05); in __rcsi2_init_phtw_h3_v3h_m3n()
1521 0xf1); in __rcsi2_init_phtw_h3_v3h_m3n()
1536 return __rcsi2_init_phtw_h3_v3h_m3n(priv, 0); in rcsi2_init_phtw_h3es2()
1541 return rcsi2_phtw_write_mbps(priv, mbps, phtw_mbps_v3m_e3, 0x44); in rcsi2_init_phtw_v3m_e3()
1547 { .data = 0xee, .code = 0x34 }, in rcsi2_phy_post_init_v3m_e3()
1548 { .data = 0xee, .code = 0x44 }, in rcsi2_phy_post_init_v3m_e3()
1549 { .data = 0xee, .code = 0x54 }, in rcsi2_phy_post_init_v3m_e3()
1550 { .data = 0xee, .code = 0x84 }, in rcsi2_phy_post_init_v3m_e3()
1551 { .data = 0xee, .code = 0x94 }, in rcsi2_phy_post_init_v3m_e3()
1563 { .data = 0xcc, .code = 0xe2 }, in rcsi2_init_phtw_v3u()
1568 { .data = 0x01, .code = 0xe3 }, in rcsi2_init_phtw_v3u()
1569 { .data = 0x11, .code = 0xe4 }, in rcsi2_init_phtw_v3u()
1570 { .data = 0x01, .code = 0xe5 }, in rcsi2_init_phtw_v3u()
1576 { .data = 0x38, .code = 0x08 }, in rcsi2_init_phtw_v3u()
1581 { .data = 0x01, .code = 0x00 }, in rcsi2_init_phtw_v3u()
1582 { .data = 0x4b, .code = 0xac }, in rcsi2_init_phtw_v3u()
1583 { .data = 0x03, .code = 0x00 }, in rcsi2_init_phtw_v3u()
1584 { .data = 0x80, .code = 0x07 }, in rcsi2_init_phtw_v3u()
1590 if (mbps != 0 && mbps <= 1500) in rcsi2_init_phtw_v3u()
1593 ret = rcsi2_phtw_write_mbps(priv, mbps, phtw_mbps_v3u, 0xe2); in rcsi2_init_phtw_v3u()
1601 if (mbps != 0 && mbps <= 1500) { in rcsi2_init_phtw_v3u()
1659 return 0; in rcsi2_link_setup()
1672 priv->base = devm_platform_ioremap_resource(pdev, 0); in rcsi2_probe_resources()
1676 irq = platform_get_irq(pdev, 0); in rcsi2_probe_resources()
1677 if (irq < 0) in rcsi2_probe_resources()
1696 .csi0clkfreqrange = 0x20,
1707 .csi0clkfreqrange = 0x20,
1734 .csi0clkfreqrange = 0x20,
1754 .csi0clkfreqrange = 0x20,
1773 .csi0clkfreqrange = 0x20,
1874 priv->stream_count = 0; in rcsi2_probe()
1910 for (i = 0; i < ARRAY_SIZE(priv->channel_vc); i++) in rcsi2_probe()
1916 if (ret < 0) in rcsi2_probe()
1921 return 0; in rcsi2_probe()