1 /******************************************************************************
2  *
3  * Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by
4  * Analog Devices, Inc.),
5  * Copyright (C) 2023-2024 Analog Devices, Inc.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  ******************************************************************************/
20 
21 #ifndef LIBRARIES_CMSIS_DEVICE_MAXIM_MAX78002_INCLUDE_SYSTEM_MAX78002_H_
22 #define LIBRARIES_CMSIS_DEVICE_MAXIM_MAX78002_INCLUDE_SYSTEM_MAX78002_H_
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #include <stdint.h>
29 
30 /*----------------------------------------------------------------------------
31   Define clocks
32  *----------------------------------------------------------------------------*/
33 
34 /* NOTE: HIRC was previously named CRYPTO */
35 #ifdef CRYPTO_FREQ
36 #warning WARNING: CRYPTO_FREQ does not exist in MAX78002, replace with HIRC_FREQ!
37 #define HIRC_FREQ CRYPTO_FREQ
38 #endif
39 
40 /* NOTE: EXTCLK needs to be defined by user based on the clock they supply */
41 #ifndef EXTCLK_FREQ
42 #define EXTCLK_FREQ 75000000
43 #endif
44 
45 /* NOTE: This is the nominal value for INRO. The actual value may vary from chip to chip.
46          Update if use of this oscillator requires precise timing.
47 		 This is default device setting. Update this if user changes to other
48 		 available value.*/
49 /* NOTE: INRO was previously named NANORING */
50 #ifndef INRO_FREQ
51 #define INRO_FREQ 30000
52 #endif
53 
54 #ifndef IPO_FREQ
55 #define IPO_FREQ 120000000
56 #endif
57 
58 #ifndef ISO_FREQ
59 #define ISO_FREQ 60000000
60 #endif
61 
62 #ifndef IBRO_FREQ
63 #define IBRO_FREQ 7372800
64 #endif
65 
66 #ifndef EBO_FREQ
67 #define EBO_FREQ 25000000
68 #endif
69 
70 #ifndef ERTCO_FREQ
71 #define ERTCO_FREQ 32768
72 #endif
73 
74 #ifndef IPLL_FREQ
75 #define IPLL_FREQ 100000000
76 #endif
77 
78 #ifndef HIRC_FREQ
79 #define HIRC_FREQ IPO_FREQ
80 #endif
81 
82 extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)  */
83 #ifdef PeripheralClock
84 #warning PeripheralClock define is being overidden.
85 #else
86 #define PeripheralClock (SystemCoreClock / 2) /*!< Peripheral Clock Frequency */
87 #endif
88 
89 /*
90  * Initialize the system
91  *
92  * @brief  Setup the microcontroller system.
93  *         Initialize the System and update the SystemCoreClock variable.
94  */
95 void SystemInit(void);
96 
97 /*
98  * Update SystemCoreClock variable
99  *
100  * @brief  Updates the SystemCoreClock with current core Clock
101  *         retrieved from CPU registers.
102  */
103 void SystemCoreClockUpdate(void);
104 
105 #ifdef __cplusplus
106 }
107 #endif
108 
109 #endif // LIBRARIES_CMSIS_DEVICE_MAXIM_MAX78002_INCLUDE_SYSTEM_MAX78002_H_
110