source: rtems/bsps/arm/altera-cyclone-v/include/bsp/alt_reset_manager.h @ 2afb22b

5
Last change on this file since 2afb22b was 2afb22b, checked in by Chris Johns <chrisj@…>, on 12/23/17 at 07:18:56

Remove make preinstall

A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.

This has at least seven problems:

  • The make preinstall step itself needs time and disk space.
  • Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error.
  • There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult.
  • The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit.
  • An introduction of a new build system is difficult.
  • Include paths specified by the -B option are system headers. This may suppress warnings.
  • The parallel build had sporadic failures on some hosts.

This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.

The new cpukit include directories are:

  • cpukit/include
  • cpukit/score/cpu/@RTEMS_CPU@/include
  • cpukit/libnetworking

The new BSP include directories are:

  • bsps/include
  • bsps/@RTEMS_CPU@/include
  • bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include

There are build tree include directories for generated files.

The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.

The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.

Update #3254.

  • Property mode set to 100644
File size: 10.1 KB
Line 
1/*! \file
2 *  Altera - SoC Reset Manager
3 */
4
5/******************************************************************************
6*
7* Copyright 2013 Altera Corporation. All Rights Reserved.
8*
9* Redistribution and use in source and binary forms, with or without
10* modification, are permitted provided that the following conditions are met:
11*
12* 1. Redistributions of source code must retain the above copyright notice,
13* this list of conditions and the following disclaimer.
14*
15* 2. Redistributions in binary form must reproduce the above copyright notice,
16* this list of conditions and the following disclaimer in the documentation
17* and/or other materials provided with the distribution.
18*
19* 3. The name of the author may not be used to endorse or promote products
20* derived from this software without specific prior written permission.
21*
22* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
23* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
24* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
25* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
27* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
30* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
31* OF SUCH DAMAGE.
32*
33******************************************************************************/
34
35#ifndef __ALT_RESET_MGR_H__
36#define __ALT_RESET_MGR_H__
37
38#include "hwlib.h"
39#include <stdbool.h>
40
41#ifdef __cplusplus
42extern "C"
43{
44#endif  /* __cplusplus */
45
46/*! \addtogroup RST_MGR The Reset Manager
47 *
48 * The Reset Manager API defines functions for accessing, configuring, and
49 * controlling the HPS reset behavior.
50 * @{
51 */
52
53/******************************************************************************/
54/*! \addtogroup RST_MGR_STATUS Reset Status
55 *
56 * This functional group provides information on various aspects of SoC reset
57 * status and timeout events.
58 *
59 * @{
60 */
61
62/******************************************************************************/
63/*!
64 * This type definition enumerates the set of reset causes and timeout events as
65 * register mask values.
66 */
67typedef enum ALT_RESET_EVENT_e
68{
69    /*! Power-On Voltage Detector Cold Reset */
70    ALT_RESET_EVENT_PORVOLTRST          = 0x00000001,
71
72    /*! nPOR Pin Cold Reset                  */
73    ALT_RESET_EVENT_NPORPINRST          = 0x00000002,
74
75    /*! FPGA Core Cold Reset                 */
76    ALT_RESET_EVENT_FPGACOLDRST         = 0x00000004,
77
78    /*! CONFIG_IO Cold Reset                 */
79    ALT_RESET_EVENT_CONFIGIOCOLDRST     = 0x00000008,
80
81    /*! Software Cold Reset                  */
82    ALT_RESET_EVENT_SWCOLDRST           = 0x00000010,
83
84    /*! nRST Pin Warm Reset                  */
85    ALT_RESET_EVENT_NRSTPINRST          = 0x00000100,
86
87    /*! FPGA Core Warm Reset                 */
88    ALT_RESET_EVENT_FPGAWARMRST         = 0x00000200,
89
90    /*! Software Warm Reset                  */
91    ALT_RESET_EVENT_SWWARMRST           = 0x00000400,
92
93    /*! MPU Watchdog 0 Warm Reset            */
94    ALT_RESET_EVENT_MPUWD0RST           = 0x00001000,
95
96    /*! MPU Watchdog 1 Warm Reset            */
97    ALT_RESET_EVENT_MPUWD1RST           = 0x00002000,
98
99    /*! L4 Watchdog 0 Warm Reset             */
100    ALT_RESET_EVENT_L4WD0RST            = 0x00004000,
101
102    /*! L4 Watchdog 1 Warm Reset             */
103    ALT_RESET_EVENT_L4WD1RST            = 0x00008000,
104
105    /*! FPGA Core Debug Reset                */
106    ALT_RESET_EVENT_FPGADBGRST          = 0x00040000,
107
108    /*! DAP Debug Reset                      */
109    ALT_RESET_EVENT_CDBGREQRST          = 0x00080000,
110
111    /*! SDRAM Self-Refresh Timeout           */
112    ALT_RESET_EVENT_SDRSELFREFTIMEOUT   = 0x01000000,
113
114    /*! FPGA manager handshake Timeout       */
115    ALT_RESET_EVENT_FPGAMGRHSTIMEOUT    = 0x02000000,
116
117    /*! SCAN manager handshake Timeout       */
118    ALT_RESET_EVENT_SCANHSTIMEOUT       = 0x04000000,
119
120    /*! FPGA handshake Timeout               */
121    ALT_RESET_EVENT_FPGAHSTIMEOUT       = 0x08000000,
122
123    /*! ETR Stall Timeout                    */
124    ALT_RESET_EVENT_ETRSTALLTIMEOUT     = 0x10000000
125} ALT_RESET_EVENT_t;
126
127/******************************************************************************/
128/*!
129 * Gets the reset and timeout events that caused the last reset.
130 *
131 * The ALT_RESET_EVENT_t enumeration values should be used to selectively
132 * examine the returned reset cause(s).
133 *
134 * \returns     A mask of the reset and/or timeout events that caused the last
135 *              reset.
136 */
137uint32_t alt_reset_event_get(void);
138
139/******************************************************************************/
140/*!
141 * Clears the reset and timeout events that caused the last reset.
142 *
143 * \param       event_mask
144 *              A mask of the selected reset and timeout events to clear in the
145 *              Reset Manager \e stat register. The mask selection can be formed
146 *              using the ALT_RESET_EVENT_t enumeration values.
147 *
148 * \retval      ALT_E_SUCCESS   The operation was succesful.
149 * \retval      ALT_E_ERROR     The operation failed.
150 */
151ALT_STATUS_CODE alt_reset_event_clear(uint32_t event_mask);
152
153/*! @} */
154
155/******************************************************************************/
156/*! \addtogroup RST_MGR_CTRL Reset Control
157 *
158 * This functional group provides global and selective reset control for the SoC
159 * and its constituent modules.
160 *
161 * @{
162 */
163
164/******************************************************************************/
165/*!
166 * Initiate a cold reset of the SoC.
167 *
168 * If this function is successful, then it should never return.
169 *
170 * \retval      ALT_E_SUCCESS   The operation was succesful.
171 * \retval      ALT_E_ERROR     The operation failed.
172 */
173ALT_STATUS_CODE alt_reset_cold_reset(void);
174
175/******************************************************************************/
176/*!
177 * Initiate a warm reset of the SoC.
178 *
179 * Perform a hardware sequenced warm reset of the SoC. A hardware sequenced
180 * reset handshake with certain modules can optionally be requested in an
181 * attempt to ensure an orderly reset transition.
182 *
183 * \param       warm_reset_delay
184 *              Specifies the number of cycles after the Reset Manager releases
185 *              the Clock Manager reset before releasing any other hardware
186 *              controlled resets. Value must be greater than 16 and less than
187 *              256.
188 *
189 * \param       nRST_pin_clk_assertion
190 *              Specifies that number of clock cycles (osc1_clk?) to externally
191 *              assert the warm reset pin (nRST). 0 <= \e nRST_pin_clk_assertion <=
192 *              (2**20 - 1). A value of 0 prevents any assertion of nRST.
193 *
194 * \param       sdram_refresh
195 *              Controls whether the contents of SDRAM survive a hardware
196 *              sequenced warm reset. The reset manager requests the SDRAM
197 *              controller to put SDRAM devices into self-refresh mode before
198 *              asserting warm reset signals. An argument value of \b true
199 *              enables the option, \b false disables the option.
200 *
201 * \param       fpga_mgr_handshake
202 *              Controls whether a handshake between the reset manager and FPGA
203 *              manager occurs before a warm reset. The handshake is used to
204 *              warn the FPGA manager that a warm reset is imminent so it can
205 *              prepare for it by driving its output clock to a quiescent state
206 *              to avoid glitches. An argument value of \b true enables the
207 *              option, \b false disables the option.
208 *
209 * \param       scan_mgr_handshake
210 *              Controls whether a handshake between the reset manager and scan
211 *              manager occurs before a warm reset. The handshake is used to
212 *              warn the scan manager that a warm reset is imminent so it can
213 *              prepare for it by driving its output clock to a quiescent state
214 *              to avoid glitches. An argument value of \b true enables the
215 *              option, \b false disables the option.
216 *
217 * \param       fpga_handshake
218 *              Controls whether a handshake between the reset manager and the
219 *              FPGA occurs before a warm reset. The handshake is used to warn
220 *              the FPGA that a warm reset is imminent so that the FPGA prepare
221 *              for the reset event in soft IP. An argument value of \b true
222 *              enables the option, \b false disables the option.
223 *
224 * \param       etr_stall
225 *              Controls whether the ETR is requested to idle its AXI master
226 *              interface (i.e. finish outstanding transactions and not initiate
227 *              any more) to the L3 Interconnect before a warm reset. An
228 *              argument value of \b true enables the option, \b false disables
229 *              the option.
230 *
231 * \retval      ALT_E_SUCCESS   The operation was succesful.
232 * \retval      ALT_E_ERROR     The operation failed.
233 */
234ALT_STATUS_CODE alt_reset_warm_reset(uint32_t warm_reset_delay,
235                                     uint32_t nRST_pin_clk_assertion,
236                                     bool sdram_refresh,
237                                     bool fpga_mgr_handshake,
238                                     bool scan_mgr_handshake,
239                                     bool fpga_handshake,
240                                     bool etr_stall);
241
242#if 0
243/*! \addtogroup RST_MGR_MPU
244 *
245 * This functional group provides reset control for the Cortex-A9 MPU module.
246 *
247 * @{
248 */
249
250/*! @} */
251
252/*! \addtogroup RST_MGR_PERIPH
253 *
254 * This functional group provides inidividual reset control for the HPS
255 * peripheral modules.
256 *
257 * @{
258 */
259
260/*! @} */
261
262/*! \addtogroup RST_MGR_BRG
263 *
264 * This functional group provides inidividual reset control for the bridge
265 * interfaces between the HPS and FPGA.
266 *
267 * @{
268 */
269
270/*! @} */
271
272/*! \addtogroup RST_MGR_MISC
273 *
274 * This functional group provides inidividual reset control for miscellaneous
275 * HPS modules.
276 *
277 * @{
278 */
279
280/*! @} */
281
282#endif
283
284/*! @} */
285
286/*! @} */
287
288#ifdef __cplusplus
289}
290#endif  /* __cplusplus */
291#endif  /* __ALT_RESET_MGR_H__ */
Note: See TracBrowser for help on using the repository browser.