18#ifndef LIBOPENCM3_SCIF_H
19#define LIBOPENCM3_SCIF_H
27#define SCIF_IER MMIO32(SCIF_BASE)
30#define SCIF_IDR MMIO32(SCIF_BASE + 0x0004)
33#define SCIF_IMR MMIO32(SCIF_BASE + 0x0008)
36#define SCIF_ISR MMIO32(SCIF_BASE + 0x000C)
39#define SCIF_ICR MMIO32(SCIF_BASE + 0x0010)
42#define SCIF_PCLKSR MMIO32(SCIF_BASE + 0x0014)
45#define SCIF_UNLOCK MMIO32(SCIF_BASE + 0x0018)
46#define SCIF_UNLOCK_KEY (0xaa << 24)
49#define SCIF_CSCR MMIO32(SCIF_BASE + 0x001C)
52#define SCIF_OSCCTRL0 MMIO32(SCIF_BASE + 0x0020)
53#define SCIF_OSCCTRL0_KEY (SCIF_UNLOCK_KEY | 0x0020)
56#define SCIF_PLL0 MMIO32(SCIF_BASE + 0x0024)
57#define SCIF_PLL0_KEY (SCIF_UNLOCK_KEY | 0x0024)
60#define SCIF_DFLL0CONF MMIO32(SCIF_BASE + 0x0028)
63#define SCIF_DFLL0VAL MMIO32(SCIF_BASE + 0x002C)
66#define SCIF_DFLL0MUL MMIO32(SCIF_BASE + 0x0030)
69#define SCIF_DFLL0STEP MMIO32(SCIF_BASE + 0x0034)
72#define SCIF_DFLL0SSG MMIO32(SCIF_BASE + 0x0038)
75#define SCIF_DFLL0RATIO MMIO32(SCIF_BASE + 0x003C)
78#define SCIF_DFLL0SYNC MMIO32(SCIF_BASE + 0x0040)
81#define SCIF_RCCR MMIO32(SCIF_BASE + 0x0044)
84#define SCIF_RCFASTCFG MMIO32(SCIF_BASE + 0x0048)
87#define SCIF_RCFASTSR MMIO32(SCIF_BASE + 0x004C)
90#define SCIF_RC80MCR MMIO32(SCIF_BASE + 0x0050)
93#define SCIF_HPPCR MMIO32(SCIF_BASE + 0x0064)
96#define SCIF_FPCR MMIO32(SCIF_BASE + 0x0068)
99#define SCIF_FPMUL MMIO32(SCIF_BASE + 0x006C)
102#define SCIF_FPDIV MMIO32(SCIF_BASE + 0x006C)
105#define SCIF_GCCTRL0 MMIO32(SCIF_BASE + 0x0074)
108#define SCIF_GCCTRL1 MMIO32(SCIF_BASE + 0x0078)
111#define SCIF_GCCTRL2 MMIO32(SCIF_BASE + 0x007C)
114#define SCIF_GCCTRL3 MMIO32(SCIF_BASE + 0x0080)
117#define SCIF_GCCTRL4 MMIO32(SCIF_BASE + 0x0084)
120#define SCIF_GCCTRL5 MMIO32(SCIF_BASE + 0x0088)
123#define SCIF_GCCTRL6 MMIO32(SCIF_BASE + 0x008C)
126#define SCIF_GCCTRL7 MMIO32(SCIF_BASE + 0x0090)
129#define SCIF_GCCTRL8 MMIO32(SCIF_BASE + 0x0094)
132#define SCIF_GCCTRL9 MMIO32(SCIF_BASE + 0x0098)
135#define SCIF_GCCTRL10 MMIO32(SCIF_BASE + 0x009C)
138#define SCIF_GCCTRL11 MMIO32(SCIF_BASE + 0x00A0)
140#define SCIF_GCTRL(N) MMIO32(SCIF_BASE + 0x0074 + 0x0004 * (N))
141#define SCIF_GCLK_MAX_NUM 11
144#define SCIF_RCFASTVERSION MMIO32(SCIF_BASE + 0x03D8)
147#define SCIF_GCLKPRESCVERSION MMIO32(SCIF_BASE + 0x03DC)
150#define SCIF_PLLIFAVERSION MMIO32(SCIF_BASE + 0x03E0)
153#define SCIF_OSCIFAVERSION MMIO32(SCIF_BASE + 0x03E4)
156#define SCIF_DFLLIFBVERSION MMIO32(SCIF_BASE + 0x03E8)
159#define SCIF_RCOSCIFAVERSION MMIO32(SCIF_BASE + 0x03EC)
162#define SCIF_RC80MVERSION MMIO32(SCIF_BASE + 0x03F4)
165#define SCIF_GCLKVERSION MMIO32(SCIF_BASE + 0x03F8)
168#define SCIF_VERSION MMIO32(SCIF_BASE + 0x03FC)
175#define SCIF_OSC0RDY (1 << 0)
176#define SCIF_DFLL0LOCKC (1 << 1)
177#define SCIF_DFLL0LOCKF (1 << 2)
178#define SCIF_DFLL0RDY (1 << 3)
179#define SCIF_DFLL0RCS (1 << 4)
180#define SCIF_PLL0LOCK (1 << 6)
181#define SCIF_PLL0LOCKLOST (1 << 7)
182#define SCIF_RCFASTLOCK (1 << 13)
183#define SCIF_RCFASTLOCKLOST (1 << 14)
185#define SCIF_OSCCTRL_MODE (1 << 0)
186#define SCIF_OSCCTRL_GAIN_SHIFT 1
187#define SCIF_OSCCTRL_GAIN_MASK (3 << SCIF_OSCCTRL_GAIN_SHIFT)
188#define SCIF_OSCCTRL_AGC (1 << 3)
189#define SCIF_OSCCTRL_STARTUP_SHIFT 8
190#define SCIF_OSCCTRL_STARTUP_MASK (0xf << SCIF_OSCCTRL_STARTUP_SHIFT)
191#define SCIF_OSCCTRL_OSCEN (1 << 16)
193#define _MASKED_VALUE(V, S, M) (((V) << (S)) & (M))
195#define SCIF_PLL0_PLLEN (1 << 0)
196#define SCIF_PLL0_PLLOSC_SHIFT 1
197#define SCIF_PLL0_PLLOSC_MASK (3 << SCIF_PLL0_PLLOSC_SHIFT)
198#define SCIF_PLL0_PLLOSC_MASKED(V) _MASKED_VALUE((V), SCIF_PLL0_PLLOSC_SHIFT, SCIF_PLL0_PLLOSC_MASK)
200#define SCIF_PLL0_PLLOPT_SHIFT 3
201#define SCIF_PLL0_PLLOPT_MASK (7 << SCIF_PLL0_PLLOPT_SHIFT)
202#define SCIF_PLL0_PLLOPT_MASKED(V) _MASKED_VALUE((V), SCIF_PLL0_PLLOPT_SHIFT, SCIF_PLL0_PLLOPT_MASK)
204#define SCIF_PLL0_PLLDIV_SHIFT 8
205#define SCIF_PLL0_PLLDIV_MASK (0xf << SCIF_PLL0_PLLDIV_SHIFT)
206#define SCIF_PLL0_PLLDIV_MASKED(V) _MASKED_VALUE((V), SCIF_PLL0_PLLDIV_SHIFT, SCIF_PLL0_PLLDIV_MASK)
208#define SCIF_PLL0_PLLMUL_SHIFT 16
209#define SCIF_PLL0_PLLMUL_MASK (0xf << SCIF_PLL0_PLLMUL_SHIFT)
210#define SCIF_PLL0_PLLMUL_MASKED(V) _MASKED_VALUE((V), SCIF_PLL0_PLLMUL_SHIFT, SCIF_PLL0_PLLMUL_MASK)
212#define SCIF_PLL0_PLLCOUNT_SHIFT 24
213#define SCIF_PLL0_PLLCOUNT_MASK (0x3f << SCIF_PLL0_PLLCOUNT_SHIFT)
214#define SCIF_PLL0_PLLCOUNT_MASKED(V) _MASKED_VALUE((V), SCIF_PLL0_PLLCOUNT_SHIFT, SCIF_PLL0_PLLCOUNT_MASK)
217#define SCIF_GCCTRL_CEN (1 << 0)
218#define SCIF_GCCTRL_DIVEN (1 << 1)
219#define SCIF_GCCTRL_OSCSEL_SHIFT 8
220#define SCIF_GCCTRL_OSCSEL_MASK (0x1f << SCIF_GCCTRL_OSCSEL_SHIFT)
221#define SCIF_GCCTRL_OSCSEL_MASKED(V) _MASKED_VALUE(V, SCIF_GCCTRL_OSCSEL_SHIFT, SCIF_GCCTRL_OSCSEL_MASK)
222#define SCIF_GCCTRL_DIV_SHIFT 16
223#define SCIF_GCCTRL_DIV_MASK (0xffff << SCIF_GCCTRL_DIV_SHIFT)
224#define SCIF_GCCTRL_DIV_MASKED(V) _MASKED_VALUE(V, SCIF_GCCTRL_DIV_SHIFT, SCIF_GCCTRL_DIV_MASK)
int scif_osc_enable(enum osc_mode mode, uint32_t freq, enum osc_startup startup)
Enable external oscillator.
void scif_enable_gclk(enum generic_clock gclk, enum gclk_src source_clock, uint16_t div)
Configure and enable Generic Clock.
int scif_enable_pll(uint8_t delay, uint8_t mul, uint8_t div, uint8_t pll_opt, enum pll_clk_src source_clock)
Configure and enable PLL clock.