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_RESET_H
8 #define BSP_RESET_H
9 
10 /***********************************************************************************************************************
11  * Includes   <System Includes> , "Project Includes"
12  **********************************************************************************************************************/
13 
14 /** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */
15 FSP_HEADER
16 
17 /***********************************************************************************************************************
18  * Macro definitions
19  **********************************************************************************************************************/
20 
21 /* Key code for writing reset register. */
22 #define BSP_PRV_RESET_KEY                 (0x4321A501U)
23 #define BSP_PRV_RESET_KEY_AUTO_RELEASE    (0x4321A502U)
24 #define BSP_PRV_RESET_RELEASE_KEY         (0x00000000U)
25 
26 /* MRCTL register selection. Bits 16-20 assign values in order for the module control registers (A=0, E=4).
27  * Bit 24 indicates whether MRCTLn register is in the safety region. */
28 #define BSP_RESET_MRCTLA_SELECT           (0x00000000U)
29 #define BSP_RESET_MRCTLE_SELECT           (0x00040000U)
30 #define BSP_RESET_MRCTLI_SELECT           (0x00480000U)
31 #define BSP_RESET_MRCTLM_SELECT           (0x000C0000U)
32 
33 /* MRCTL register bit number.  */
34 #define BSP_RESET_MRCTL_BIT0_SHIFT        (0x00000000U)
35 #define BSP_RESET_MRCTL_BIT1_SHIFT        (0x00000001U)
36 #define BSP_RESET_MRCTL_BIT2_SHIFT        (0x00000002U)
37 #define BSP_RESET_MRCTL_BIT3_SHIFT        (0x00000003U)
38 #define BSP_RESET_MRCTL_BIT4_SHIFT        (0x00000004U)
39 #define BSP_RESET_MRCTL_BIT5_SHIFT        (0x00000005U)
40 #define BSP_RESET_MRCTL_BIT6_SHIFT        (0x00000006U)
41 #define BSP_RESET_MRCTL_BIT7_SHIFT        (0x00000007U)
42 #define BSP_RESET_MRCTL_BIT8_SHIFT        (0x00000008U)
43 #define BSP_RESET_MRCTL_BIT9_SHIFT        (0x00000009U)
44 #define BSP_RESET_MRCTL_BIT10_SHIFT       (0x0000000AU)
45 #define BSP_RESET_MRCTL_BIT11_SHIFT       (0x0000000BU)
46 #define BSP_RESET_MRCTL_BIT12_SHIFT       (0x0000000CU)
47 #define BSP_RESET_MRCTL_BIT13_SHIFT       (0x0000000DU)
48 #define BSP_RESET_MRCTL_BIT14_SHIFT       (0x0000000EU)
49 #define BSP_RESET_MRCTL_BIT15_SHIFT       (0x0000000FU)
50 #define BSP_RESET_MRCTL_BIT16_SHIFT       (0x00000010U)
51 #define BSP_RESET_MRCTL_BIT17_SHIFT       (0x00000011U)
52 #define BSP_RESET_MRCTL_BIT18_SHIFT       (0x00000012U)
53 #define BSP_RESET_MRCTL_BIT19_SHIFT       (0x00000013U)
54 #define BSP_RESET_MRCTL_BIT20_SHIFT       (0x00000014U)
55 #define BSP_RESET_MRCTL_BIT21_SHIFT       (0x00000015U)
56 #define BSP_RESET_MRCTL_BIT22_SHIFT       (0x00000016U)
57 #define BSP_RESET_MRCTL_BIT23_SHIFT       (0x00000017U)
58 #define BSP_RESET_MRCTL_BIT24_SHIFT       (0x00000018U)
59 #define BSP_RESET_MRCTL_BIT25_SHIFT       (0x00000019U)
60 #define BSP_RESET_MRCTL_BIT26_SHIFT       (0x0000001AU)
61 #define BSP_RESET_MRCTL_BIT27_SHIFT       (0x0000001BU)
62 #define BSP_RESET_MRCTL_BIT28_SHIFT       (0x0000001CU)
63 #define BSP_RESET_MRCTL_BIT29_SHIFT       (0x0000001DU)
64 #define BSP_RESET_MRCTL_BIT30_SHIFT       (0x0000001EU)
65 #define BSP_RESET_MRCTL_BIT31_SHIFT       (0x0000001FU)
66 
67 /***********************************************************************************************************************
68  * Typedef definitions
69  **********************************************************************************************************************/
70 
71 /*******************************************************************************************************************//**
72  * @addtogroup BSP_MCU
73  * @{
74  **********************************************************************************************************************/
75 
76 /** CPU to be reset target.*/
77 typedef enum e_bsp_reset
78 {
79     BSP_RESET_CR52_0       = 0,        ///< Software reset for CR52_0
80     BSP_RESET_CR52_1       = 1,        ///< Software reset for CR52_1
81     BSP_RESET_CA55_CLUSTER = 2,        ///< Software reset for CA55_CLUSTER
82     BSP_RESET_CA55_0       = 3,        ///< Software reset for CA55_0
83     BSP_RESET_CA55_1       = 4,        ///< Software reset for CA55_1
84     BSP_RESET_CA55_2       = 5,        ///< Software reset for CA55_2
85     BSP_RESET_CA55_3       = 6,        ///< Software reset for CA55_3
86 } bsp_reset_t;
87 
88 /** CA55 cluster reset auto reset release status. */
89 typedef enum e_bsp_cluster_reset_auto_release
90 {
91     BSP_CLUSTER_RESET_AUTO_RELEASE_DISABLE = 0,
92     BSP_CLUSTER_RESET_AUTO_RELEASE_ENABLE  = 1,
93 } bsp_cluster_reset_auto_release_t;
94 
95 /** The different types of registers that can control the reset of peripheral modules related to Ethernet. */
96 typedef enum e_bsp_module_reset
97 {
98     /** Enables writing to the registers related to xSPI Unit 0 reset control. */
99     BSP_MODULE_RESET_XSPI0 = (BSP_RESET_MRCTLA_SELECT | BSP_RESET_MRCTL_BIT4_SHIFT),
100 
101     /** Enables writing to the registers related to xSPI Unit 1 reset control. */
102     BSP_MODULE_RESET_XSPI1 = (BSP_RESET_MRCTLA_SELECT | BSP_RESET_MRCTL_BIT5_SHIFT),
103 
104     /** Enables writing to the registers related to GMAC (PCLKH clock domain) reset control. */
105     BSP_MODULE_RESET_GMAC0_PCLKH = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT0_SHIFT),
106 
107     /** Enables writing to the registers related to GMAC (PCLKM clock domain) reset control. */
108     BSP_MODULE_RESET_GMAC0_PCLKM = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT1_SHIFT),
109 
110     /** Enables writing to the registers related to ETHSW reset control. */
111     BSP_MODULE_RESET_ETHSW = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT2_SHIFT),
112 
113     /** Enables writing to the registers related to ESC (Bus clock domain) reset control. */
114     BSP_MODULE_RESET_ESC_BUS = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT3_SHIFT),
115 
116     /** Enables writing to the registers related to ESC (IP clock domain) reset control. */
117     BSP_MODULE_RESET_ESC_IP = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT4_SHIFT),
118 
119     /** Enables writing to the registers related to Ethernet subsystem register reset control. */
120     BSP_MODULE_RESET_ESC_ETH_SUBSYSTEM = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT5_SHIFT),
121 
122     /** Enables writing to the registers related to MII converter reset control. */
123     BSP_MODULE_RESET_MII = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT6_SHIFT),
124 
125     /** Enables writing to the registers related to GMAC Unit 1 (PCLKAH clock domain) reset control. */
126     BSP_MODULE_RESET_GMAC1_ACLK = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT16_SHIFT),
127 
128     /** Enables writing to the registers related to GMAC Unit 1 (PCLKAM clock domain) reset control. */
129     BSP_MODULE_RESET_GMAC1_HCLK = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT17_SHIFT),
130 
131     /** Enables writing to the registers related to GMAC Unit 2 (PCLKAH clock domain) reset control. */
132     BSP_MODULE_RESET_GMAC2_ACLK = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT18_SHIFT),
133 
134     /** Enables writing to the registers related to GMAC Unit 2 (PCLKAM clock domain) reset control. */
135     BSP_MODULE_RESET_GMAC2_HCLK = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT19_SHIFT),
136 
137     /** Enables writing to the registers related to PHOSTIF reset control. */
138     BSP_MODULE_RESET_PHOSTIF = (BSP_RESET_MRCTLI_SELECT | BSP_RESET_MRCTL_BIT0_SHIFT),
139 
140     /** Enables writing to the registers related to SHOSTIF (Master bus clock domain) reset control. */
141     BSP_MODULE_RESET_SHOSTIF_MASTER_BUS_CLOCK = (BSP_RESET_MRCTLI_SELECT | BSP_RESET_MRCTL_BIT1_SHIFT),
142 
143     /** Enables writing to the registers related to SHOSTIF (Slave bus clock domain) reset control. */
144     BSP_MODULE_RESET_SHOSTIF_SLAVE_BUS_CLOCK = (BSP_RESET_MRCTLI_SELECT | BSP_RESET_MRCTL_BIT2_SHIFT),
145 
146     /** Enables writing to the registers related to SHOSTIF (IP clock domain) reset control. */
147     BSP_MODULE_RESET_SHOSTIF_IP_CLOCK = (BSP_RESET_MRCTLI_SELECT | BSP_RESET_MRCTL_BIT3_SHIFT),
148 
149     /** Enables writing to the registers related to PCIE reset control. */
150     BSP_MODULE_RESET_PCIE = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT8_SHIFT),
151 
152     /** Enables writing to the registers related to DDRSS rst_n reset control. */
153     BSP_MODULE_RESET_DDRSS_RST_N = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT16_SHIFT),
154 
155     /** Enables writing to the registers related to DDRSS PwrOkln reset control. */
156     BSP_MODULE_RESET_DDRSS_RST_PWROKLN = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT17_SHIFT),
157 
158     /** Enables writing to the registers related to DDRSS Reset reset control. */
159     BSP_MODULE_RESET_DDRSS_RESET = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT18_SHIFT),
160 
161     /** Enables writing to the registers related to DDRSS axi0_ARESETn reset control. */
162     BSP_MODULE_RESET_DDRSS_AXI0_ARESETN = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT19_SHIFT),
163 
164     /** Enables writing to the registers related to DDRSS axi1_ARESETn reset control. */
165     BSP_MODULE_RESET_DDRSS_AXI1_ARESETN = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT20_SHIFT),
166 
167     /** Enables writing to the registers related to DDRSS axi2_ARESETn reset control. */
168     BSP_MODULE_RESET_DDRSS_AXI2_ARESETN = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT21_SHIFT),
169 
170     /** Enables writing to the registers related to DDRSS axi3_ARESETn reset control. */
171     BSP_MODULE_RESET_DDRSS_AXI3_ARESETN = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT22_SHIFT),
172 
173     /** Enables writing to the registers related to DDRSS axi4_ARESETn reset control. */
174     BSP_MODULE_RESET_DDRSS_AXI4_ARESETN = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT23_SHIFT),
175 
176     /** Enables writing to the registers related to DDRSS MC_PRESETn reset control. */
177     BSP_MODULE_RESET_DDRSS_MC_PRESETN = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT24_SHIFT),
178 
179     /** Enables writing to the registers related to DDRSS PHY_PRESETn reset control. */
180     BSP_MODULE_RESET_DDRSS_PHY_PRESETN = (BSP_RESET_MRCTLM_SELECT | BSP_RESET_MRCTL_BIT25_SHIFT),
181 } bsp_module_reset_t;
182 
183 /** @} (end addtogroup BSP_MCU) */
184 
185 /***********************************************************************************************************************
186  * Exported global variables
187  **********************************************************************************************************************/
188 
189 /***********************************************************************************************************************
190  * Exported global functions (to be accessed by other files)
191  **********************************************************************************************************************/
192 
193 /** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */
194 FSP_FOOTER
195 
196 #endif
197