mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-13 12:25:22 +00:00
This interrupt controller is a designware IP that combines several sources of interrupt into one line that is then routed to the parent controller. This implementation supports only the regular irqs with no support for priority filtering and vectored interrupts. Firqs are also not supported. Change-Id: I8bdf6f8df4632b6d7e8a3ba9a77116771d034a48 Signed-off-by: Rajavardhan Gundi <rajavardhan.gundi@intel.com> Signed-off-by: Anas Nashif <anas.nashif@intel.com>
95 lines
2.6 KiB
C
95 lines
2.6 KiB
C
/*
|
|
* Copyright (c) 2017 Intel Corporation.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef _DW_ICTL_H_
|
|
#define _DW_ICTL_H_
|
|
|
|
#include <zephyr/types.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef void (*dw_ictl_config_irq_t)(struct device *port);
|
|
|
|
struct dw_ictl_config {
|
|
u32_t irq_num;
|
|
u32_t numirqs;
|
|
u32_t isr_table_offset;
|
|
dw_ictl_config_irq_t config_func;
|
|
};
|
|
|
|
struct dw_ictl_runtime {
|
|
u32_t base_addr;
|
|
};
|
|
|
|
struct dw_ictl_registers {
|
|
u32_t irq_inten_l; /* offset 00 */
|
|
u32_t irq_inten_h; /* offset 04 */
|
|
u32_t irq_intmask_l; /* offset 08 */
|
|
u32_t irq_intmask_h; /* offset 0C */
|
|
u32_t irq_intforce_l; /* offset 10 */
|
|
u32_t irq_intforce_h; /* offset 14 */
|
|
u32_t irq_rawstatus_l; /* offset 18 */
|
|
u32_t irq_rawstatus_h; /* offset 1c */
|
|
u32_t irq_status_l; /* offset 20 */
|
|
u32_t irq_status_h; /* offset 24 */
|
|
u32_t irq_maskstatus_l; /* offset 28 */
|
|
u32_t irq_maskstatus_h; /* offset 2c */
|
|
u32_t irq_finalstatus_l; /* offset 30 */
|
|
u32_t irq_finalstatus_h; /* offset 34 */
|
|
u32_t irq_vector; /* offset 38 */
|
|
u32_t Reserved1; /* offset 3c */
|
|
u32_t irq_vector_0; /* offset 40 */
|
|
u32_t Reserved2; /* offset 44 */
|
|
u32_t irq_vector_1; /* offset 48 */
|
|
u32_t Reserved3; /* offset 4c */
|
|
u32_t irq_vector_2; /* offset 50 */
|
|
u32_t Reserved4; /* offset 54 */
|
|
u32_t irq_vector_3; /* offset 58 */
|
|
u32_t Reserved5; /* offset 5c */
|
|
u32_t irq_vector_4; /* offset 60 */
|
|
u32_t Reserved6; /* offset 64 */
|
|
u32_t irq_vector_5; /* offset 68 */
|
|
u32_t Reserved7; /* offset 6c */
|
|
u32_t irq_vector_6; /* offset 70 */
|
|
u32_t Reserved8; /* offset 74 */
|
|
u32_t irq_vector_7; /* offset 78 */
|
|
u32_t Reserved9; /* offset 7c */
|
|
u32_t irq_vector_8; /* offset 80 */
|
|
u32_t Reserved10; /* offset 84 */
|
|
u32_t irq_vector_9; /* offset 88 */
|
|
u32_t Reserved11; /* offset 8c */
|
|
u32_t irq_vector_10; /* offset 90 */
|
|
u32_t Reserved12; /* offset 94 */
|
|
u32_t irq_vector_11; /* offset 98 */
|
|
u32_t Reserved13; /* offset 9c */
|
|
u32_t irq_vector_12; /* offset a0 */
|
|
u32_t Reserved14; /* offset a4 */
|
|
u32_t irq_vector_13; /* offset a8 */
|
|
u32_t Reserved15; /* offset ac */
|
|
u32_t irq_vector_14; /* offset b0 */
|
|
u32_t Reserved16; /* offset b4 */
|
|
u32_t irq_vector_15; /* offset b8 */
|
|
u32_t Reserved17; /* offset bc */
|
|
u32_t fiq_inten; /* offset c0 */
|
|
u32_t fiq_intmask; /* offset c4 */
|
|
u32_t fiq_intforce; /* offset c8 */
|
|
u32_t fiq_rawstatus; /* offset cc */
|
|
u32_t fiq_status; /* offset d0 */
|
|
u32_t fiq_finalstatus; /* offset d4 */
|
|
u32_t irq_plevel; /* offset d8 */
|
|
u32_t Reserved18; /* offset dc */
|
|
u32_t APB_ICTL_COMP_VERSION; /* offset e0 */
|
|
u32_t Reserved19; /* offset e4 */
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _DW_ICTL_H_ */
|