xref: /openbmc/qemu/include/hw/intc/aspeed_vic.h (revision 4dad0a9aa818698e0735c8352bf7925a1660df6f)
10c69996eSAndrew Jeffery /*
20c69996eSAndrew Jeffery  * ASPEED Interrupt Controller (New)
30c69996eSAndrew Jeffery  *
40c69996eSAndrew Jeffery  * Andrew Jeffery <andrew@aj.id.au>
50c69996eSAndrew Jeffery  *
60c69996eSAndrew Jeffery  * Copyright 2016 IBM Corp.
70c69996eSAndrew Jeffery  *
80c69996eSAndrew Jeffery  * This code is licensed under the GPL version 2 or later.  See
90c69996eSAndrew Jeffery  * the COPYING file in the top-level directory.
100c69996eSAndrew Jeffery  *
110c69996eSAndrew Jeffery  * Need to add SVIC and CVIC support
120c69996eSAndrew Jeffery  */
130c69996eSAndrew Jeffery #ifndef ASPEED_VIC_H
140c69996eSAndrew Jeffery #define ASPEED_VIC_H
150c69996eSAndrew Jeffery 
160c69996eSAndrew Jeffery #include "hw/sysbus.h"
17db1015e9SEduardo Habkost #include "qom/object.h"
180c69996eSAndrew Jeffery 
190c69996eSAndrew Jeffery #define TYPE_ASPEED_VIC "aspeed.vic"
20*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(AspeedVICState, ASPEED_VIC)
210c69996eSAndrew Jeffery 
220c69996eSAndrew Jeffery #define ASPEED_VIC_NR_IRQS 51
230c69996eSAndrew Jeffery 
24db1015e9SEduardo Habkost struct AspeedVICState {
250c69996eSAndrew Jeffery     /*< private >*/
260c69996eSAndrew Jeffery     SysBusDevice parent_obj;
270c69996eSAndrew Jeffery 
280c69996eSAndrew Jeffery     /*< public >*/
290c69996eSAndrew Jeffery     MemoryRegion iomem;
300c69996eSAndrew Jeffery     qemu_irq irq;
310c69996eSAndrew Jeffery     qemu_irq fiq;
320c69996eSAndrew Jeffery 
330c69996eSAndrew Jeffery     uint64_t level;
340c69996eSAndrew Jeffery     uint64_t raw;
350c69996eSAndrew Jeffery     uint64_t select;
360c69996eSAndrew Jeffery     uint64_t enable;
370c69996eSAndrew Jeffery     uint64_t trigger;
380c69996eSAndrew Jeffery 
390c69996eSAndrew Jeffery     /* 0=edge, 1=level */
400c69996eSAndrew Jeffery     uint64_t sense;
410c69996eSAndrew Jeffery 
420c69996eSAndrew Jeffery     /* 0=single-edge, 1=dual-edge */
430c69996eSAndrew Jeffery     uint64_t dual_edge;
440c69996eSAndrew Jeffery 
450c69996eSAndrew Jeffery     /* 0=low-sensitive/falling-edge, 1=high-sensitive/rising-edge */
460c69996eSAndrew Jeffery     uint64_t event;
47db1015e9SEduardo Habkost };
480c69996eSAndrew Jeffery 
490c69996eSAndrew Jeffery #endif /* ASPEED_VIC_H */
50