summaryrefslogtreecommitdiff
path: root/bsp/nuvoton/libraries/ma35/StdDriver/src/nu_sys.c
blob: 38cd15bb6cc986922b7c0ce2f63347d26fa4f200 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/**************************************************************************//**
 * @file     sys.c
 * @brief    SYS driver source file
 *
 * SPDX-License-Identifier: Apache-2.0
 * @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved.
 *****************************************************************************/

#include "NuMicro.h"

#ifdef __cplusplus
extern "C"
{
#endif

/** @addtogroup Standard_Driver Standard Driver
  @{
*/

/** @addtogroup SYS_Driver SYS Driver
  @{
*/


/** @addtogroup SYS_EXPORTED_FUNCTIONS SYS Exported Functions
  @{
*/

/**
  * @brief      Reset selected module
  * @param[in]  u32ModuleIndex is module index. Including :
  *             - \ref PDMA0_RST
  *             - \ref PDMA1_RST
  *             - \ref PDMA2_RST
  *             - \ref PDMA3_RST
  *             - \ref DISPC_RST
  *             - \ref VCAP0_RST
  *             - \ref VCAP1_RST
  *             - \ref GFX_RST
  *             - \ref VDEC_RST
  *             - \ref WRHO0_RST
  *             - \ref WRHO1_RST
  *             - \ref GMAC0_RST
  *             - \ref GMAC1_RST
  *             - \ref HWSEM0_RST
  *             - \ref EBI_RST
  *             - \ref HSUSBH0_RST
  *             - \ref HSUSBH1_RST
  *             - \ref HSUSBD_RST
  *             - \ref USBHL_RST
  *             - \ref SDH0_RST
  *             - \ref SDH1_RST
  *             - \ref NAND_RST
  *             - \ref GPIO_RST
  *             - \ref MCTLP_RST
  *             - \ref MCTLC_RST
  *             - \ref DDRPUB_RST
  *             - \ref TMR0_RST
  *             - \ref TMR1_RST
  *             - \ref TMR2_RST
  *             - \ref TMR3_RST
  *             - \ref I2C0_RST
  *             - \ref I2C1_RST
  *             - \ref I2C2_RST
  *             - \ref I2C3_RST
  *             - \ref QSPI0_RST
  *             - \ref SPI0_RST
  *             - \ref SPI1_RST
  *             - \ref SPI2_RST
  *             - \ref UART0_RST
  *             - \ref UART1_RST
  *             - \ref UART2_RST
  *             - \ref UART3_RST
  *             - \ref UART4_RST
  *             - \ref UART5_RST
  *             - \ref UART6_RST
  *             - \ref UART7_RST
  *             - \ref MCAN0_RST
  *             - \ref MCAN1_RST
  *             - \ref EADC0_RST
  *             - \ref I2S0_RST
  *             - \ref SC0_RST
  *             - \ref SC1_RST
  *             - \ref QSPI1_RST
  *             - \ref SPI3_RST
  *             - \ref EPWM0_RST
  *             - \ref EPWM1_RST
  *             - \ref QEI0_RST
  *             - \ref QEI1_RST
  *             - \ref ECAP0_RST
  *             - \ref ECAP1_RST
  *             - \ref MCAN2_RST
  *             - \ref ADC0_RST
  *             - \ref TMR4_RST
  *             - \ref TMR5_RST
  *             - \ref TMR6_RST
  *             - \ref TMR7_RST
  *             - \ref TMR8_RST
  *             - \ref TMR9_RST
  *             - \ref TMR10_RST
  *             - \ref TMR11_RST
  *             - \ref UART8_RST
  *             - \ref UART9_RST
  *             - \ref UART10_RST
  *             - \ref UART11_RST
  *             - \ref UART12_RST
  *             - \ref UART13_RST
  *             - \ref UART14_RST
  *             - \ref UART15_RST
  *             - \ref UART16_RST
  *             - \ref I2S1_RST
  *             - \ref I2C4_RST
  *             - \ref I2C5_RST
  *             - \ref EPWM2_RST
  *             - \ref ECAP2_RST
  *             - \ref QEI2_RST
  *             - \ref MCAN3_RST
  *             - \ref KPI_RST
  *             - \ref GIC_RST
  *             - \ref SSMCC_RST
  *             - \ref SSPCC_RST
  * @return     None
  * @details    This function reset selected module.
  */
void SYS_ResetModule(uint32_t u32ModuleIndex)
{
    uint32_t u32tmpVal = 0UL, u32tmpAddr = 0UL;

    /* Generate reset signal to the corresponding module */
    u32tmpVal = (1UL << (u32ModuleIndex & 0x00ffffffUL));
    u32tmpAddr = (vu32)&SYS->IPRST0 + ((u32ModuleIndex >> 24UL));
    *(vu32 *)u32tmpAddr |= u32tmpVal;

    /* Release corresponding module from reset state */
    u32tmpVal = ~(1UL << (u32ModuleIndex & 0x00ffffffUL));
    *(vu32 *)u32tmpAddr &= u32tmpVal;
}


/*@}*/ /* end of group SYS_EXPORTED_FUNCTIONS */

/*@}*/ /* end of group SYS_Driver */

/*@}*/ /* end of group Standard_Driver */

#ifdef __cplusplus
}
#endif