libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
ccm.h
Go to the documentation of this file.
1/** @defgroup ccm_defines CCM Defines
2 *
3 * @brief <b>Defined Constants and Types for the VF6xx Common Clock Module</b>
4 *
5 * @ingroup VF6xx_defines
6 *
7 * @version 1.0.0
8 *
9 * @author @htmlonly &copy; @endhtmlonly 2014
10 * Stefan Agner <stefan@agner.ch>
11 *
12 * @date 30 June 2014
13 *
14 * LGPL License Terms @ref lgpl_license
15 * */
16/*
17 * This file is part of the libopencm3 project.
18 *
19 * Copyright (C) 2014 Stefan Agner <stefan@agner.ch>
20 *
21 * This library is free software: you can redistribute it and/or modify
22 * it under the terms of the GNU Lesser General Public License as published by
23 * the Free Software Foundation, either version 3 of the License, or
24 * (at your option) any later version.
25 *
26 * This library is distributed in the hope that it will be useful,
27 * but WITHOUT ANY WARRANTY; without even the implied warranty of
28 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29 * GNU Lesser General Public License for more details.
30 *
31 * You should have received a copy of the GNU Lesser General Public License
32 * along with this library. If not, see <http://www.gnu.org/licenses/>.
33 */
34
35#ifndef LIBOPENCM3_CCM_H
36#define LIBOPENCM3_CCM_H
37
40
41/* --- CCM registers ------------------------------------------------------- */
42
43#define CCM_CCR MMIO32(CCM_BASE + 0x00)
44#define CCM_CSR MMIO32(CCM_BASE + 0x04)
45#define CCM_CCSR MMIO32(CCM_BASE + 0x08)
46#define CCM_CACRR MMIO32(CCM_BASE + 0x0C)
47#define CCM_CSCMR1 MMIO32(CCM_BASE + 0x10)
48#define CCM_CSCDR1 MMIO32(CCM_BASE + 0x14)
49#define CCM_CSCDR2 MMIO32(CCM_BASE + 0x18)
50#define CCM_CSCDR3 MMIO32(CCM_BASE + 0x1C)
51#define CCM_CSCMR2 MMIO32(CCM_BASE + 0x20)
52
53#define CCM_CTOR MMIO32(CCM_BASE + 0x28)
54#define CCM_CLPCR MMIO32(CCM_BASE + 0x2C)
55#define CCM_CISR MMIO32(CCM_BASE + 0x30)
56#define CCM_CIMR MMIO32(CCM_BASE + 0x34)
57#define CCM_CCOSR MMIO32(CCM_BASE + 0x38)
58#define CCM_CGPR MMIO32(CCM_BASE + 0x3C)
59#define CCM_CCGR(offset) MMIO32(CCM_BASE + 0x40 + (offset))
60#define CCM_CMEOR(ovrr) MMIO32(CCM_BASE + 0x70 + (4 * (ovrr)))
61#define CCM_CPPDSR MMIO32(CCM_BASE + 0x88)
62
63#define CCM_CCOWR MMIO32(CCM_BASE + 0x8C)
64#define CCM_CCPGR(pcgr) MMIO32(CCM_BASE + 0x90 + (4 * (pcgr)))
65
66/* --- CCM values -....----------------------------------------------------- */
67
68/* CCR: CCM Control Register */
69#define CCM_CCR_FIRC_EN (1 << 16)
70#define CCM_CCR_FXOSC_EN (1 << 12)
71#define CCM_CCR_OSCNT_MASK 0xff
72
73/* CSR: CCM Status Register */
74#define CCM_CSR_FXOSC_RDY (1 << 5)
75
76/* CCSR: CCM Clock Switcher Register */
77#define CCM_CCSR_PLL3_PFDN4_EN (1 << 31)
78#define CCM_CCSR_PLL3_PFDN3_EN (1 << 30)
79#define CCM_CCSR_PLL3_PFDN2_EN (1 << 29)
80#define CCM_CCSR_PLL3_PFDN1_EN (1 << 28)
81
82#define CCM_CCSR_DAP_EN (1 << 24)
83
84/* PLL1/PLL2 PFD SEL definition */
85#define CCM_CCSR_PLL2_PFD_CLK_SEL_SHIFT 19
86#define CCM_CCSR_PLL2_PFD_CLK_SEL_MASK (0x7 << 19)
87#define CCM_CCSR_PLL1_PFD_CLK_SEL_SHIFT 16
88#define CCM_CCSR_PLL1_PFD_CLK_SEL_MASK (0x7 << 16)
89
90#define CCM_CCSR_PLL_PFD_CLK_SEL_MAIN 0x0
91#define CCM_CCSR_PLL_PFD_CLK_SEL_PFD1 0x1
92#define CCM_CCSR_PLL_PFD_CLK_SEL_PFD2 0x2
93#define CCM_CCSR_PLL_PFD_CLK_SEL_PFD3 0x3
94#define CCM_CCSR_PLL_PFD_CLK_SEL_PFD4 0x4
95
96#define CCM_CCSR_PLL2_PFDN4_EN (1 << 15)
97#define CCM_CCSR_PLL2_PFDN3_EN (1 << 14)
98#define CCM_CCSR_PLL2_PFDN2_EN (1 << 13)
99#define CCM_CCSR_PLL2_PFDN1_EN (1 << 12)
100
101#define CCM_CCSR_PLL1_PFDN4_EN (1 << 11)
102#define CCM_CCSR_PLL1_PFDN3_EN (1 << 10)
103#define CCM_CCSR_PLL1_PFDN2_EN (1 << 9)
104#define CCM_CCSR_PLL1_PFDN1_EN (1 << 8)
105
106#define CCM_CCSR_DDRC_CLK_SEL (1 << 7)
107#define CCM_CCSR_FAST_CLK_SEL (1 << 6)
108#define CCM_CCSR_SLOW_CLK_SEL (1 << 5)
109
110#define CCM_CCSR_SYS_CLK_SEL_SHIFT 0
111#define CCM_CCSR_SYS_CLK_SEL_MASK 0x7
112#define CCM_CCSR_SYS_CLK_SEL_FAST 0x0
113#define CCM_CCSR_SYS_CLK_SEL_SLOW 0x1
114#define CCM_CCSR_SYS_CLK_SEL_PLL2_PFD 0x2
115#define CCM_CCSR_SYS_CLK_SEL_PLL2 0x3
116#define CCM_CCSR_SYS_CLK_SEL_PLL1_PFD 0x4
117#define CCM_CCSR_SYS_CLK_SEL_PLL3 0x5
118
119/* CACRR: ARM Clock Root Register */
120#define CCM_CACRR_FLEX_CLK_DIV_SHIFT 22
121#define CCM_CACRR_FLEX_CLK_DIV_MASK (0x7 << 22)
122#define CCM_CACRR_PLL6_CLK_DIV (1 << 21)
123#define CCM_CACRR_PLL3_CLK_DIV (1 << 20)
124#define CCM_CACRR_PLL1_PFD_CLK_DIV_SHIFT 16
125#define CCM_CACRR_PLL1_PFD_CLK_DIV_MASK (0x3 << 16)
126#define CCM_CACRR_IPG_CLK_DIV_SHIFT 11
127#define CCM_CACRR_IPG_CLK_DIV_MASK (0x3 << 11)
128#define CCM_CACRR_PLL4_CLK_DIV_SHIFT 6
129#define CCM_CACRR_PLL4_CLK_DIV_MASK (0x7 << 6)
130#define CCM_CACRR_BUS_CLK_DIV_SHIFT 3
131#define CCM_CACRR_BUS_CLK_DIV_MASK (0x7 << 3)
132#define CCM_CACRR_ARM_CLK_DIV_SHIFT 0
133#define CCM_CACRR_ARM_CLK_DIV_MASK (0x7 << 0)
134
135/* --- Variable definitions ------------------------------------------------ */
136
137extern uint32_t ccm_core_clk;
138extern uint32_t ccm_platform_bus_clk;
139extern uint32_t ccm_ipg_bus_clk;
140
142 /* AIPS0 */
239
240 /* AIPS1 */
338
339/* --- Function prototypes ------------------------------------------------- */
340
342
344
347void ccm_calculate_clocks(void);
348
350
351#endif
ccm_clock_gate
Definition: ccm.h:141
@ CG54_RESERVED
Definition: ccm.h:197
@ CG33_RESERVED
Definition: ccm.h:176
@ CG18_SAI3
Definition: ccm.h:161
@ CG55_RESERVED
Definition: ccm.h:198
@ CG59_RESERVED
Definition: ccm.h:202
@ CG87_NOTUSED
Definition: ccm.h:230
@ CG118_RESERVED
Definition: ccm.h:263
@ CG45_PORTE
Definition: ccm.h:188
@ CG117_RESERVED
Definition: ccm.h:262
@ CG122_RESERVED
Definition: ccm.h:267
@ CG84_NOTUSED
Definition: ccm.h:227
@ CG158_RESERVED
Definition: ccm.h:303
@ CG119_RESERVED
Definition: ccm.h:264
@ CG135_VADC
Definition: ccm.h:280
@ CG136_VDEC
Definition: ccm.h:281
@ CG66_ESAI
Definition: ccm.h:209
@ CG14_RESERVED
Definition: ccm.h:157
@ CG37_RESERVED
Definition: ccm.h:180
@ CG188_RESERVED
Definition: ccm.h:333
@ CG71_I2C1
Definition: ccm.h:214
@ CG97_DMA_MUX2
Definition: ccm.h:242
@ CG123_ADC1
Definition: ccm.h:268
@ CG150_RESERVED
Definition: ccm.h:295
@ CG178_RESERVED
Definition: ccm.h:323
@ CG113_SDHC0
Definition: ccm.h:258
@ CG35_RESERVED
Definition: ccm.h:178
@ CG137_VIU3
Definition: ccm.h:282
@ CG90_NOTUSED
Definition: ccm.h:233
@ CG76_GPC
Definition: ccm.h:219
@ CG41_PORTA
Definition: ccm.h:184
@ CG27_ADC0
Definition: ccm.h:170
@ CG176_RESERVED
Definition: ccm.h:321
@ CG61_RESERVED
Definition: ccm.h:204
@ CG147_RESERVED
Definition: ccm.h:292
@ CG157_RESERVED
Definition: ccm.h:302
@ CG78_RESERVED
Definition: ccm.h:221
@ CG56_DCU0
Definition: ccm.h:199
@ CG8_UART1
Definition: ccm.h:151
@ CG30_WDOG_A5
Definition: ccm.h:173
@ CG82_NOTUSED
Definition: ccm.h:225
@ CG191_RESERVED
Definition: ccm.h:336
@ CG39_RESERVED
Definition: ccm.h:182
@ CG189_RESERVED
Definition: ccm.h:334
@ CG5_DMA_MUX1
Definition: ccm.h:148
@ CG182_RESERVED
Definition: ccm.h:327
@ CG144_ETH0_1588
Definition: ccm.h:289
@ CG171_RESERVED
Definition: ccm.h:316
@ CG15_SAI0
Definition: ccm.h:158
@ CG13_SPI1
Definition: ccm.h:156
@ CG92_NOTUSED
Definition: ccm.h:235
@ CG88_NOTUSED
Definition: ccm.h:231
@ CG152_DCU1
Definition: ccm.h:297
@ CG17_SAI2
Definition: ccm.h:160
@ CG91_NOTUSED
Definition: ccm.h:234
@ CG63_RESERVED
Definition: ccm.h:206
@ CG165_RESERVED
Definition: ccm.h:310
@ CG131_RESERVED
Definition: ccm.h:276
@ CG111_RESERVED
Definition: ccm.h:256
@ CG44_PORTD
Definition: ccm.h:187
@ CG138_RESERVED
Definition: ccm.h:283
@ CG127_RESERVED
Definition: ccm.h:272
@ CG172_RESERVED
Definition: ccm.h:317
@ CG109_SPI3
Definition: ccm.h:254
@ CG46_RESERVED
Definition: ccm.h:189
@ CG79_CMU
Definition: ccm.h:222
@ CG36_QSPI0
Definition: ccm.h:179
@ CG96_RESERVED
Definition: ccm.h:241
@ CG116_USBC1
Definition: ccm.h:261
@ CG42_PORTB
Definition: ccm.h:185
@ CG86_NOTUSED
Definition: ccm.h:229
@ CG62_RESERVED
Definition: ccm.h:205
@ CG126_SEG_LCD
Definition: ccm.h:271
@ CG99_RESERVED
Definition: ccm.h:244
@ CG115_RESERVED
Definition: ccm.h:260
@ CG32_LPTMR
Definition: ccm.h:175
@ CG49_RESERVED
Definition: ccm.h:192
@ CG22_PDB
Definition: ccm.h:165
@ CG73_RESERVED
Definition: ccm.h:216
@ CG146_RESERVED
Definition: ccm.h:291
@ CG156_RESERVED
Definition: ccm.h:301
@ CG101_OTP_CTRL
Definition: ccm.h:246
@ CG154_RESERVED
Definition: ccm.h:299
@ CG94_NOTUSED
Definition: ccm.h:237
@ CG170_RESERVED
Definition: ccm.h:315
@ CG80_NOTUSED
Definition: ccm.h:223
@ CG52_RESERVED
Definition: ccm.h:195
@ CG34_RLE
Definition: ccm.h:177
@ CG4_DMA_MUX0
Definition: ccm.h:147
@ CG68_RESERVED
Definition: ccm.h:211
@ CG121_FTM3
Definition: ccm.h:266
@ CG25_FTM1
Definition: ccm.h:168
@ CG181_RESERVED
Definition: ccm.h:326
@ CG141_DAC1
Definition: ccm.h:286
@ CG31_WDOG_M4
Definition: ccm.h:174
@ CG40_IOMUX
Definition: ccm.h:183
@ CG103_RESERVED
Definition: ccm.h:248
@ CG125_TCON1
Definition: ccm.h:270
@ CG110_DDRMC
Definition: ccm.h:255
@ CG167_I2C3
Definition: ccm.h:312
@ CG3_RESERVED
Definition: ccm.h:146
@ CG160_NFC
Definition: ccm.h:305
@ CG53_RESERVED
Definition: ccm.h:196
@ CG120_FTM2
Definition: ccm.h:265
@ CG29_TCON0
Definition: ccm.h:172
@ CG164_RESERVED
Definition: ccm.h:309
@ CG190_RESERVED
Definition: ccm.h:335
@ CG161_RESERVED
Definition: ccm.h:306
@ CG108_SPI2
Definition: ccm.h:253
@ CG26_RESERVED
Definition: ccm.h:169
@ CG28_RESERVED
Definition: ccm.h:171
@ CG67_RESERVED
Definition: ccm.h:210
@ CG11_RESERVED
Definition: ccm.h:154
@ CG174_RESERVED
Definition: ccm.h:319
@ CG89_NOTUSED
Definition: ccm.h:232
@ CG51_RESERVED
Definition: ccm.h:194
@ CG38_RESERVED
Definition: ccm.h:181
@ CG153_RESERVED
Definition: ccm.h:298
@ CG74_WKUP
Definition: ccm.h:217
@ CG148_FLEXCAN1
Definition: ccm.h:293
@ CG85_NOTUSED
Definition: ccm.h:228
@ CG114_SDHC1
Definition: ccm.h:259
@ CG149_RESERVED
Definition: ccm.h:294
@ CG179_RESERVED
Definition: ccm.h:324
@ CG64_ASRC
Definition: ccm.h:207
@ CG48_ANADIG
Definition: ccm.h:191
@ CG58_RESERVED
Definition: ccm.h:201
@ CG175_RESERVED
Definition: ccm.h:320
@ CG24_FTM0
Definition: ccm.h:167
@ CG102_RESERVED
Definition: ccm.h:247
@ CG155_RESERVED
Definition: ccm.h:300
@ CG186_RESERVED
Definition: ccm.h:331
@ CG106_UART5
Definition: ccm.h:251
@ CG21_RESERVED
Definition: ccm.h:164
@ CG168_ETH_L2
Definition: ccm.h:313
@ CG83_NOTUSED
Definition: ccm.h:226
@ CG169_RESERVED
Definition: ccm.h:314
@ CG43_PORTC
Definition: ccm.h:186
@ CG69_EWM
Definition: ccm.h:212
@ CG124_RESERVED
Definition: ccm.h:269
@ CG132_QSPI1
Definition: ccm.h:277
@ CG0_FLEXCAN0
Definition: ccm.h:143
@ CG105_UART4
Definition: ccm.h:250
@ CG47_RESERVED
Definition: ccm.h:190
@ CG60_RESERVED
Definition: ccm.h:203
@ CG180_RESERVED
Definition: ccm.h:325
@ CG185_RESERVED
Definition: ccm.h:330
@ CG142_RESERVED
Definition: ccm.h:287
@ CG81_NOTUSED
Definition: ccm.h:224
@ CG23_PIT
Definition: ccm.h:166
@ CG65_SPDIF
Definition: ccm.h:208
@ CG7_UART0
Definition: ccm.h:150
@ CG133_RESERVED
Definition: ccm.h:278
@ CG104_RESERVED
Definition: ccm.h:249
@ CG112_RESERVED
Definition: ccm.h:257
@ CG151_RESERVED
Definition: ccm.h:296
@ CG173_RESERVED
Definition: ccm.h:318
@ CG130_RESERVED
Definition: ccm.h:275
@ CG98_DMA_MUX3
Definition: ccm.h:243
@ CG12_SPI0
Definition: ccm.h:155
@ CG145_ETH1_1588
Definition: ccm.h:290
@ CG100_RESERVED
Definition: ccm.h:245
@ CG128_RESERVED
Definition: ccm.h:273
@ CG50_SCSCM
Definition: ccm.h:193
@ CG134_RESERVED
Definition: ccm.h:279
@ CG184_RESERVED
Definition: ccm.h:329
@ CG162_RESERVED
Definition: ccm.h:307
@ CG70_I2C0
Definition: ccm.h:213
@ CG72_RESERVED
Definition: ccm.h:215
@ CG10_UART3
Definition: ccm.h:153
@ CG2_RESERVED
Definition: ccm.h:145
@ CG177_RESERVED
Definition: ccm.h:322
@ CG163_RESERVED
Definition: ccm.h:308
@ CG20_USBC0
Definition: ccm.h:163
@ CG77_VREG_DIG
Definition: ccm.h:220
@ CG129_RESERVED
Definition: ccm.h:274
@ CG9_UART2
Definition: ccm.h:152
@ CG140_DAC0
Definition: ccm.h:285
@ CG166_I2C2
Definition: ccm.h:311
@ CG1_RESERVED
Definition: ccm.h:144
@ CG139_RESERVED
Definition: ccm.h:284
@ CG159_RESERVED
Definition: ccm.h:304
@ CG6_RESERVED
Definition: ccm.h:149
@ CG75_CCM
Definition: ccm.h:218
@ CG143_NOTUSED
Definition: ccm.h:288
@ CG16_SAI1
Definition: ccm.h:159
@ CG93_NOTUSED
Definition: ccm.h:236
@ CG19_CRC
Definition: ccm.h:162
@ CG57_RESERVED
Definition: ccm.h:200
@ CG187_RESERVED
Definition: ccm.h:332
@ CG107_RESERVED
Definition: ccm.h:252
@ CG95_NOTUSED
Definition: ccm.h:238
@ CG183_RESERVED
Definition: ccm.h:328
#define END_DECLS
Definition: common.h:34
#define BEGIN_DECLS
Definition: common.h:33
void ccm_clock_gate_enable(enum ccm_clock_gate gr)
Enable clock of given device.
Definition: ccm.c:66
uint32_t ccm_core_clk
Definition: ccm.c:48
uint32_t ccm_platform_bus_clk
Definition: ccm.c:51
uint32_t ccm_ipg_bus_clk
Definition: ccm.c:54
void ccm_calculate_clocks(void)
Calculate clocks.
Definition: ccm.c:150
void ccm_clock_gate_disable(enum ccm_clock_gate gr)
Disable clock of given device.
Definition: ccm.c:80