1 /******************************************************************************
3 * Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to deal
7 * in the Software without restriction, including without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
15 * Use of the Software is limited solely to applications:
16 * (a) running on a Xilinx device, or
17 * (b) that interact with a Xilinx device through a bus or interconnect.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
24 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 * Except as contained in this notice, the name of the Xilinx shall not be used
28 * in advertising or otherwise to promote the sale, use or other dealings in
29 * this Software without prior written authorization from Xilinx.
31 ******************************************************************************/
32 /*****************************************************************************/
37 * This header file contains identifiers and HW access functions (or
38 * macros) that can be used to access the device. The user should refer to the
39 * hardware device specification for more details of the device operation.
40 * The driver functions/APIs are defined in xscugic.h.
42 * This GIC device has two parts, a distributor and CPU interface(s). Each part
43 * has separate register definition sections.
47 * MODIFICATION HISTORY:
49 * Ver Who Date Changes
50 * ----- ---- -------- -----------------------------------------------------
51 * 1.00a drg 01/19/10 First release
52 * 1.01a sdm 11/09/11 "xil_exception.h" added as include.
53 * Macros XScuGic_EnableIntr and XScuGic_DisableIntr are
54 * added to enable or disable interrupts based on
55 * Distributor Register base address. Normally users use
56 * XScuGic instance and call XScuGic_Enable or
57 * XScuGic_Disable to enable/disable interrupts. These
58 * new macros are provided when user does not want to
59 * use an instance pointer but still wants to enable or
61 * Function prototypes for functions (present in newly
62 * added file xscugic_hw.c) are added.
63 * 1.03a srt 02/27/13 Moved Offset calculation macros from *_hw.c (CR
65 * 1.04a hk 05/04/13 Fix for CR#705621. Moved function prototypes
66 * XScuGic_SetPriTrigTypeByDistAddr and
67 * XScuGic_GetPriTrigTypeByDistAddr here from xscugic.h
68 * 3.0 pkp 12/09/14 changed XSCUGIC_MAX_NUM_INTR_INPUTS for
70 * 3.0 kvn 02/13/14 Modified code for MISRA-C:2012 compliance.
73 ******************************************************************************/
75 #ifndef XSCUGIC_HW_H /* prevent circular inclusions */
76 #define XSCUGIC_HW_H /* by using protection macros */
82 /***************************** Include Files *********************************/
84 #include "xil_types.h"
85 #include "xil_assert.h"
87 #include "xil_exception.h"
89 /************************** Constant Definitions *****************************/
92 * The maximum number of interrupts supported by the hardware.
95 #define XSCUGIC_MAX_NUM_INTR_INPUTS 95U /* Maximum number of interrupt defined by Zynq */
97 #define XSCUGIC_MAX_NUM_INTR_INPUTS 195U /* Maximum number of interrupt defined by Zynq Ultrascale Mp */
101 * The maximum priority value that can be used in the GIC.
103 #define XSCUGIC_MAX_INTR_PRIO_VAL 248U
104 #define XSCUGIC_INTR_PRIO_MASK 0x000000F8U
106 /** @name Distributor Interface Register Map
108 * Define the offsets from the base address for all Distributor registers of
109 * the interrupt controller, some registers may be reserved in the hardware
113 #define XSCUGIC_DIST_EN_OFFSET 0x00000000U /**< Distributor Enable
115 #define XSCUGIC_IC_TYPE_OFFSET 0x00000004U /**< Interrupt Controller
117 #define XSCUGIC_DIST_IDENT_OFFSET 0x00000008U /**< Implementor ID
119 #define XSCUGIC_SECURITY_OFFSET 0x00000080U /**< Interrupt Security
121 #define XSCUGIC_ENABLE_SET_OFFSET 0x00000100U /**< Enable Set
123 #define XSCUGIC_DISABLE_OFFSET 0x00000180U /**< Enable Clear Register */
124 #define XSCUGIC_PENDING_SET_OFFSET 0x00000200U /**< Pending Set
126 #define XSCUGIC_PENDING_CLR_OFFSET 0x00000280U /**< Pending Clear
128 #define XSCUGIC_ACTIVE_OFFSET 0x00000300U /**< Active Status Register */
129 #define XSCUGIC_PRIORITY_OFFSET 0x00000400U /**< Priority Level Register */
130 #define XSCUGIC_SPI_TARGET_OFFSET 0x00000800U /**< SPI Target
131 Register 0x800-0x8FB */
132 #define XSCUGIC_INT_CFG_OFFSET 0x00000C00U /**< Interrupt Configuration
133 Register 0xC00-0xCFC */
134 #define XSCUGIC_PPI_STAT_OFFSET 0x00000D00U /**< PPI Status Register */
135 #define XSCUGIC_SPI_STAT_OFFSET 0x00000D04U /**< SPI Status Register
137 #define XSCUGIC_AHB_CONFIG_OFFSET 0x00000D80U /**< AHB Configuration
139 #define XSCUGIC_SFI_TRIG_OFFSET 0x00000F00U /**< Software Triggered
140 Interrupt Register */
141 #define XSCUGIC_PERPHID_OFFSET 0x00000FD0U /**< Peripheral ID Reg */
142 #define XSCUGIC_PCELLID_OFFSET 0x00000FF0U /**< Pcell ID Register */
145 /** @name Distributor Enable Register
146 * Controls if the distributor response to external interrupt inputs.
149 #define XSCUGIC_EN_INT_MASK 0x00000001U /**< Interrupt In Enable */
152 /** @name Interrupt Controller Type Register
155 #define XSCUGIC_LSPI_MASK 0x0000F800U /**< Number of Lockable
158 #define XSCUGIC_DOMAIN_MASK 0x00000400U /**< Number os Security domains*/
159 #define XSCUGIC_CPU_NUM_MASK 0x000000E0U /**< Number of CPU Interfaces */
160 #define XSCUGIC_NUM_INT_MASK 0x0000001FU /**< Number of Interrupt IDs */
163 /** @name Implementor ID Register
164 * Implementor and revision information.
167 #define XSCUGIC_REV_MASK 0x00FFF000U /**< Revision Number */
168 #define XSCUGIC_IMPL_MASK 0x00000FFFU /**< Implementor */
171 /** @name Interrupt Security Registers
172 * Each bit controls the security level of an interrupt, either secure or non
173 * secure. These registers can only be accessed using secure read and write.
174 * There are registers for each of the CPU interfaces at offset 0x080. A
175 * register set for the SPI interrupts is available to all CPU interfaces.
176 * There are up to 32 of these registers staring at location 0x084.
179 #define XSCUGIC_INT_NS_MASK 0x00000001U /**< Each bit corresponds to an
183 /** @name Enable Set Register
184 * Each bit controls the enabling of an interrupt, a 0 is disabled, a 1 is
185 * enabled. Writing a 0 has no effect. Use the ENABLE_CLR register to set a
187 * There are registers for each of the CPU interfaces at offset 0x100. With up
188 * to 8 registers aliased to the same address. A register set for the SPI
189 * interrupts is available to all CPU interfaces.
190 * There are up to 32 of these registers staring at location 0x104.
193 #define XSCUGIC_INT_EN_MASK 0x00000001U /**< Each bit corresponds to an
197 /** @name Enable Clear Register
198 * Each bit controls the disabling of an interrupt, a 0 is disabled, a 1 is
199 * enabled. Writing a 0 has no effect. Writing a 1 disables an interrupt and
200 * sets the corresponding bit to 0.
201 * There are registers for each of the CPU interfaces at offset 0x180. With up
202 * to 8 registers aliased to the same address.
203 * A register set for the SPI interrupts is available to all CPU interfaces.
204 * There are up to 32 of these registers staring at location 0x184.
207 #define XSCUGIC_INT_CLR_MASK 0x00000001U /**< Each bit corresponds to an
211 /** @name Pending Set Register
212 * Each bit controls the Pending or Active and Pending state of an interrupt, a
213 * 0 is not pending, a 1 is pending. Writing a 0 has no effect. Writing a 1 sets
214 * an interrupt to the pending state.
215 * There are registers for each of the CPU interfaces at offset 0x200. With up
216 * to 8 registers aliased to the same address.
217 * A register set for the SPI interrupts is available to all CPU interfaces.
218 * There are up to 32 of these registers staring at location 0x204.
221 #define XSCUGIC_PEND_SET_MASK 0x00000001U /**< Each bit corresponds to an
225 /** @name Pending Clear Register
226 * Each bit can clear the Pending or Active and Pending state of an interrupt, a
227 * 0 is not pending, a 1 is pending. Writing a 0 has no effect. Writing a 1
228 * clears the pending state of an interrupt.
229 * There are registers for each of the CPU interfaces at offset 0x280. With up
230 * to 8 registers aliased to the same address.
231 * A register set for the SPI interrupts is available to all CPU interfaces.
232 * There are up to 32 of these registers staring at location 0x284.
235 #define XSCUGIC_PEND_CLR_MASK 0x00000001U /**< Each bit corresponds to an
239 /** @name Active Status Register
240 * Each bit provides the Active status of an interrupt, a
241 * 0 is not Active, a 1 is Active. This is a read only register.
242 * There are registers for each of the CPU interfaces at offset 0x300. With up
243 * to 8 registers aliased to each address.
244 * A register set for the SPI interrupts is available to all CPU interfaces.
245 * There are up to 32 of these registers staring at location 0x380.
248 #define XSCUGIC_ACTIVE_MASK 0x00000001U /**< Each bit corresponds to an
252 /** @name Priority Level Register
253 * Each byte in a Priority Level Register sets the priority level of an
254 * interrupt. Reading the register provides the priority level of an interrupt.
255 * There are registers for each of the CPU interfaces at offset 0x400 through
256 * 0x41C. With up to 8 registers aliased to each address.
257 * 0 is highest priority, 0xFF is lowest.
258 * A register set for the SPI interrupts is available to all CPU interfaces.
259 * There are up to 255 of these registers staring at location 0x420.
262 #define XSCUGIC_PRIORITY_MASK 0x000000FFU /**< Each Byte corresponds to an
264 #define XSCUGIC_PRIORITY_MAX 0x000000FFU /**< Highest value of a priority
265 actually the lowest priority*/
268 /** @name SPI Target Register 0x800-0x8FB
269 * Each byte references a separate SPI and programs which of the up to 8 CPU
270 * interfaces are sent a Pending interrupt.
271 * There are registers for each of the CPU interfaces at offset 0x800 through
272 * 0x81C. With up to 8 registers aliased to each address.
273 * A register set for the SPI interrupts is available to all CPU interfaces.
274 * There are up to 255 of these registers staring at location 0x820.
276 * This driver does not support multiple CPU interfaces. These are included
277 * for complete documentation.
280 #define XSCUGIC_SPI_CPU7_MASK 0x00000080U /**< CPU 7 Mask*/
281 #define XSCUGIC_SPI_CPU6_MASK 0x00000040U /**< CPU 6 Mask*/
282 #define XSCUGIC_SPI_CPU5_MASK 0x00000020U /**< CPU 5 Mask*/
283 #define XSCUGIC_SPI_CPU4_MASK 0x00000010U /**< CPU 4 Mask*/
284 #define XSCUGIC_SPI_CPU3_MASK 0x00000008U /**< CPU 3 Mask*/
285 #define XSCUGIC_SPI_CPU2_MASK 0x00000003U /**< CPU 2 Mask*/
286 #define XSCUGIC_SPI_CPU1_MASK 0x00000002U /**< CPU 1 Mask*/
287 #define XSCUGIC_SPI_CPU0_MASK 0x00000001U /**< CPU 0 Mask*/
290 /** @name Interrupt Configuration Register 0xC00-0xCFC
291 * The interrupt configuration registers program an SFI to be active HIGH level
292 * sensitive or rising edge sensitive.
293 * Each bit pair describes the configuration for an INT_ID.
294 * SFI Read Only b10 always
295 * PPI Read Only depending on how the PPIs are configured.
296 * b01 Active HIGH level sensitive
297 * b11 Rising edge sensitive
298 * SPI LSB is read only.
299 * b01 Active HIGH level sensitive
300 * b11 Rising edge sensitive/
301 * There are registers for each of the CPU interfaces at offset 0xC00 through
302 * 0xC04. With up to 8 registers aliased to each address.
303 * A register set for the SPI interrupts is available to all CPU interfaces.
304 * There are up to 255 of these registers staring at location 0xC08.
307 #define XSCUGIC_INT_CFG_MASK 0x00000003U /**< */
310 /** @name PPI Status Register
311 * Enables an external AMBA master to access the status of the PPI inputs.
312 * A CPU can only read the status of its local PPI signals and cannot read the
313 * status for other CPUs.
314 * This register is aliased for each CPU interface.
317 #define XSCUGIC_PPI_C15_MASK 0x00008000U /**< PPI Status */
318 #define XSCUGIC_PPI_C14_MASK 0x00004000U /**< PPI Status */
319 #define XSCUGIC_PPI_C13_MASK 0x00002000U /**< PPI Status */
320 #define XSCUGIC_PPI_C12_MASK 0x00001000U /**< PPI Status */
321 #define XSCUGIC_PPI_C11_MASK 0x00000800U /**< PPI Status */
322 #define XSCUGIC_PPI_C10_MASK 0x00000400U /**< PPI Status */
323 #define XSCUGIC_PPI_C09_MASK 0x00000200U /**< PPI Status */
324 #define XSCUGIC_PPI_C08_MASK 0x00000100U /**< PPI Status */
325 #define XSCUGIC_PPI_C07_MASK 0x00000080U /**< PPI Status */
326 #define XSCUGIC_PPI_C06_MASK 0x00000040U /**< PPI Status */
327 #define XSCUGIC_PPI_C05_MASK 0x00000020U /**< PPI Status */
328 #define XSCUGIC_PPI_C04_MASK 0x00000010U /**< PPI Status */
329 #define XSCUGIC_PPI_C03_MASK 0x00000008U /**< PPI Status */
330 #define XSCUGIC_PPI_C02_MASK 0x00000004U /**< PPI Status */
331 #define XSCUGIC_PPI_C01_MASK 0x00000002U /**< PPI Status */
332 #define XSCUGIC_PPI_C00_MASK 0x00000001U /**< PPI Status */
335 /** @name SPI Status Register 0xd04-0xd7C
336 * Enables an external AMBA master to access the status of the SPI inputs.
337 * There are up to 63 registers if the maximum number of SPI inputs are
341 #define XSCUGIC_SPI_N_MASK 0x00000001U /**< Each bit corresponds to an SPI
345 /** @name AHB Configuration Register
346 * Provides the status of the CFGBIGEND input signal and allows the endianess
347 * of the GIC to be set.
350 #define XSCUGIC_AHB_END_MASK 0x00000004U /**< 0-GIC uses little Endian,
351 1-GIC uses Big Endian */
352 #define XSCUGIC_AHB_ENDOVR_MASK 0x00000002U /**< 0-Uses CFGBIGEND control,
353 1-use the AHB_END bit */
354 #define XSCUGIC_AHB_TIE_OFF_MASK 0x00000001U /**< State of CFGBIGEND */
358 /** @name Software Triggered Interrupt Register
359 * Controls issueing of software interrupts.
362 #define XSCUGIC_SFI_SELFTRIG_MASK 0x02010000U
363 #define XSCUGIC_SFI_TRIG_TRGFILT_MASK 0x03000000U /**< Target List filter
364 b00-Use the target List
365 b01-All CPUs except requester
368 #define XSCUGIC_SFI_TRIG_CPU_MASK 0x00FF0000U /**< CPU Target list */
369 #define XSCUGIC_SFI_TRIG_SATT_MASK 0x00008000U /**< 0= Use a secure interrupt */
370 #define XSCUGIC_SFI_TRIG_INTID_MASK 0x0000000FU /**< Set to the INTID
371 signaled to the CPU*/
374 /** @name CPU Interface Register Map
376 * Define the offsets from the base address for all CPU registers of the
377 * interrupt controller, some registers may be reserved in the hardware device.
380 #define XSCUGIC_CONTROL_OFFSET 0x00000000U /**< CPU Interface Control
382 #define XSCUGIC_CPU_PRIOR_OFFSET 0x00000004U /**< Priority Mask Reg */
383 #define XSCUGIC_BIN_PT_OFFSET 0x00000008U /**< Binary Point Register */
384 #define XSCUGIC_INT_ACK_OFFSET 0x0000000CU /**< Interrupt ACK Reg */
385 #define XSCUGIC_EOI_OFFSET 0x00000010U /**< End of Interrupt Reg */
386 #define XSCUGIC_RUN_PRIOR_OFFSET 0x00000014U /**< Running Priority Reg */
387 #define XSCUGIC_HI_PEND_OFFSET 0x00000018U /**< Highest Pending Interrupt
389 #define XSCUGIC_ALIAS_BIN_PT_OFFSET 0x0000001CU /**< Aliased non-Secure
390 Binary Point Register */
392 /**< 0x00000020 to 0x00000FBC are reserved and should not be read or written
397 /** @name Control Register
398 * CPU Interface Control register definitions
399 * All bits are defined here although some are not available in the non-secure
403 #define XSCUGIC_CNTR_SBPR_MASK 0x00000010U /**< Secure Binary Pointer,
404 0=separate registers,
405 1=both use bin_pt_s */
406 #define XSCUGIC_CNTR_FIQEN_MASK 0x00000008U /**< Use nFIQ_C for secure
409 1=Use FIQ for secure, IRQ for non*/
410 #define XSCUGIC_CNTR_ACKCTL_MASK 0x00000004U /**< Ack control for secure or non secure */
411 #define XSCUGIC_CNTR_EN_NS_MASK 0x00000002U /**< Non Secure enable */
412 #define XSCUGIC_CNTR_EN_S_MASK 0x00000001U /**< Secure enable, 0=Disabled, 1=Enabled */
415 /** @name Priority Mask Register
416 * Priority Mask register definitions
417 * The CPU interface does not send interrupt if the level of the interrupt is
418 * lower than the level of the register.
421 /*#define XSCUGIC_PRIORITY_MASK 0x000000FFU*/ /**< All interrupts */
424 /** @name Binary Point Register
425 * Binary Point register definitions
429 #define XSCUGIC_BIN_PT_MASK 0x00000007U /**< Binary point mask value
430 Value Secure Non-secure
442 /** @name Interrupt Acknowledge Register
443 * Interrupt Acknowledge register definitions
444 * Identifies the current Pending interrupt, and the CPU ID for software
447 #define XSCUGIC_ACK_INTID_MASK 0x000003FFU /**< Interrupt ID */
448 #define XSCUGIC_CPUID_MASK 0x00000C00U /**< CPU ID */
451 /** @name End of Interrupt Register
452 * End of Interrupt register definitions
453 * Allows the CPU to signal the GIC when it completes an interrupt service
456 #define XSCUGIC_EOI_INTID_MASK 0x000003FFU /**< Interrupt ID */
460 /** @name Running Priority Register
461 * Running Priority register definitions
462 * Identifies the interrupt priority level of the highest priority active
465 #define XSCUGIC_RUN_PRIORITY_MASK 0x000000FFU /**< Interrupt Priority */
469 * Highest Pending Interrupt register definitions
470 * Identifies the interrupt priority of the highest priority pending interupt
472 #define XSCUGIC_PEND_INTID_MASK 0x000003FFU /**< Pending Interrupt ID */
473 /*#define XSCUGIC_CPUID_MASK 0x00000C00U */ /**< CPU ID */
476 /***************** Macros (Inline Functions) Definitions *********************/
478 /****************************************************************************/
481 * Read the Interrupt Configuration Register offset for an interrupt id.
483 * @param InterruptID is the interrupt number.
485 * @return The 32-bit value of the offset
489 *****************************************************************************/
490 #define XSCUGIC_INT_CFG_OFFSET_CALC(InterruptID) \
491 ((u32)XSCUGIC_INT_CFG_OFFSET + (((InterruptID)/16U) * 4U))
493 /****************************************************************************/
496 * Read the Interrupt Priority Register offset for an interrupt id.
498 * @param InterruptID is the interrupt number.
500 * @return The 32-bit value of the offset
504 *****************************************************************************/
505 #define XSCUGIC_PRIORITY_OFFSET_CALC(InterruptID) \
506 ((u32)XSCUGIC_PRIORITY_OFFSET + (((InterruptID)/4U) * 4U))
508 /****************************************************************************/
511 * Read the SPI Target Register offset for an interrupt id.
513 * @param InterruptID is the interrupt number.
515 * @return The 32-bit value of the offset
519 *****************************************************************************/
520 #define XSCUGIC_SPI_TARGET_OFFSET_CALC(InterruptID) \
521 ((u32)XSCUGIC_SPI_TARGET_OFFSET + (((InterruptID)/4U) * 4U))
523 /****************************************************************************/
526 * Read the Interrupt Clear-Enable Register offset for an interrupt ID
528 * @param Register is the register offset for the clear/enable bank.
529 * @param InterruptID is the interrupt number.
531 * @return The 32-bit value of the offset
535 *****************************************************************************/
536 #define XSCUGIC_EN_DIS_OFFSET_CALC(Register, InterruptID) \
537 ((Register) + (((InterruptID)/32U) * 4U))
539 /****************************************************************************/
542 * Read the given Intc register.
544 * @param BaseAddress is the base address of the device.
545 * @param RegOffset is the register offset to be read
547 * @return The 32-bit value of the register
551 * u32 XScuGic_ReadReg(u32 BaseAddress, u32 RegOffset)
553 *****************************************************************************/
554 #define XScuGic_ReadReg(BaseAddress, RegOffset) \
555 (Xil_In32((BaseAddress) + (RegOffset)))
558 /****************************************************************************/
561 * Write the given Intc register.
563 * @param BaseAddress is the base address of the device.
564 * @param RegOffset is the register offset to be written
565 * @param Data is the 32-bit value to write to the register
571 * void XScuGic_WriteReg(u32 BaseAddress, u32 RegOffset, u32 Data)
573 *****************************************************************************/
574 #define XScuGic_WriteReg(BaseAddress, RegOffset, Data) \
575 (Xil_Out32(((BaseAddress) + (RegOffset)), ((u32)(Data))))
578 /****************************************************************************/
581 * Enable specific interrupt(s) in the interrupt controller.
583 * @param DistBaseAddress is the Distributor Register base address of the
585 * @param Int_Id is the ID of the interrupt source and should be in the
586 * range of 0 to XSCUGIC_MAX_NUM_INTR_INPUTS - 1
590 * @note C-style signature:
591 * void XScuGic_EnableIntr(u32 DistBaseAddress, u32 Int_Id)
593 *****************************************************************************/
594 #define XScuGic_EnableIntr(DistBaseAddress, Int_Id) \
595 XScuGic_WriteReg((DistBaseAddress), \
596 XSCUGIC_ENABLE_SET_OFFSET + (((Int_Id) / 32U) * 4U), \
597 (0x00000001U << ((Int_Id) % 32U)))
599 /****************************************************************************/
602 * Disable specific interrupt(s) in the interrupt controller.
604 * @param DistBaseAddress is the Distributor Register base address of the
606 * @param Int_Id is the ID of the interrupt source and should be in the
607 * range of 0 to XSCUGIC_MAX_NUM_INTR_INPUTS - 1
612 * @note C-style signature:
613 * void XScuGic_DisableIntr(u32 DistBaseAddress, u32 Int_Id)
615 *****************************************************************************/
616 #define XScuGic_DisableIntr(DistBaseAddress, Int_Id) \
617 XScuGic_WriteReg((DistBaseAddress), \
618 XSCUGIC_DISABLE_OFFSET + (((Int_Id) / 32U) * 4U), \
619 (0x00000001U << ((Int_Id) % 32U)))
622 /************************** Function Prototypes ******************************/
624 void XScuGic_DeviceInterruptHandler(void *DeviceId);
625 s32 XScuGic_DeviceInitialize(u32 DeviceId);
626 void XScuGic_RegisterHandler(u32 BaseAddress, s32 InterruptID,
627 Xil_InterruptHandler Handler, void *CallBackRef);
628 void XScuGic_SetPriTrigTypeByDistAddr(u32 DistBaseAddress, u32 Int_Id,
629 u8 Priority, u8 Trigger);
630 void XScuGic_GetPriTrigTypeByDistAddr(u32 DistBaseAddress, u32 Int_Id,
631 u8 *Priority, u8 *Trigger);
632 /************************** Variable Definitions *****************************/
637 #endif /* end of protection macro */