1 /*
2 * Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6 
7 #ifndef BSP_CLOCKS_H
8 #define BSP_CLOCKS_H
9 
10 /***********************************************************************************************************************
11  * Includes
12  **********************************************************************************************************************/
13 #include "bsp_clock_cfg.h"
14 #include "bsp_api.h"
15 
16 /** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */
17 FSP_HEADER
18 
19 /***********************************************************************************************************************
20  * Macro definitions
21  **********************************************************************************************************************/
22 
23 /* Startup clock frequency of each system clock. These macros are only helpful if the system clock and dividers have
24  * not changed since startup. These macros are not used in FSP modules except for the clock startup code. */
25 
26 /* xSPI unit0 clock options. */
27 #define BSP_CLOCKS_XSPI0_CLOCK_DIV0_150_0_MHZ                   (0x01) // xSPI0 base clock 800MHz and xSPI0 clock 150.0MHz.
28 #define BSP_CLOCKS_XSPI0_CLOCK_DIV0_133_3_MHZ                   (0x02) // xSPI0 base clock 800MHz and xSPI0 clock 133.3MHz.
29 #define BSP_CLOCKS_XSPI0_CLOCK_DIV0_100_0_MHZ                   (0x03) // xSPI0 base clock 800MHz and xSPI0 clock 100.0 MHz.
30 #define BSP_CLOCKS_XSPI0_CLOCK_DIV0_50_0_MHZ                    (0x04) // xSPI0 base clock 800MHz and xSPI0 clock 50.0 MHz.
31 #define BSP_CLOCKS_XSPI0_CLOCK_DIV0_25_0_MHZ                    (0x05) // xSPI0 base clock 800MHz and xSPI0 clock 25.0 MHz.
32 #define BSP_CLOCKS_XSPI0_CLOCK_DIV0_12_5_MHZ                    (0x06) // xSPI0 base clock 800MHz and xSPI0 clock 12.5 MHz.
33 #define BSP_CLOCKS_XSPI0_CLOCK_DIV1_75_0_MHZ                    (0x43) // xSPI0 base clock 600MHz and xSPI0 clock 75.0 MHz.
34 #define BSP_CLOCKS_XSPI0_CLOCK_DIV1_37_5_MHZ                    (0x44) // xSPI0 base clock 600MHz and xSPI0 clock 37.5 MHz.
35 
36 /* xSPI unit1 clock options. */
37 #define BSP_CLOCKS_XSPI1_CLOCK_DIV0_150_0_MHZ                   (0x01) // xSPI1 base clock 800MHz and xSPI1 clock 150.0MHz.
38 #define BSP_CLOCKS_XSPI1_CLOCK_DIV0_133_3_MHZ                   (0x02) // xSPI1 base clock 800MHz and xSPI1 clock 133.3MHz.
39 #define BSP_CLOCKS_XSPI1_CLOCK_DIV0_100_0_MHZ                   (0x03) // xSPI1 base clock 800MHz and xSPI1 clock 100.0 MHz.
40 #define BSP_CLOCKS_XSPI1_CLOCK_DIV0_50_0_MHZ                    (0x04) // xSPI1 base clock 800MHz and xSPI1 clock 50.0 MHz.
41 #define BSP_CLOCKS_XSPI1_CLOCK_DIV0_25_0_MHZ                    (0x05) // xSPI1 base clock 800MHz and xSPI1 clock 25.0 MHz.
42 #define BSP_CLOCKS_XSPI1_CLOCK_DIV0_12_5_MHZ                    (0x06) // xSPI1 base clock 800MHz and xSPI1 clock 12.5 MHz.
43 #define BSP_CLOCKS_XSPI1_CLOCK_DIV1_75_0_MHZ                    (0x43) // xSPI1 base clock 600MHz and xSPI1 clock 75.0 MHz.
44 #define BSP_CLOCKS_XSPI1_CLOCK_DIV1_37_5_MHZ                    (0x44) // xSPI1 base clock 600MHz and xSPI1 clock 37.5 MHz.
45 
46 /* CKIO clock options. */
47 #if (1U == BSP_FEATURE_CGC_CKIO_CLOCK_FREQ_TYPE)
48  #define BSP_CLOCKS_CKIO_ICLK_DIV2                              (0)    // CKIO clock 100.0 MHz  (when SCKCR2.DIVSELSUB = 0),
49                                                                        // or 75.0 MHz  (when SCKCR2.DIVSELSUB = 1).
50  #define BSP_CLOCKS_CKIO_ICLK_DIV3                              (1)    // CKIO clock 66.7 MHz  (when SCKCR2.DIVSELSUB = 0),
51                                                                        // or 50.0 MHz  (when SCKCR2.DIVSELSUB = 1).
52  #define BSP_CLOCKS_CKIO_ICLK_DIV4                              (2)    // CKIO clock 50.0 MHz  (when SCKCR2.DIVSELSUB = 0),
53                                                                        // or 37.5 MHz  (when SCKCR2.DIVSELSUB = 1).
54  #define BSP_CLOCKS_CKIO_ICLK_DIV5                              (3)    // CKIO clock 40.0 MHz  (when SCKCR2.DIVSELSUB = 0),
55                                                                        // or 30.0 MHz  (when SCKCR2.DIVSELSUB = 1).
56  #define BSP_CLOCKS_CKIO_ICLK_DIV6                              (4)    // CKIO clock 33.3 MHz  (when SCKCR2.DIVSELSUB = 0),
57                                                                        // or 25.0 MHz  (when SCKCR2.DIVSELSUB = 1).
58  #define BSP_CLOCKS_CKIO_ICLK_DIV7                              (5)    // CKIO clock 28.6 MHz  (when SCKCR2.DIVSELSUB = 0),
59                                                                        // or 21.4 MHz  (when SCKCR2.DIVSELSUB = 1).
60  #define BSP_CLOCKS_CKIO_ICLK_DIV8                              (6)    // CKIO clock 25.0 MHz  (when SCKCR2.DIVSELSUB = 0),
61                                                                        // or 18.75 MHz (when SCKCR2.DIVSELSUB = 1).
62 #elif (2U == BSP_FEATURE_CGC_CKIO_CLOCK_FREQ_TYPE)
63  #define BSP_CLOCKS_CKIO_125_0_MHZ                              (0)    // CKIO clock 125.0 MHz.
64  #define BSP_CLOCKS_CKIO_83_3_MHZ                               (1)    // CKIO clock 83.3 MHz.
65  #define BSP_CLOCKS_CKIO_62_5_MHZ                               (2)    // CKIO clock 62.5 MHz.
66  #define BSP_CLOCKS_CKIO_50_0_MHZ                               (3)    // CKIO clock 50.0 MHz.
67  #define BSP_CLOCKS_CKIO_41_7_MHZ                               (4)    // CKIO clock 41.7 MHz.
68  #define BSP_CLOCKS_CKIO_35_7_MHZ                               (5)    // CKIO clock 35.7 MHz.
69  #define BSP_CLOCKS_CKIO_31_25_MHZ                              (6)    // CKIO clock 31.25 MHz.
70 #endif
71 
72 /* CANFD clock options. */
73 #define BSP_CLOCKS_CANFD_CLOCK_80_MHZ                           (0)    // CANFD clock 80 MHz.
74 #define BSP_CLOCKS_CANFD_CLOCK_40_MHZ                           (1)    // CANFD clock 40 MHz.
75 #define BSP_CLOCKS_CANFD_CLOCK_PCLKM                            (1)    // CANFD clock source PCLKM.
76 
77 /* ENCOUT clock options. */
78 #define BSP_CLOCKS_ENCO_CLOCK_80_MHZ                            (1)    // ENCOUT clock 80 MHz.
79 #define BSP_CLOCKS_ENCO_CLOCK_20_MHZ                            (0)    // ENCOUT clock 20 MHz.
80 
81 /* Ethernet PHY reference clock (ETHn_REFCLK : n = 0 to 2) options. */
82 #define BSP_CLOCKS_PHYSEL_PLL1_DIV                              (0)    // PLL1 devider clock.
83 #define BSP_CLOCKS_PHYSEL_MAINOSC_DIV                           (1)    // Main clock oscillator.
84 
85 /* Alternative clock options when main clock abnormal oscillation is detected. */
86 #define BSP_CLOCKS_CLMASEL_LOCO                                 (0)    // LOCO clock.
87 #define BSP_CLOCKS_CLMASEL_PLL                                  (1)    // PLL clock.
88 
89 /* LCDC clock options. */
90 #define BSP_CLOCKS_LCDCDIVSEL_DIV_2                             (0x00) // Divide LCDC source clock by 2.
91 #define BSP_CLOCKS_LCDCDIVSEL_DIV_4                             (0x01) // Divide LCDC source clock by 4.
92 #define BSP_CLOCKS_LCDCDIVSEL_DIV_6                             (0x02) // Divide LCDC source clock by 6.
93 #define BSP_CLOCKS_LCDCDIVSEL_DIV_8                             (0x03) // Divide LCDC source clock by 8.
94 #define BSP_CLOCKS_LCDCDIVSEL_DIV_10                            (0x04) // Divide LCDC source clock by 10.
95 #define BSP_CLOCKS_LCDCDIVSEL_DIV_12                            (0x05) // Divide LCDC source clock by 12.
96 #define BSP_CLOCKS_LCDCDIVSEL_DIV_14                            (0x06) // Divide LCDC source clock by 14.
97 #define BSP_CLOCKS_LCDCDIVSEL_DIV_16                            (0x07) // Divide LCDC source clock by 16.
98 #define BSP_CLOCKS_LCDCDIVSEL_DIV_18                            (0x08) // Divide LCDC source clock by 18.
99 #define BSP_CLOCKS_LCDCDIVSEL_DIV_20                            (0x09) // Divide LCDC source clock by 20.
100 #define BSP_CLOCKS_LCDCDIVSEL_DIV_22                            (0x0A) // Divide LCDC source clock by 22.
101 #define BSP_CLOCKS_LCDCDIVSEL_DIV_24                            (0x0B) // Divide LCDC source clock by 24.
102 #define BSP_CLOCKS_LCDCDIVSEL_DIV_26                            (0x0C) // Divide LCDC source clock by 26.
103 #define BSP_CLOCKS_LCDCDIVSEL_DIV_28                            (0x0D) // Divide LCDC source clock by 28.
104 #define BSP_CLOCKS_LCDCDIVSEL_DIV_30                            (0x0E) // Divide LCDC source clock by 30.
105 #define BSP_CLOCKS_LCDCDIVSEL_DIV_32                            (0x0F) // Divide LCDC source clock by 32.
106 
107 /* SPI clock options. */
108 #if (1U == BSP_FEATURE_CGC_PCLKSPI_CLOCK_FREQ_TYPE)
109  #define BSP_CLOCKS_SPI0_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SPI0 asynchronous serial clock 75.0 MHz.
110  #define BSP_CLOCKS_SPI0_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SPI0 asynchronous serial clock 96.0 MHz.
111  #define BSP_CLOCKS_SPI1_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SPI1 asynchronous serial clock 75.0 MHz.
112  #define BSP_CLOCKS_SPI1_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SPI1 asynchronous serial clock 96.0 MHz.
113  #define BSP_CLOCKS_SPI2_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SPI2 asynchronous serial clock 75.0 MHz.
114  #define BSP_CLOCKS_SPI2_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SPI2 asynchronous serial clock 96.0 MHz.
115  #define BSP_CLOCKS_SPI3_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SPI3 asynchronous serial clock 75.0 MHz.
116  #define BSP_CLOCKS_SPI3_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SPI3 asynchronous serial clock 96.0 MHz.
117 
118 #elif (2U == BSP_FEATURE_CGC_PCLKSPI_CLOCK_FREQ_TYPE)
119  #define BSP_CLOCKS_SPI0_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SPI0 asynchronous serial clock 75.0 MHz.
120  #define BSP_CLOCKS_SPI0_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SPI0 asynchronous serial clock 80.0 MHz.
121  #define BSP_CLOCKS_SPI0_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SPI0 asynchronous serial clock 96.0 MHz.
122  #define BSP_CLOCKS_SPI0_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SPI0 asynchronous serial clock 100.0 MHz.
123  #define BSP_CLOCKS_SPI1_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SPI1 asynchronous serial clock 75.0 MHz.
124  #define BSP_CLOCKS_SPI1_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SPI1 asynchronous serial clock 80.0 MHz.
125  #define BSP_CLOCKS_SPI1_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SPI1 asynchronous serial clock 96.0 MHz.
126  #define BSP_CLOCKS_SPI1_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SPI1 asynchronous serial clock 100.0 MHz.
127  #define BSP_CLOCKS_SPI2_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SPI2 asynchronous serial clock 75.0 MHz.
128  #define BSP_CLOCKS_SPI2_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SPI2 asynchronous serial clock 80.0 MHz.
129  #define BSP_CLOCKS_SPI2_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SPI2 asynchronous serial clock 96.0 MHz.
130  #define BSP_CLOCKS_SPI2_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SPI2 asynchronous serial clock 100.0 MHz.
131  #define BSP_CLOCKS_SPI3_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SPI3 asynchronous serial clock 75.0 MHz.
132  #define BSP_CLOCKS_SPI3_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SPI3 asynchronous serial clock 80.0 MHz.
133  #define BSP_CLOCKS_SPI3_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SPI3 asynchronous serial clock 96.0 MHz.
134  #define BSP_CLOCKS_SPI3_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SPI3 asynchronous serial clock 100.0 MHz.
135 #endif
136 
137 /* SCI clock options. */
138 #if (1U == BSP_FEATURE_CGC_PCLKSCI_CLOCK_FREQ_TYPE)
139  #define BSP_CLOCKS_SCI0_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SCI0 asynchronous serial clock 75.0 MHz.
140  #define BSP_CLOCKS_SCI0_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SCI0 asynchronous serial clock 96.0 MHz.
141  #define BSP_CLOCKS_SCI1_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SCI1 asynchronous serial clock 75.0 MHz.
142  #define BSP_CLOCKS_SCI1_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SCI1 asynchronous serial clock 96.0 MHz.
143  #define BSP_CLOCKS_SCI2_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SCI2 asynchronous serial clock 75.0 MHz.
144  #define BSP_CLOCKS_SCI2_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SCI2 asynchronous serial clock 96.0 MHz.
145  #define BSP_CLOCKS_SCI3_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SCI3 asynchronous serial clock 75.0 MHz.
146  #define BSP_CLOCKS_SCI3_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SCI3 asynchronous serial clock 96.0 MHz.
147  #define BSP_CLOCKS_SCI4_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SCI4 asynchronous serial clock 75.0 MHz.
148  #define BSP_CLOCKS_SCI4_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SCI4 asynchronous serial clock 96.0 MHz.
149  #define BSP_CLOCKS_SCI5_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0)    // SCI5 asynchronous serial clock 75.0 MHz.
150  #define BSP_CLOCKS_SCI5_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (1)    // SCI5 asynchronous serial clock 96.0 MHz.
151 #elif (2U == BSP_FEATURE_CGC_PCLKSCI_CLOCK_FREQ_TYPE)
152  #define BSP_CLOCKS_SCI0_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SCI0 asynchronous serial clock 75.0 MHz.
153  #define BSP_CLOCKS_SCI0_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SCI0 asynchronous serial clock 80.0 MHz.
154  #define BSP_CLOCKS_SCI0_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SCI0 asynchronous serial clock 96.0 MHz.
155  #define BSP_CLOCKS_SCI0_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SCI0 asynchronous serial clock 100.0 MHz.
156  #define BSP_CLOCKS_SCI1_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SCI1 asynchronous serial clock 75.0 MHz.
157  #define BSP_CLOCKS_SCI1_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SCI1 asynchronous serial clock 80.0 MHz.
158  #define BSP_CLOCKS_SCI1_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SCI1 asynchronous serial clock 96.0 MHz.
159  #define BSP_CLOCKS_SCI1_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SCI1 asynchronous serial clock 100.0 MHz.
160  #define BSP_CLOCKS_SCI2_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SCI2 asynchronous serial clock 75.0 MHz.
161  #define BSP_CLOCKS_SCI2_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SCI2 asynchronous serial clock 80.0 MHz.
162  #define BSP_CLOCKS_SCI2_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SCI2 asynchronous serial clock 96.0 MHz.
163  #define BSP_CLOCKS_SCI2_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SCI2 asynchronous serial clock 100.0 MHz.
164  #define BSP_CLOCKS_SCI3_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SCI3 asynchronous serial clock 75.0 MHz.
165  #define BSP_CLOCKS_SCI3_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SCI3 asynchronous serial clock 80.0 MHz.
166  #define BSP_CLOCKS_SCI3_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SCI3 asynchronous serial clock 96.0 MHz.
167  #define BSP_CLOCKS_SCI3_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SCI3 asynchronous serial clock 100.0 MHz.
168  #define BSP_CLOCKS_SCI4_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SCI4 asynchronous serial clock 75.0 MHz.
169  #define BSP_CLOCKS_SCI4_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SCI4 asynchronous serial clock 80.0 MHz.
170  #define BSP_CLOCKS_SCI4_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SCI4 asynchronous serial clock 96.0 MHz.
171  #define BSP_CLOCKS_SCI4_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SCI4 asynchronous serial clock 100.0 MHz.
172  #define BSP_CLOCKS_SCI5_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ       (0x00) // SCI5 asynchronous serial clock 75.0 MHz.
173  #define BSP_CLOCKS_SCI5_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ       (0x01) // SCI5 asynchronous serial clock 80.0 MHz.
174  #define BSP_CLOCKS_SCI5_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ       (0x02) // SCI5 asynchronous serial clock 96.0 MHz.
175  #define BSP_CLOCKS_SCI5_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ      (0x03) // SCI5 asynchronous serial clock 100.0 MHz.
176 #endif
177 
178 /* SCIE clock options. */
179 #if (1U == BSP_FEATURE_SCIE_SUPPORTED)
180  #define BSP_CLOCKS_SCIE0_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE0 asynchronous serial clock 75.0 MHz.
181  #define BSP_CLOCKS_SCIE0_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE0 asynchronous serial clock 80.0 MHz.
182  #define BSP_CLOCKS_SCIE0_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE0 asynchronous serial clock 96.0 MHz.
183  #define BSP_CLOCKS_SCIE0_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE0 asynchronous serial clock 100.0 MHz.
184  #define BSP_CLOCKS_SCIE1_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE1 asynchronous serial clock 75.0 MHz.
185  #define BSP_CLOCKS_SCIE1_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE1 asynchronous serial clock 80.0 MHz.
186  #define BSP_CLOCKS_SCIE1_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE1 asynchronous serial clock 96.0 MHz.
187  #define BSP_CLOCKS_SCIE1_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE1 asynchronous serial clock 100.0 MHz.
188  #define BSP_CLOCKS_SCIE2_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE2 asynchronous serial clock 75.0 MHz.
189  #define BSP_CLOCKS_SCIE2_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE2 asynchronous serial clock 80.0 MHz.
190  #define BSP_CLOCKS_SCIE2_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE2 asynchronous serial clock 96.0 MHz.
191  #define BSP_CLOCKS_SCIE2_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE2 asynchronous serial clock 100.0 MHz.
192  #define BSP_CLOCKS_SCIE3_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE3 asynchronous serial clock 75.0 MHz.
193  #define BSP_CLOCKS_SCIE3_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE3 asynchronous serial clock 80.0 MHz.
194  #define BSP_CLOCKS_SCIE3_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE3 asynchronous serial clock 96.0 MHz.
195  #define BSP_CLOCKS_SCIE3_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE3 asynchronous serial clock 100.0 MHz.
196  #define BSP_CLOCKS_SCIE4_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE4 asynchronous serial clock 75.0 MHz.
197  #define BSP_CLOCKS_SCIE4_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE4 asynchronous serial clock 80.0 MHz.
198  #define BSP_CLOCKS_SCIE4_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE4 asynchronous serial clock 96.0 MHz.
199  #define BSP_CLOCKS_SCIE4_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE4 asynchronous serial clock 100.0 MHz.
200  #define BSP_CLOCKS_SCIE5_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE5 asynchronous serial clock 75.0 MHz.
201  #define BSP_CLOCKS_SCIE5_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE5 asynchronous serial clock 80.0 MHz.
202  #define BSP_CLOCKS_SCIE5_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE5 asynchronous serial clock 96.0 MHz.
203  #define BSP_CLOCKS_SCIE5_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE5 asynchronous serial clock 100.0 MHz.
204  #define BSP_CLOCKS_SCIE6_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE6 asynchronous serial clock 75.0 MHz.
205  #define BSP_CLOCKS_SCIE6_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE6 asynchronous serial clock 80.0 MHz.
206  #define BSP_CLOCKS_SCIE6_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE6 asynchronous serial clock 96.0 MHz.
207  #define BSP_CLOCKS_SCIE6_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE6 asynchronous serial clock 100.0 MHz.
208  #define BSP_CLOCKS_SCIE7_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE7 asynchronous serial clock 75.0 MHz.
209  #define BSP_CLOCKS_SCIE7_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE7 asynchronous serial clock 80.0 MHz.
210  #define BSP_CLOCKS_SCIE7_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE7 asynchronous serial clock 96.0 MHz.
211  #define BSP_CLOCKS_SCIE7_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE7 asynchronous serial clock 100.0 MHz.
212  #define BSP_CLOCKS_SCIE8_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE8 asynchronous serial clock 75.0 MHz.
213  #define BSP_CLOCKS_SCIE8_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE8 asynchronous serial clock 80.0 MHz.
214  #define BSP_CLOCKS_SCIE8_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE8 asynchronous serial clock 96.0 MHz.
215  #define BSP_CLOCKS_SCIE8_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE8 asynchronous serial clock 100.0 MHz.
216  #define BSP_CLOCKS_SCIE9_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ      (0x00) // SCIE9 asynchronous serial clock 75.0 MHz.
217  #define BSP_CLOCKS_SCIE9_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ      (0x01) // SCIE9 asynchronous serial clock 80.0 MHz.
218  #define BSP_CLOCKS_SCIE9_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ      (0x02) // SCIE9 asynchronous serial clock 96.0 MHz.
219  #define BSP_CLOCKS_SCIE9_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ     (0x03) // SCIE9 asynchronous serial clock 100.0 MHz.
220  #define BSP_CLOCKS_SCIE10_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ     (0x00) // SCIE10 asynchronous serial clock 75.0 MHz.
221  #define BSP_CLOCKS_SCIE10_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ     (0x01) // SCIE10 asynchronous serial clock 80.0 MHz.
222  #define BSP_CLOCKS_SCIE10_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ     (0x02) // SCIE10 asynchronous serial clock 96.0 MHz.
223  #define BSP_CLOCKS_SCIE10_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ    (0x03) // SCIE10 asynchronous serial clock 100.0 MHz.
224  #define BSP_CLOCKS_SCIE11_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ     (0x00) // SCIE11 asynchronous serial clock 75.0 MHz.
225  #define BSP_CLOCKS_SCIE11_ASYNCHRONOUS_SERIAL_CLOCK_80_MHZ     (0x01) // SCIE11 asynchronous serial clock 80.0 MHz.
226  #define BSP_CLOCKS_SCIE11_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ     (0x02) // SCIE11 asynchronous serial clock 96.0 MHz.
227  #define BSP_CLOCKS_SCIE11_ASYNCHRONOUS_SERIAL_CLOCK_100_MHZ    (0x03) // SCIE11 asynchronous serial clock 100.0 MHz.
228 #endif
229 
230 #if (1U == BSP_FEATURE_CGC_SCKCR_TYPE)
231 
232 /* CR52 CPU0 clock options. */
233  #define BSP_CLOCKS_FSELCPU0_ICLK_MUL2    (1) // CPU0 clock 400 MHz (when SCKCR2.DIVSELSUB = 0),
234                                               // or 300 MHz (when SCKCR2.DIVSELSUB = 1).
235  #define BSP_CLOCKS_FSELCPU0_ICLK_MUL1    (0) // CPU0 clock 200 MHz (when SCKCR2.DIVSELSUB = 0),
236                                               // or 150 MHz (when SCKCR2.DIVSELSUB = 1).
237 
238 /* Peripheral module base clock options. */
239  #define BSP_CLOCKS_DIVSELSUB_0           (0) // ICLK:200MHz, PCLKH:200MHz, PCLKM:100MHz,
240                                               // PCLKL:50MHz, PCLKADC:25MHz, PCLKGPTL:400MHz.
241  #define BSP_CLOCKS_DIVSELSUB_1           (1) // ICLK:150MHz, PCLKH:150MHz, PCLKM:75 MHz,
242                                               // PCLKL:37.5MHz, PCLKADC:18.75MHz, PCLKGPTL:300MHz.
243 
244 #elif (2U == BSP_FEATURE_CGC_SCKCR_TYPE)
245 
246 /* CR52 CPU0 clock options. */
247  #define BSP_CLOCKS_CR52CPU0_500_MHZ           (0)    // CPU0 clock 500 MHz.
248  #define BSP_CLOCKS_CR52CPU0_1000_MHZ          (1)    // CPU0 clock 1000 MHz.
249 
250 /* CR52 CPU1 clock options. */
251  #define BSP_CLOCKS_CR52CPU1_500_MHZ           (0)    // CPU1 clock 500 MHz.
252  #define BSP_CLOCKS_CR52CPU1_1000_MHZ          (1)    // CPU1 clock 1000 MHz.
253 
254 /* CA55 core0 clock options. */
255  #define BSP_CLOCKS_CA55CORE0_600_MHZ          (0)    // CA55 core0 clock 600 MHz.
256  #define BSP_CLOCKS_CA55CORE0_1200_MHZ         (1)    // CA55 core0 clock 1200 MHz.
257 
258 /* CA55 core1 clock options. */
259  #define BSP_CLOCKS_CA55CORE1_600_MHZ          (0)    // CA55 core1 clock 600 MHz.
260  #define BSP_CLOCKS_CA55CORE1_1200_MHZ         (1)    // CA55 core1 clock 1200 MHz.
261 
262 /* CA55 core2 clock options. */
263  #define BSP_CLOCKS_CA55CORE2_600_MHZ          (0)    // CA55 core2 clock 600 MHz.
264  #define BSP_CLOCKS_CA55CORE2_1200_MHZ         (1)    // CA55 core2 clock 1200 MHz.
265 
266 /* CA55 core3 clock options. */
267  #define BSP_CLOCKS_CA55CORE3_600_MHZ          (0)    // CA55 core3 clock 600 MHz.
268  #define BSP_CLOCKS_CA55CORE3_1200_MHZ         (1)    // CA55 core3 clock 1200 MHz.
269 
270 /* CA55 SCU CLOCK options. */
271  #define BSP_CLOCKS_CA55SCLK_500_MHZ           (0)    // CA55 SCU clock 500 MHz.
272  #define BSP_CLOCKS_CA55SCLK_1000_MHZ          (1)    // CA55 SCU clock 1000 MHz.
273 #endif
274 
275 /* LOCO enable options. */
276 #define BSP_CLOCKS_LOCO_DISABLE                (0)    // LOCO Stop
277 #define BSP_CLOCKS_LOCO_ENABLE                 (1)    // LOCO Run
278 
279 /* PLL0 enable options. */
280 #define BSP_CLOCKS_PLL0_STANDBY                (0)    // PLL0 is standby state.
281 #define BSP_CLOCKS_PLL0_NORMAL                 (1)    // PLL0 is normal state.
282 
283 /* PLL1 enable options. */
284 #define BSP_CLOCKS_PLL1_INITIAL                (0xFF) // Initial (This value should not be reflected in the register)
285 #define BSP_CLOCKS_PLL1_STANDBY                (0)    // PLL1 is standby state.
286 #define BSP_CLOCKS_PLL1_NORMAL                 (1)    // PLL1 is normal state.
287 
288 /* PLL2 enable options. */
289 #define BSP_CLOCKS_PLL2_STANDBY                (0)    // PLL2 is standby state.
290 #define BSP_CLOCKS_PLL2_NORMAL                 (1)    // PLL2 is normal state.
291 
292 /* PLL3 enable options. */
293 #define BSP_CLOCKS_PLL3_STANDBY                (0)    // PLL3 is standby state.
294 #define BSP_CLOCKS_PLL3_NORMAL                 (1)    // PLL3 is normal state.
295 
296 /* PLL0 SSC options. */
297 #define BSP_CLOCKS_PLL0SSCEN_DISABLE           (0)    // PLL0 SSC function is enabled
298 #define BSP_CLOCKS_PLL0SSCEN_ENABLE            (1)    // PLL0 SSC function is disabled
299 
300 /* PLL2 SSC options. */
301 #define BSP_CLOCKS_PLL2SSCEN_DISABLE           (0)    // PLL2 SSC function is enabled
302 #define BSP_CLOCKS_PLL2SSCEN_ENABLE            (1)    // PLL2 SSC function is disabled
303 
304 /* CLMA error mask options. */
305 #define BSP_CLOCKS_CLMA0_ERROR_MASK            (0)    // CLMA0 error is not transferred to POE3 and POEG.
306 #define BSP_CLOCKS_CLMA0_ERROR_NOT_MASK        (1)    // CLMA0 error is transferred to POE3 and POEG.
307 #define BSP_CLOCKS_CLMA1_ERROR_MASK            (0)    // CLMA1 error is not transferred to POE3 and POEG.
308 #define BSP_CLOCKS_CLMA1_ERROR_NOT_MASK        (1)    // CLMA1 error is transferred to POE3 and POEG.
309 #define BSP_CLOCKS_CLMA2_ERROR_MASK            (0)    // CLMA0 error is not transferred to POE3 and POEG.
310 #define BSP_CLOCKS_CLMA2_ERROR_NOT_MASK        (1)    // CLMA0 error is transferred to POE3 and POEG.
311 #define BSP_CLOCKS_CLMA3_ERROR_MASK            (0)    // CLMA3 error is not transferred to POE3 and POEG.
312 #define BSP_CLOCKS_CLMA3_ERROR_NOT_MASK        (1)    // CLMA3 error is transferred to POE3 and POEG.
313 #define BSP_CLOCKS_CLMA4_ERROR_MASK            (0)    // CLMA4 error is not transferred to POE3 and POEG.
314 #define BSP_CLOCKS_CLMA4_ERROR_NOT_MASK        (1)    // CLMA4 error is transferred to POE3 and POEG.
315 #define BSP_CLOCKS_CLMA5_ERROR_MASK            (0)    // CLMA5 error is not transferred to POE3 and POEG.
316 #define BSP_CLOCKS_CLMA5_ERROR_NOT_MASK        (1)    // CLMA5 error is transferred to POE3 and POEG.
317 #define BSP_CLOCKS_CLMA6_ERROR_MASK            (0)    // CLMA6 error is not transferred to POE3 and POEG.
318 #define BSP_CLOCKS_CLMA6_ERROR_NOT_MASK        (1)    // CLMA6 error is transferred to POE3 and POEG.
319 
320 /* CLMA enable options. */
321 #define BSP_CLOCKS_CLMA0_DISABLE               (0)    // Disable CLMA0 operation.
322 #define BSP_CLOCKS_CLMA0_ENABLE                (1)    // Enable CLMA0 operation.
323 #define BSP_CLOCKS_CLMA1_DISABLE               (0)    // Disable CLMA1 operation.
324 #define BSP_CLOCKS_CLMA1_ENABLE                (1)    // Enable CLMA1 operation.
325 #define BSP_CLOCKS_CLMA2_DISABLE               (0)    // Disable CLMA2 operation.
326 #define BSP_CLOCKS_CLMA2_ENABLE                (1)    // Enable CLMA2 operation.
327 #define BSP_CLOCKS_CLMA3_DISABLE               (0)    // Disable CLMA3 operation.
328 #define BSP_CLOCKS_CLMA3_ENABLE                (1)    // Enable CLMA3 operation.
329 #define BSP_CLOCKS_CLMA4_DISABLE               (0)    // Disable CLMA4 operation.
330 #define BSP_CLOCKS_CLMA4_ENABLE                (1)    // Enable CLMA4 operation.
331 #define BSP_CLOCKS_CLMA5_DISABLE               (0)    // Disable CLMA5 operation.
332 #define BSP_CLOCKS_CLMA5_ENABLE                (1)    // Enable CLMA5 operation.
333 #define BSP_CLOCKS_CLMA6_DISABLE               (0)    // Disable CLMA6 operation.
334 #define BSP_CLOCKS_CLMA6_ENABLE                (1)    // Enable CLMA6 operation.
335 
336 #if (1U == BSP_FEATURE_CGC_SCKCR_TYPE)
337 
338 /* Create a mask of valid bits in SCKCR. */
339  #define BSP_PRV_SCKCR_FSELXSPI0_MASK          (7U << 0)
340  #define BSP_PRV_SCKCR_DIVSELXSPI0_MASK        (1U << 6)
341  #define BSP_PRV_SCKCR_FSELXSPI1_MASK          (7U << 8)
342  #define BSP_PRV_SCKCR_DIVSELXSPI1_MASK        (1U << 14)
343  #define BSP_PRV_SCKCR_CKIO_MASK               (7U << 16)
344  #define BSP_PRV_SCKCR_FSELCANFD_MASK          (1U << 20)
345  #define BSP_PRV_SCKCR_PHYSEL_MASK             (1U << 21)
346  #define BSP_PRV_SCKCR_CLMASEL_MASK            (1U << 22)
347  #define BSP_PRV_SCKCR_SPI0ASYNCSEL_MASK       (1U << 24)
348  #define BSP_PRV_SCKCR_SPI1ASYNCSEL_MASK       (1U << 25)
349  #define BSP_PRV_SCKCR_SPI2ASYNCSEL_MASK       (1U << 26)
350  #define BSP_PRV_SCKCR_SCI0ASYNCSEL_MASK       (1U << 27)
351  #define BSP_PRV_SCKCR_SCI1ASYNCSEL_MASK       (1U << 28)
352  #define BSP_PRV_SCKCR_SCI2ASYNCSEL_MASK       (1U << 29)
353  #define BSP_PRV_SCKCR_SCI3ASYNCSEL_MASK       (1U << 30)
354  #define BSP_PRV_SCKCR_SCI4ASYNCSEL_MASK       (1U << 31)
355  #define BSP_PRV_SCKCR_MASK                    (((((((((((((((BSP_PRV_SCKCR_FSELXSPI0_MASK |    \
356                                                               BSP_PRV_SCKCR_DIVSELXSPI0_MASK) | \
357                                                              BSP_PRV_SCKCR_FSELXSPI1_MASK) |    \
358                                                             BSP_PRV_SCKCR_DIVSELXSPI1_MASK) |   \
359                                                            BSP_PRV_SCKCR_CKIO_MASK) |           \
360                                                           BSP_PRV_SCKCR_FSELCANFD_MASK) |       \
361                                                          BSP_PRV_SCKCR_PHYSEL_MASK) |           \
362                                                         BSP_PRV_SCKCR_CLMASEL_MASK) |           \
363                                                        BSP_PRV_SCKCR_SPI0ASYNCSEL_MASK) |       \
364                                                       BSP_PRV_SCKCR_SPI1ASYNCSEL_MASK) |        \
365                                                      BSP_PRV_SCKCR_SPI2ASYNCSEL_MASK) |         \
366                                                     BSP_PRV_SCKCR_SCI0ASYNCSEL_MASK) |          \
367                                                    BSP_PRV_SCKCR_SCI1ASYNCSEL_MASK) |           \
368                                                   BSP_PRV_SCKCR_SCI2ASYNCSEL_MASK) |            \
369                                                  BSP_PRV_SCKCR_SCI3ASYNCSEL_MASK) |             \
370                                                 BSP_PRV_SCKCR_SCI4ASYNCSEL_MASK)
371 
372  #define BSP_PRV_SCKCR_DIVSELXSPI_MASK         (BSP_PRV_SCKCR_DIVSELXSPI0_MASK | \
373                                                 BSP_PRV_SCKCR_DIVSELXSPI1_MASK)
374 
375 /* Create a mask of valid bits in SCKCR2. */
376  #define BSP_PRV_SCKCR2_FSELCPU0_MASK          (3U << 0)
377  #define BSP_PRV_SCKCR2_RESERVED_BIT4_MASK     (1U << 4)
378  #define BSP_PRV_SCKCR2_DIVSELSUB_MASK         (1U << 5)
379  #define BSP_PRV_SCKCR2_SPI3ASYNCSEL_MASK      (1U << 24)
380  #define BSP_PRV_SCKCR2_SCI5ASYNCSEL_MASK      (1U << 25)
381  #define BSP_PRV_SCKCR2_MASK                   ((((BSP_PRV_SCKCR2_FSELCPU0_MASK |       \
382                                                    BSP_PRV_SCKCR2_RESERVED_BIT4_MASK) | \
383                                                   BSP_PRV_SCKCR2_DIVSELSUB_MASK) |      \
384                                                  BSP_PRV_SCKCR2_SPI3ASYNCSEL_MASK) |    \
385                                                 BSP_PRV_SCKCR2_SCI5ASYNCSEL_MASK)
386 
387 #elif (2U == BSP_FEATURE_CGC_SCKCR_TYPE)
388 
389 /* Create a mask of valid bits in SCKCR. */
390  #define BSP_PRV_SCKCR_FSELXSPI0_MASK          (7U << 0)
391  #define BSP_PRV_SCKCR_DIVSELXSPI0_MASK        (1U << 6)
392  #define BSP_PRV_SCKCR_FSELXSPI1_MASK          (7U << 8)
393  #define BSP_PRV_SCKCR_DIVSELXSPI1_MASK        (1U << 14)
394  #define BSP_PRV_SCKCR_CKIO_MASK               (7U << 16)
395  #define BSP_PRV_SCKCR_FSELCANFD_MASK          (1U << 20)
396  #define BSP_PRV_SCKCR_PHYSEL_MASK             (1U << 21)
397  #define BSP_PRV_SCKCR_CLMASEL_MASK            (1U << 22)
398 
399  #define BSP_PRV_SCKCR_MASK                    (((((((BSP_PRV_SCKCR_FSELXSPI0_MASK |    \
400                                                       BSP_PRV_SCKCR_DIVSELXSPI0_MASK) | \
401                                                      BSP_PRV_SCKCR_FSELXSPI1_MASK) |    \
402                                                     BSP_PRV_SCKCR_DIVSELXSPI1_MASK) |   \
403                                                    BSP_PRV_SCKCR_CKIO_MASK) |           \
404                                                   BSP_PRV_SCKCR_FSELCANFD_MASK) |       \
405                                                  BSP_PRV_SCKCR_PHYSEL_MASK) |           \
406                                                 BSP_PRV_SCKCR_CLMASEL_MASK)
407 
408  #define BSP_PRV_SCKCR_DIVSELXSPI_MASK         (BSP_PRV_SCKCR_DIVSELXSPI0_MASK | \
409                                                 BSP_PRV_SCKCR_DIVSELXSPI1_MASK)
410 
411 /* Create a mask of valid bits in SCKCR2. */
412  #define BSP_PRV_SCKCR2_CR52CPU0_MASK          (3U << 0)
413  #define BSP_PRV_SCKCR2_CR52CPU1_MASK          (3U << 2)
414  #define BSP_PRV_SCKCR2_CA55CORE0_MASK         (1U << 8)
415  #define BSP_PRV_SCKCR2_CA55CORE1_MASK         (1U << 9)
416  #define BSP_PRV_SCKCR2_CA55CORE2_MASK         (1U << 10)
417  #define BSP_PRV_SCKCR2_CA55CORE3_MASK         (1U << 11)
418  #define BSP_PRV_SCKCR2_CA55SCLK_MASK          (1U << 12)
419  #define BSP_PRV_SCKCR2_SPI3ASYNCSEL_MASK      (3U << 16)
420  #define BSP_PRV_SCKCR2_SCI5ASYNCSEL_MASK      (3U << 18)
421  #define BSP_PRV_SCKCR2_MASK                   ((((((((BSP_PRV_SCKCR2_CR52CPU0_MASK |  \
422                                                        BSP_PRV_SCKCR2_CR52CPU1_MASK) | \
423                                                       BSP_PRV_SCKCR2_CA55CORE0_MASK) | \
424                                                      BSP_PRV_SCKCR2_CA55CORE1_MASK) |  \
425                                                     BSP_PRV_SCKCR2_CA55CORE2_MASK) |   \
426                                                    BSP_PRV_SCKCR2_CA55CORE3_MASK) |    \
427                                                   BSP_PRV_SCKCR2_CA55SCLK_MASK) |      \
428                                                  BSP_PRV_SCKCR2_SPI3ASYNCSEL_MASK) |   \
429                                                 BSP_PRV_SCKCR2_SCI5ASYNCSEL_MASK)
430 
431 /* Create a mask of valid bits in SCKCR3. */
432  #define BSP_PRV_SCKCR3_SPI0ASYNCSEL_MASK      (3U << 0)
433  #define BSP_PRV_SCKCR3_SPI1ASYNCSEL_MASK      (3U << 2)
434  #define BSP_PRV_SCKCR3_SPI2ASYNCSEL_MASK      (3U << 4)
435  #define BSP_PRV_SCKCR3_SCI0ASYNCSEL_MASK      (3U << 6)
436  #define BSP_PRV_SCKCR3_SCI1ASYNCSEL_MASK      (3U << 8)
437  #define BSP_PRV_SCKCR3_SCI2ASYNCSEL_MASK      (3U << 10)
438  #define BSP_PRV_SCKCR3_SCI3ASYNCSEL_MASK      (3U << 12)
439  #define BSP_PRV_SCKCR3_SCI4ASYNCSEL_MASK      (3U << 14)
440  #define BSP_PRV_SCKCR3_LCDCDIVSEL_MASK        (15U << 20)
441  #define BSP_PRV_SCKCR3_MASK                   (((((((((BSP_PRV_SCKCR3_SPI0ASYNCSEL_MASK) | \
442                                                        BSP_PRV_SCKCR3_SPI1ASYNCSEL_MASK) |  \
443                                                       BSP_PRV_SCKCR3_SPI2ASYNCSEL_MASK) |   \
444                                                      BSP_PRV_SCKCR3_SCI0ASYNCSEL_MASK) |    \
445                                                     BSP_PRV_SCKCR3_SCI1ASYNCSEL_MASK) |     \
446                                                    BSP_PRV_SCKCR3_SCI2ASYNCSEL_MASK) |      \
447                                                   BSP_PRV_SCKCR3_SCI3ASYNCSEL_MASK) |       \
448                                                  BSP_PRV_SCKCR3_SCI4ASYNCSEL_MASK) |        \
449                                                 BSP_PRV_SCKCR3_LCDCDIVSEL_MASK)
450 
451 /* Create a mask of valid bits in SCKCR4. */
452  #define BSP_PRV_SCKCR4_SCIE0ASYNCSEL_MASK     (3U << 0)
453  #define BSP_PRV_SCKCR4_SCIE1ASYNCSEL_MASK     (3U << 2)
454  #define BSP_PRV_SCKCR4_SCIE2ASYNCSEL_MASK     (3U << 4)
455  #define BSP_PRV_SCKCR4_SCIE3ASYNCSEL_MASK     (3U << 6)
456  #define BSP_PRV_SCKCR4_SCIE4ASYNCSEL_MASK     (3U << 8)
457  #define BSP_PRV_SCKCR4_SCIE5ASYNCSEL_MASK     (3U << 10)
458  #define BSP_PRV_SCKCR4_SCIE6ASYNCSEL_MASK     (3U << 12)
459  #define BSP_PRV_SCKCR4_SCIE7ASYNCSEL_MASK     (3U << 14)
460  #define BSP_PRV_SCKCR4_SCIE8ASYNCSEL_MASK     (3U << 16)
461  #define BSP_PRV_SCKCR4_SCIE9ASYNCSEL_MASK     (3U << 18)
462  #define BSP_PRV_SCKCR4_SCIE10ASYNCSEL_MASK    (3U << 20)
463  #define BSP_PRV_SCKCR4_SCIE11ASYNCSEL_MASK    (3U << 22)
464  #define BSP_PRV_SCKCR4_ENCOUTCLK_MASK         (1U << 24)
465  #define BSP_PRV_SCKCR4_MASK                   (((((((((((((BSP_PRV_SCKCR4_SCIE0ASYNCSEL_MASK) | \
466                                                            BSP_PRV_SCKCR4_SCIE1ASYNCSEL_MASK) |  \
467                                                           BSP_PRV_SCKCR4_SCIE2ASYNCSEL_MASK) |   \
468                                                          BSP_PRV_SCKCR4_SCIE3ASYNCSEL_MASK) |    \
469                                                         BSP_PRV_SCKCR4_SCIE4ASYNCSEL_MASK) |     \
470                                                        BSP_PRV_SCKCR4_SCIE5ASYNCSEL_MASK) |      \
471                                                       BSP_PRV_SCKCR4_SCIE6ASYNCSEL_MASK) |       \
472                                                      BSP_PRV_SCKCR4_SCIE7ASYNCSEL_MASK) |        \
473                                                     BSP_PRV_SCKCR4_SCIE8ASYNCSEL_MASK) |         \
474                                                    BSP_PRV_SCKCR4_SCIE9ASYNCSEL_MASK) |          \
475                                                   BSP_PRV_SCKCR4_SCIE10ASYNCSEL_MASK) |          \
476                                                  BSP_PRV_SCKCR4_SCIE11ASYNCSEL_MASK) |           \
477                                                 BSP_PRV_SCKCR4_ENCOUTCLK_MASK)
478 
479 #endif
480 
481 /***********************************************************************************************************************
482  * Typedef definitions
483  **********************************************************************************************************************/
484 
485 /***********************************************************************************************************************
486  * Exported global variables
487  **********************************************************************************************************************/
488 
489 /***********************************************************************************************************************
490  * Exported global functions (to be accessed by other files)
491  **********************************************************************************************************************/
492 
493 /* Public functions defined in bsp.h */
494 void bsp_clock_init(void);             // Used internally by BSP
495 
496 /* Used internally by CGC */
497 
498 void bsp_prv_clock_set(uint32_t sckcr, uint32_t sckcr2, uint32_t sckcr3, uint32_t sckcr4);
499 
500 /** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */
501 FSP_FOOTER
502 
503 #endif
504