]> git.sur5r.net Git - u-boot/blob - arch/arm/include/asm/arch-tegra210/clock-tables.h
ARM: AM43xx: Add support for RTC only + DDR in self-refresh mode
[u-boot] / arch / arm / include / asm / arch-tegra210 / clock-tables.h
1 /*
2  * (C) Copyright 2013-2015
3  * NVIDIA Corporation <www.nvidia.com>
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 /* Tegra210 clock PLL tables */
9
10 #ifndef _TEGRA210_CLOCK_TABLES_H_
11 #define _TEGRA210_CLOCK_TABLES_H_
12
13 /* The PLLs supported by the hardware */
14 enum clock_id {
15         CLOCK_ID_FIRST,
16         CLOCK_ID_CGENERAL = CLOCK_ID_FIRST,
17         CLOCK_ID_MEMORY,
18         CLOCK_ID_PERIPH,
19         CLOCK_ID_AUDIO,
20         CLOCK_ID_USB,
21         CLOCK_ID_DISPLAY,
22
23         /* now the simple ones */
24         CLOCK_ID_FIRST_SIMPLE,
25         CLOCK_ID_XCPU = CLOCK_ID_FIRST_SIMPLE,
26         CLOCK_ID_EPCI,
27         CLOCK_ID_SFROM32KHZ,
28         CLOCK_ID_DP,
29
30         /* These are the base clocks (inputs to the Tegra SoC) */
31         CLOCK_ID_32KHZ,
32         CLOCK_ID_OSC,
33         CLOCK_ID_CLK_M,
34
35         CLOCK_ID_COUNT, /* number of PLLs */
36
37         /*
38          * These are clock IDs that are used in table clock_source[][]
39          * but will not be assigned as a clock source for any peripheral.
40          */
41         CLOCK_ID_DISPLAY2,
42         CLOCK_ID_CGENERAL_0,
43         CLOCK_ID_CGENERAL_1,
44         CLOCK_ID_CGENERAL2,
45         CLOCK_ID_CGENERAL3,
46         CLOCK_ID_CGENERAL4_0,
47         CLOCK_ID_CGENERAL4_1,
48         CLOCK_ID_CGENERAL4_2,
49         CLOCK_ID_MEMORY2,
50         CLOCK_ID_SRC2,
51
52         CLOCK_ID_NONE = -1,
53 };
54
55 /* The clocks supported by the hardware */
56 enum periph_id {
57         PERIPH_ID_FIRST,
58
59         /* Low word: 31:0 (DEVICES_L) */
60         PERIPH_ID_CPU = PERIPH_ID_FIRST,
61         PERIPH_ID_COP,
62         PERIPH_ID_TRIGSYS,
63         PERIPH_ID_ISPB,
64         PERIPH_ID_RESERVED4,
65         PERIPH_ID_TMR,
66         PERIPH_ID_UART1,
67         PERIPH_ID_UART2,
68
69         /* 8 */
70         PERIPH_ID_GPIO,
71         PERIPH_ID_SDMMC2,
72         PERIPH_ID_SPDIF,
73         PERIPH_ID_I2S2,
74         PERIPH_ID_I2C1,
75         PERIPH_ID_RESERVED13,
76         PERIPH_ID_SDMMC1,
77         PERIPH_ID_SDMMC4,
78
79         /* 16 */
80         PERIPH_ID_TCW,
81         PERIPH_ID_PWM,
82         PERIPH_ID_I2S3,
83         PERIPH_ID_RESERVED19,
84         PERIPH_ID_VI,
85         PERIPH_ID_RESERVED21,
86         PERIPH_ID_USBD,
87         PERIPH_ID_ISP,
88
89         /* 24 */
90         PERIPH_ID_RESERVED24,
91         PERIPH_ID_RESERVED25,
92         PERIPH_ID_DISP2,
93         PERIPH_ID_DISP1,
94         PERIPH_ID_HOST1X,
95         PERIPH_ID_VCP,
96         PERIPH_ID_I2S1,
97         PERIPH_ID_CACHE2,
98
99         /* Middle word: 63:32 (DEVICES_H) */
100         PERIPH_ID_MEM,
101         PERIPH_ID_AHBDMA,
102         PERIPH_ID_APBDMA,
103         PERIPH_ID_RESERVED35,
104         PERIPH_ID_RESERVED36,
105         PERIPH_ID_STAT_MON,
106         PERIPH_ID_RESERVED38,
107         PERIPH_ID_FUSE,
108
109         /* 40 */
110         PERIPH_ID_KFUSE,
111         PERIPH_ID_SBC1,
112         PERIPH_ID_SNOR,
113         PERIPH_ID_RESERVED43,
114         PERIPH_ID_SBC2,
115         PERIPH_ID_XIO,
116         PERIPH_ID_SBC3,
117         PERIPH_ID_I2C5,
118
119         /* 48 */
120         PERIPH_ID_DSI,
121         PERIPH_ID_RESERVED49,
122         PERIPH_ID_HSI,
123         PERIPH_ID_HDMI,
124         PERIPH_ID_CSI,
125         PERIPH_ID_RESERVED53,
126         PERIPH_ID_I2C2,
127         PERIPH_ID_UART3,
128
129         /* 56 */
130         PERIPH_ID_MIPI_CAL,
131         PERIPH_ID_EMC,
132         PERIPH_ID_USB2,
133         PERIPH_ID_USB3,
134         PERIPH_ID_RESERVED60,
135         PERIPH_ID_VDE,
136         PERIPH_ID_BSEA,
137         PERIPH_ID_BSEV,
138
139         /* Upper word 95:64 (DEVICES_U) */
140         PERIPH_ID_RESERVED64,
141         PERIPH_ID_UART4,
142         PERIPH_ID_UART5,
143         PERIPH_ID_I2C3,
144         PERIPH_ID_SBC4,
145         PERIPH_ID_SDMMC3,
146         PERIPH_ID_PCIE,
147         PERIPH_ID_OWR,
148
149         /* 72 */
150         PERIPH_ID_AFI,
151         PERIPH_ID_CORESIGHT,
152         PERIPH_ID_PCIEXCLK,
153         PERIPH_ID_AVPUCQ,
154         PERIPH_ID_LA,
155         PERIPH_ID_TRACECLKIN,
156         PERIPH_ID_SOC_THERM,
157         PERIPH_ID_DTV,
158
159         /* 80 */
160         PERIPH_ID_RESERVED80,
161         PERIPH_ID_I2CSLOW,
162         PERIPH_ID_DSIB,
163         PERIPH_ID_TSEC,
164         PERIPH_ID_RESERVED84,
165         PERIPH_ID_RESERVED85,
166         PERIPH_ID_RESERVED86,
167         PERIPH_ID_EMUCIF,
168
169         /* 88 */
170         PERIPH_ID_RESERVED88,
171         PERIPH_ID_XUSB_HOST,
172         PERIPH_ID_RESERVED90,
173         PERIPH_ID_MSENC,
174         PERIPH_ID_RESERVED92,
175         PERIPH_ID_RESERVED93,
176         PERIPH_ID_RESERVED94,
177         PERIPH_ID_XUSB_DEV,
178
179         PERIPH_ID_VW_FIRST,
180         /* V word: 31:0 */
181         PERIPH_ID_CPUG = PERIPH_ID_VW_FIRST,
182         PERIPH_ID_CPULP,
183         PERIPH_ID_V_RESERVED2,
184         PERIPH_ID_MSELECT,
185         PERIPH_ID_V_RESERVED4,
186         PERIPH_ID_I2S4,
187         PERIPH_ID_I2S5,
188         PERIPH_ID_I2C4,
189
190         /* 104 */
191         PERIPH_ID_SBC5,
192         PERIPH_ID_SBC6,
193         PERIPH_ID_AHUB,
194         PERIPH_ID_APB2APE,
195         PERIPH_ID_V_RESERVED12,
196         PERIPH_ID_V_RESERVED13,
197         PERIPH_ID_V_RESERVED14,
198         PERIPH_ID_HDA2CODEC2X,
199
200         /* 112 */
201         PERIPH_ID_ATOMICS,
202         PERIPH_ID_V_RESERVED17,
203         PERIPH_ID_V_RESERVED18,
204         PERIPH_ID_V_RESERVED19,
205         PERIPH_ID_V_RESERVED20,
206         PERIPH_ID_V_RESERVED21,
207         PERIPH_ID_V_RESERVED22,
208         PERIPH_ID_ACTMON,
209
210         /* 120 */
211         PERIPH_ID_EXTPERIPH1,
212         PERIPH_ID_EXTPERIPH2,
213         PERIPH_ID_EXTPERIPH3,
214         PERIPH_ID_OOB,
215         PERIPH_ID_SATA,
216         PERIPH_ID_HDA,
217         PERIPH_ID_V_RESERVED30,
218         PERIPH_ID_V_RESERVED31,
219
220         /* W word: 31:0 */
221         PERIPH_ID_HDA2HDMICODEC,
222         PERIPH_ID_SATACOLD,
223         PERIPH_ID_W_RESERVED2,
224         PERIPH_ID_W_RESERVED3,
225         PERIPH_ID_W_RESERVED4,
226         PERIPH_ID_W_RESERVED5,
227         PERIPH_ID_W_RESERVED6,
228         PERIPH_ID_W_RESERVED7,
229
230         /* 136 */
231         PERIPH_ID_CEC,
232         PERIPH_ID_W_RESERVED9,
233         PERIPH_ID_W_RESERVED10,
234         PERIPH_ID_W_RESERVED11,
235         PERIPH_ID_W_RESERVED12,
236         PERIPH_ID_W_RESERVED13,
237         PERIPH_ID_XUSB_PADCTL,
238         PERIPH_ID_W_RESERVED15,
239
240         /* 144 */
241         PERIPH_ID_W_RESERVED16,
242         PERIPH_ID_W_RESERVED17,
243         PERIPH_ID_W_RESERVED18,
244         PERIPH_ID_W_RESERVED19,
245         PERIPH_ID_W_RESERVED20,
246         PERIPH_ID_ENTROPY,
247         PERIPH_ID_DDS,
248         PERIPH_ID_W_RESERVED23,
249
250         /* 152 */
251         PERIPH_ID_W_RESERVED24,
252         PERIPH_ID_W_RESERVED25,
253         PERIPH_ID_W_RESERVED26,
254         PERIPH_ID_DVFS,
255         PERIPH_ID_XUSB_SS,
256         PERIPH_ID_W_RESERVED29,
257         PERIPH_ID_W_RESERVED30,
258         PERIPH_ID_W_RESERVED31,
259
260         PERIPH_ID_X_FIRST,
261         /* X word: 31:0 */
262         PERIPH_ID_SPARE = PERIPH_ID_X_FIRST,
263         PERIPH_ID_X_RESERVED1,
264         PERIPH_ID_X_RESERVED2,
265         PERIPH_ID_X_RESERVED3,
266         PERIPH_ID_CAM_MCLK,
267         PERIPH_ID_CAM_MCLK2,
268         PERIPH_ID_I2C6,
269         PERIPH_ID_X_RESERVED7,
270
271         /* 168 */
272         PERIPH_ID_X_RESERVED8,
273         PERIPH_ID_X_RESERVED9,
274         PERIPH_ID_X_RESERVED10,
275         PERIPH_ID_VIM2_CLK,
276         PERIPH_ID_X_RESERVED12,
277         PERIPH_ID_X_RESERVED13,
278         PERIPH_ID_EMC_DLL,
279         PERIPH_ID_X_RESERVED15,
280
281         /* 176 */
282         PERIPH_ID_HDMI_AUDIO,
283         PERIPH_ID_CLK72MHZ,
284         PERIPH_ID_VIC,
285         PERIPH_ID_X_RESERVED19,
286         PERIPH_ID_X_RESERVED20,
287         PERIPH_ID_DPAUX,
288         PERIPH_ID_SOR0,
289         PERIPH_ID_X_RESERVED23,
290
291         /* 184 */
292         PERIPH_ID_GPU,
293         PERIPH_ID_X_RESERVED25,
294         PERIPH_ID_X_RESERVED26,
295         PERIPH_ID_X_RESERVED27,
296         PERIPH_ID_X_RESERVED28,
297         PERIPH_ID_X_RESERVED29,
298         PERIPH_ID_X_RESERVED30,
299         PERIPH_ID_X_RESERVED31,
300
301         PERIPH_ID_Y_FIRST,
302         /* Y word: 31:0 (192:223) */
303         PERIPH_ID_SPARE1 = PERIPH_ID_Y_FIRST,
304         PERIPH_ID_Y_RESERVED1,
305         PERIPH_ID_Y_RESERVED2,
306         PERIPH_ID_Y_RESERVED3,
307         PERIPH_ID_Y_RESERVED4,
308         PERIPH_ID_Y_RESERVED5,
309         PERIPH_ID_APE,
310         PERIPH_ID_Y_RESERVED7,
311
312         /* 200 */
313         PERIPH_ID_MC_CDPA,
314         PERIPH_ID_Y_RESERVED9,
315         PERIPH_ID_Y_RESERVED10,
316         PERIPH_ID_Y_RESERVED11,
317         PERIPH_ID_Y_RESERVED12,
318         PERIPH_ID_PEX_USB_UPHY,
319         PERIPH_ID_Y_RESERVED14,
320         PERIPH_ID_Y_RESERVED15,
321
322         /* 208 */
323         PERIPH_ID_VI_I2C,
324         PERIPH_ID_Y_RESERVED17,
325         PERIPH_ID_Y_RESERVED18,
326         PERIPH_ID_QSPI,
327         PERIPH_ID_Y_RESERVED20,
328         PERIPH_ID_Y_RESERVED21,
329         PERIPH_ID_Y_RESERVED22,
330         PERIPH_ID_Y_RESERVED23,
331
332         /* 216 */
333         PERIPH_ID_Y_RESERVED24,
334         PERIPH_ID_Y_RESERVED25,
335         PERIPH_ID_Y_RESERVED26,
336         PERIPH_ID_Y_RESERVED27,
337         PERIPH_ID_Y_RESERVED28,
338         PERIPH_ID_Y_RESERVED29,
339         PERIPH_ID_Y_RESERVED30,
340         PERIPH_ID_Y_RESERVED31,
341
342         PERIPH_ID_COUNT,
343         PERIPH_ID_NONE = -1,
344 };
345
346 enum pll_out_id {
347         PLL_OUT1,
348         PLL_OUT2,
349         PLL_OUT3,
350         PLL_OUT4
351 };
352
353 /*
354  * Clock peripheral IDs which sadly don't match up with PERIPH_ID. we want
355  * callers to use the PERIPH_ID for all access to peripheral clocks to avoid
356  * confusion bewteen PERIPH_ID_... and PERIPHC_...
357  *
358  * We don't call this CLOCK_PERIPH_ID or PERIPH_CLOCK_ID as it would just be
359  * confusing.
360  */
361 enum periphc_internal_id {
362         /* 0x00 */
363         PERIPHC_I2S2,
364         PERIPHC_I2S3,
365         PERIPHC_SPDIF_OUT,
366         PERIPHC_SPDIF_IN,
367         PERIPHC_PWM,
368         PERIPHC_05h,
369         PERIPHC_SBC2,
370         PERIPHC_SBC3,
371
372         /* 0x08 */
373         PERIPHC_08h,
374         PERIPHC_I2C1,
375         PERIPHC_I2C5,
376         PERIPHC_0bh,
377         PERIPHC_0ch,
378         PERIPHC_SBC1,
379         PERIPHC_DISP1,
380         PERIPHC_DISP2,
381
382         /* 0x10 */
383         PERIPHC_10h,
384         PERIPHC_11h,
385         PERIPHC_VI,
386         PERIPHC_13h,
387         PERIPHC_SDMMC1,
388         PERIPHC_SDMMC2,
389         PERIPHC_G3D,
390         PERIPHC_G2D,
391
392         /* 0x18 */
393         PERIPHC_18h,
394         PERIPHC_SDMMC4,
395         PERIPHC_VFIR,
396         PERIPHC_1Bh,
397         PERIPHC_1Ch,
398         PERIPHC_HSI,
399         PERIPHC_UART1,
400         PERIPHC_UART2,
401
402         /* 0x20 */
403         PERIPHC_HOST1X,
404         PERIPHC_21h,
405         PERIPHC_22h,
406         PERIPHC_HDMI,
407         PERIPHC_24h,
408         PERIPHC_25h,
409         PERIPHC_I2C2,
410         PERIPHC_EMC,
411
412         /* 0x28 */
413         PERIPHC_UART3,
414         PERIPHC_29h,
415         PERIPHC_VI_SENSOR,
416         PERIPHC_2bh,
417         PERIPHC_2ch,
418         PERIPHC_SBC4,
419         PERIPHC_I2C3,
420         PERIPHC_SDMMC3,
421
422         /* 0x30 */
423         PERIPHC_UART4,
424         PERIPHC_UART5,
425         PERIPHC_VDE,
426         PERIPHC_OWR,
427         PERIPHC_NOR,
428         PERIPHC_CSITE,
429         PERIPHC_I2S1,
430         PERIPHC_DTV,
431
432         /* 0x38 */
433         PERIPHC_38h,
434         PERIPHC_39h,
435         PERIPHC_3ah,
436         PERIPHC_3bh,
437         PERIPHC_MSENC,
438         PERIPHC_TSEC,
439         PERIPHC_3eh,
440         PERIPHC_OSC,
441
442         PERIPHC_VW_FIRST,
443         /* 0x40 */
444         PERIPHC_40h = PERIPHC_VW_FIRST,
445         PERIPHC_MSELECT,
446         PERIPHC_TSENSOR,
447         PERIPHC_I2S4,
448         PERIPHC_I2S5,
449         PERIPHC_I2C4,
450         PERIPHC_SBC5,
451         PERIPHC_SBC6,
452
453         /* 0x48 */
454         PERIPHC_AUDIO,
455         PERIPHC_49h,
456         PERIPHC_4ah,
457         PERIPHC_4bh,
458         PERIPHC_4ch,
459         PERIPHC_HDA2CODEC2X,
460         PERIPHC_ACTMON,
461         PERIPHC_EXTPERIPH1,
462
463         /* 0x50 */
464         PERIPHC_EXTPERIPH2,
465         PERIPHC_EXTPERIPH3,
466         PERIPHC_52h,
467         PERIPHC_I2CSLOW,
468         PERIPHC_SYS,
469         PERIPHC_55h,
470         PERIPHC_56h,
471         PERIPHC_57h,
472
473         /* 0x58 */
474         PERIPHC_58h,
475         PERIPHC_59h,
476         PERIPHC_5ah,
477         PERIPHC_5bh,
478         PERIPHC_SATAOOB,
479         PERIPHC_SATA,
480         PERIPHC_HDA,            /* 0x428 */
481         PERIPHC_5fh,
482
483         PERIPHC_X_FIRST,
484         /* 0x60 */
485         PERIPHC_XUSB_CORE_HOST = PERIPHC_X_FIRST,       /* 0x600 */
486         PERIPHC_XUSB_FALCON,
487         PERIPHC_XUSB_FS,
488         PERIPHC_XUSB_CORE_DEV,
489         PERIPHC_XUSB_SS,
490         PERIPHC_CILAB,
491         PERIPHC_CILCD,
492         PERIPHC_CILE,
493
494         /* 0x68 */
495         PERIPHC_DSIA_LP,
496         PERIPHC_DSIB_LP,
497         PERIPHC_ENTROPY,
498         PERIPHC_DVFS_REF,
499         PERIPHC_DVFS_SOC,
500         PERIPHC_TRACECLKIN,
501         PERIPHC_6Eh,
502         PERIPHC_6Fh,
503
504         /* 0x70 */
505         PERIPHC_EMC_LATENCY,
506         PERIPHC_SOC_THERM,
507         PERIPHC_72h,
508         PERIPHC_73h,
509         PERIPHC_74h,
510         PERIPHC_75h,
511         PERIPHC_VI_SENSOR2,
512         PERIPHC_I2C6,
513
514         /* 0x78 */
515         PERIPHC_78h,
516         PERIPHC_EMC_DLL,
517         PERIPHC_7ah,
518         PERIPHC_CLK72MHZ,
519         PERIPHC_7ch,
520         PERIPHC_7dh,
521         PERIPHC_VIC,
522         PERIPHC_7fh,
523
524         PERIPHC_Y_FIRST,
525         /* 0x80 */
526         PERIPHC_SDMMC_LEGACY_TM = PERIPHC_Y_FIRST,      /* 0x694 */
527         PERIPHC_NVDEC,                  /* 0x698 */
528         PERIPHC_NVJPG,                  /* 0x69c */
529         PERIPHC_NVENC,                  /* 0x6a0 */
530         PERIPHC_84h,
531         PERIPHC_85h,
532         PERIPHC_86h,
533         PERIPHC_87h,
534
535         /* 0x88 */
536         PERIPHC_88h,
537         PERIPHC_89h,
538         PERIPHC_DMIC3,                  /* 0x6bc:  */
539         PERIPHC_APE,                    /* 0x6c0:  */
540         PERIPHC_QSPI,                   /* 0x6c4:  */
541         PERIPHC_VI_I2C,                 /* 0x6c8:  */
542         PERIPHC_USB2_HSIC_TRK,          /* 0x6cc:  */
543         PERIPHC_PEX_SATA_USB_RX_BYP,    /* 0x6d0:  */
544
545         /* 0x90 */
546         PERIPHC_MAUD,                   /* 0x6d4:  */
547         PERIPHC_TSECB,                  /* 0x6d8:  */
548
549         PERIPHC_COUNT,
550         PERIPHC_NONE = -1,
551 };
552
553 /* Converts a clock number to a clock register: 0=L, 1=H, 2=U, 0=V, 1=W */
554 #define PERIPH_REG(id) \
555         (id < PERIPH_ID_VW_FIRST) ? \
556                 ((id) >> 5) : ((id - PERIPH_ID_VW_FIRST) >> 5)
557
558 /* Mask value for a clock (within PERIPH_REG(id)) */
559 #define PERIPH_MASK(id) (1 << ((id) & 0x1f))
560
561 /* return 1 if a PLL ID is in range */
562 #define clock_id_is_pll(id) ((id) >= CLOCK_ID_FIRST && (id) < CLOCK_ID_COUNT)
563
564 /* return 1 if a peripheral ID is in range */
565 #define clock_periph_id_isvalid(id) ((id) >= PERIPH_ID_FIRST && \
566                 (id) < PERIPH_ID_COUNT)
567
568 #endif  /* _TEGRA210_CLOCK_TABLES_H_ */