// See LICENSE for license details. | |
#ifndef _SIFIVE_PRCI_H | |
#define _SIFIVE_PRCI_H | |
/* Register offsets */ | |
#define PRCI_HFROSCCFG (0x0000) | |
#define PRCI_HFXOSCCFG (0x0004) | |
#define PRCI_PLLCFG (0x0008) | |
#define PRCI_PLLDIV (0x000C) | |
#define PRCI_PROCMONCFG (0x00F0) | |
/* Fields */ | |
#define ROSC_DIV(x) (((x) & 0x2F) << 0 ) | |
#define ROSC_TRIM(x) (((x) & 0x1F) << 16) | |
#define ROSC_EN(x) (((x) & 0x1 ) << 30) | |
#define ROSC_RDY(x) (((x) & 0x1 ) << 31) | |
#define XOSC_EN(x) (((x) & 0x1) << 30) | |
#define XOSC_RDY(x) (((x) & 0x1) << 31) | |
#define PLL_R(x) (((x) & 0x7) << 0) | |
// single reserved bit for F LSB. | |
#define PLL_F(x) (((x) & 0x3F) << 4) | |
#define PLL_Q(x) (((x) & 0x3) << 10) | |
#define PLL_SEL(x) (((x) & 0x1) << 16) | |
#define PLL_REFSEL(x) (((x) & 0x1) << 17) | |
#define PLL_BYPASS(x) (((x) & 0x1) << 18) | |
#define PLL_LOCK(x) (((x) & 0x1) << 31) | |
#define PLL_R_default 0x1 | |
#define PLL_F_default 0x1F | |
#define PLL_Q_default 0x3 | |
#define PLL_REFSEL_HFROSC 0x0 | |
#define PLL_REFSEL_HFXOSC 0x1 | |
#define PLL_SEL_HFROSC 0x0 | |
#define PLL_SEL_PLL 0x1 | |
#define PLL_FINAL_DIV(x) (((x) & 0x3F) << 0) | |
#define PLL_FINAL_DIV_BY_1(x) (((x) & 0x1 ) << 8) | |
#define PROCMON_DIV(x) (((x) & 0x1F) << 0) | |
#define PROCMON_TRIM(x) (((x) & 0x1F) << 8) | |
#define PROCMON_EN(x) (((x) & 0x1) << 16) | |
#define PROCMON_SEL(x) (((x) & 0x3) << 24) | |
#define PROCMON_NT_EN(x) (((x) & 0x1) << 28) | |
#define PROCMON_SEL_HFCLK 0 | |
#define PROCMON_SEL_HFXOSCIN 1 | |
#define PROCMON_SEL_PLLOUTDIV 2 | |
#define PROCMON_SEL_PROCMON 3 | |
#endif // _SIFIVE_PRCI_H |