1 // See LICENSE for license details.
\r
3 #ifndef _SIFIVE_PRCI_H
\r
4 #define _SIFIVE_PRCI_H
\r
6 /* Register offsets */
\r
8 #define PRCI_HFROSCCFG (0x0000)
\r
9 #define PRCI_HFXOSCCFG (0x0004)
\r
10 #define PRCI_PLLCFG (0x0008)
\r
11 #define PRCI_PLLDIV (0x000C)
\r
12 #define PRCI_PROCMONCFG (0x00F0)
\r
15 #define ROSC_DIV(x) (((x) & 0x2F) << 0 )
\r
16 #define ROSC_TRIM(x) (((x) & 0x1F) << 16)
\r
17 #define ROSC_EN(x) (((x) & 0x1 ) << 30)
\r
18 #define ROSC_RDY(x) (((x) & 0x1 ) << 31)
\r
20 #define XOSC_EN(x) (((x) & 0x1) << 30)
\r
21 #define XOSC_RDY(x) (((x) & 0x1) << 31)
\r
23 #define PLL_R(x) (((x) & 0x7) << 0)
\r
24 // single reserved bit for F LSB.
\r
25 #define PLL_F(x) (((x) & 0x3F) << 4)
\r
26 #define PLL_Q(x) (((x) & 0x3) << 10)
\r
27 #define PLL_SEL(x) (((x) & 0x1) << 16)
\r
28 #define PLL_REFSEL(x) (((x) & 0x1) << 17)
\r
29 #define PLL_BYPASS(x) (((x) & 0x1) << 18)
\r
30 #define PLL_LOCK(x) (((x) & 0x1) << 31)
\r
32 #define PLL_R_default 0x1
\r
33 #define PLL_F_default 0x1F
\r
34 #define PLL_Q_default 0x3
\r
36 #define PLL_REFSEL_HFROSC 0x0
\r
37 #define PLL_REFSEL_HFXOSC 0x1
\r
39 #define PLL_SEL_HFROSC 0x0
\r
40 #define PLL_SEL_PLL 0x1
\r
42 #define PLL_FINAL_DIV(x) (((x) & 0x3F) << 0)
\r
43 #define PLL_FINAL_DIV_BY_1(x) (((x) & 0x1 ) << 8)
\r
45 #define PROCMON_DIV(x) (((x) & 0x1F) << 0)
\r
46 #define PROCMON_TRIM(x) (((x) & 0x1F) << 8)
\r
47 #define PROCMON_EN(x) (((x) & 0x1) << 16)
\r
48 #define PROCMON_SEL(x) (((x) & 0x3) << 24)
\r
49 #define PROCMON_NT_EN(x) (((x) & 0x1) << 28)
\r
51 #define PROCMON_SEL_HFCLK 0
\r
52 #define PROCMON_SEL_HFXOSCIN 1
\r
53 #define PROCMON_SEL_PLLOUTDIV 2
\r
54 #define PROCMON_SEL_PROCMON 3
\r
56 #endif // _SIFIVE_PRCI_H
\r