/*
 * 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_ */
