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_MODULE_H
8 #define BSP_MODULE_H
9 
10 /** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */
11 FSP_HEADER
12 
13 /*******************************************************************************************************************//**
14  * @addtogroup BSP_MCU
15  * @{
16  **********************************************************************************************************************/
17 
18 /**********************************************************************************************************************
19  * Macro definitions
20  *********************************************************************************************************************/
21 
22 /******************************************************************************************************************//**
23  * Cancels the module stop state.
24  *
25  * @param      ip       fsp_ip_t enum value for the module to be started.
26  * @param      channel  The channel. Use ch 0 for modules without channels.
27  *********************************************************************************************************************/
28 #define R_BSP_MSTP_START(ip, channel)          {FSP_CRITICAL_SECTION_DEFINE;                                            \
29                                                 FSP_CRITICAL_SECTION_ENTER;                                             \
30                                                 BSP_MSTP_REG_ ## ip(channel) = 0x00000000U                              \
31                                                                                | (BSP_MSTP_BIT_ ## ip(channel) << 16U); \
32                                                 BSP_MSTP_REG_ ## ip(channel);                                           \
33                                                 FSP_CRITICAL_SECTION_EXIT;}
34 
35 /*******************************************************************************************************************//**
36  * Enables the module stop state.
37  *
38  * @param      ip       fsp_ip_t enum value for the module to be stopped.
39  * @param      channel  The channel. Use ch 0 for modules without channels.
40  *********************************************************************************************************************/
41 #define R_BSP_MSTP_STOP(ip, channel)           {FSP_CRITICAL_SECTION_DEFINE;                                            \
42                                                 FSP_CRITICAL_SECTION_ENTER;                                             \
43                                                 BSP_MSTP_REG_ ## ip(channel) = 0x0000FFFFU                              \
44                                                                                | (BSP_MSTP_BIT_ ## ip(channel) << 16U); \
45                                                 BSP_MSTP_REG_ ## ip(channel);                                           \
46                                                 FSP_CRITICAL_SECTION_EXIT;}
47 
48 /** @} (end addtogroup BSP_MCU) */
49 #define BSP_MSTP_REG_FSP_IP_GTM(channel)       R_CPG->CPG_BUS_REG0_MSTOP
50 #define BSP_MSTP_BIT_FSP_IP_GTM(channel)       (1U << (R_CPG_CPG_BUS_REG0_MSTOP_MSTOP4_ON_Pos + channel))
51 
52 #define BSP_MSTP_REG_FSP_IP_GPT(channel)       R_CPG->CPG_BUS_MCPU1_MSTOP
53 #define BSP_MSTP_BIT_FSP_IP_GPT(channel)       (1U << R_CPG_CPG_BUS_MCPU1_MSTOP_MSTOP4_ON_Pos)
54 
55 #define BSP_MSTP_REG_FSP_IP_POEG(channel)      R_CPG->CPG_BUS_MCPU1_MSTOP
56 #define BSP_MSTP_BIT_FSP_IP_POEG(channel)      (1U << (R_CPG_CPG_BUS_MCPU1_MSTOP_MSTOP5_ON_Pos + channel))
57 
58 #define BSP_MSTP_REG_FSP_IP_PORT(channel)      R_CPG->CPG_BUS_PERI_CPU_MSTOP
59 #define BSP_MSTP_BIT_FSP_IP_PORT(channel)      (1U << R_CPG_CPG_BUS_PERI_CPU_MSTOP_MSTOP6_ON_Pos)
60 
61 #define BSP_MSTP_REG_FSP_IP_IM33(channel)      R_CPG->CPG_BUS_PERI_CPU_MSTOP
62 #define BSP_MSTP_BIT_FSP_IP_IM33(channel)      (1U << R_CPG_CPG_BUS_PERI_CPU_MSTOP_MSTOP14_ON_Pos)
63 
64 #ifndef BSP_MSTP_REG_FSP_IP_SCIF
65  #define BSP_MSTP_REG_FSP_IP_SCIF(channel)     R_CPG->CPG_BUS_MCPU2_MSTOP
66 #endif
67 #ifndef BSP_MSTP_BIT_FSP_IP_SCIF
68  #define BSP_MSTP_BIT_FSP_IP_SCIF(channel)     (1U << (R_CPG_CPG_BUS_MCPU2_MSTOP_MSTOP1_ON_Pos + channel))
69 #endif
70 
71 #define BSP_MSTP_REG_FSP_IP_RIIC(channel)      R_CPG->CPG_BUS_MCPU2_MSTOP
72 #define BSP_MSTP_BIT_FSP_IP_RIIC(channel)      (1U << (R_CPG_CPG_BUS_MCPU2_MSTOP_MSTOP10_ON_Pos + channel))
73 
74 #ifndef BSP_MSTP_REG_FSP_IP_RSPI
75  #define BSP_MSTP_REG_FSP_IP_RSPI(channel)     *((1U >= \
76                                                   channel) ? &R_CPG->CPG_BUS_MCPU1_MSTOP : &R_CPG->CPG_BUS_MCPU2_MSTOP)
77 #endif
78 #ifndef BSP_MSTP_BIT_FSP_IP_RSPI
79  #define BSP_MSTP_BIT_FSP_IP_RSPI(channel)     ((1U >=                                                                   \
80                                                  channel) ? (1U << (R_CPG_CPG_BUS_MCPU1_MSTOP_MSTOP14_ON_Pos + channel)) \
81                                                 : (1U << R_CPG_CPG_BUS_MCPU2_MSTOP_MSTOP0_ON_Pos))
82 #endif
83 
84 #define BSP_MSTP_REG_FSP_IP_MHU(channel)       R_CPG->CPG_MHU_MSTOP
85 #define BSP_MSTP_BIT_FSP_IP_MHU(channel)       (1U << R_CPG_CPG_MHU_MSTOP_MSTOP0_ON_Pos)
86 
87 #define BSP_MSTP_REG_FSP_IP_DMAC(channel)      R_CPG->CPG_BUS_REG1_MSTOP
88 #define BSP_MSTP_BIT_FSP_IP_DMAC(channel)      (3U <<                                     \
89                                                 (R_CPG_CPG_BUS_REG1_MSTOP_MSTOP0_ON_Pos + \
90                                                  (channel * R_CPG_CPG_BUS_REG1_MSTOP_MSTOP2_ON_Pos)))
91 #define BSP_MSTP_REG_FSP_IP_DMAC_s(channel)    BSP_MSTP_REG_FSP_IP_DMAC(channel)
92 #define BSP_MSTP_BIT_FSP_IP_DMAC_s(channel)    BSP_MSTP_BIT_FSP_IP_DMAC(channel)
93 
94 #define BSP_MSTP_REG_FSP_IP_SSI(channel)       R_CPG->CPG_BUS_MCPU1_MSTOP
95 #define BSP_MSTP_BIT_FSP_IP_SSI(channel)       (1U << (R_CPG_CPG_BUS_MCPU1_MSTOP_MSTOP10_ON_Pos + channel))
96 
97 #define BSP_MSTP_REG_FSP_IP_CANFD(channel)     R_CPG->CPG_BUS_MCPU2_MSTOP
98 #define BSP_MSTP_BIT_FSP_IP_CANFD(channel)     (1U << R_CPG_CPG_BUS_MCPU2_MSTOP_MSTOP9_ON_Pos)
99 
100 #define BSP_MSTP_REG_FSP_IP_ADC(channel)       R_CPG->CPG_BUS_MCPU2_MSTOP
101 #define BSP_MSTP_BIT_FSP_IP_ADC(channel)       (1U << R_CPG_CPG_BUS_MCPU2_MSTOP_MSTOP14_ON_Pos)
102 
103 #define BSP_MSTP_REG_FSP_IP_TSU(channel)       R_CPG->CPG_BUS_MCPU2_MSTOP
104 #define BSP_MSTP_BIT_FSP_IP_TSU(channel)       (1U << R_CPG_CPG_BUS_MCPU2_MSTOP_MSTOP15_ON_Pos)
105 
106 #define BSP_MSTP_REG_FSP_IP_WDT(channel)       R_CPG->CPG_BUS_REG0_MSTOP
107 #define BSP_MSTP_BIT_FSP_IP_WDT(channel)       ((2U == (channel)) ? (1U << R_CPG_CPG_BUS_REG0_MSTOP_MSTOP1_ON_Pos) \
108                                                 : (1U << (R_CPG_CPG_BUS_REG0_MSTOP_MSTOP2_ON_Pos + channel)))
109 
110 #define BSP_MSTP_REG_FSP_IP_SCI(channel)       R_CPG->CPG_BUS_MCPU2_MSTOP
111 #define BSP_MSTP_BIT_FSP_IP_SCI(channel)       (1U << (R_CPG_CPG_BUS_MCPU2_MSTOP_MSTOP7_ON_Pos + channel))
112 
113 #define BSP_MSTP_REG_FSP_IP_MTU3(channel)      R_CPG->CPG_BUS_MCPU1_MSTOP
114 #define BSP_MSTP_BIT_FSP_IP_MTU3(channel)      (1U << (R_CPG_CPG_BUS_MCPU1_MSTOP_MSTOP2_ON_Pos))
115 
116 /** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */
117 FSP_FOOTER
118 
119 /***********************************************************************************************************************
120  * Typedef definitions
121  **********************************************************************************************************************/
122 
123 /***********************************************************************************************************************
124  * Exported global variables
125  **********************************************************************************************************************/
126 
127 /***********************************************************************************************************************
128  * Exported global functions (to be accessed by other files)
129  **********************************************************************************************************************/
130 
131 #endif                                 /* BSP_MODULE_H */
132