1*87855593SLaurent Vivier /* 2*87855593SLaurent Vivier * SPDX-License-Identifer: GPL-2.0-or-later 3*87855593SLaurent Vivier * 4*87855593SLaurent Vivier * Goldfish PIC 5*87855593SLaurent Vivier * 6*87855593SLaurent Vivier * (c) 2020 Laurent Vivier <laurent@vivier.eu> 7*87855593SLaurent Vivier * 8*87855593SLaurent Vivier */ 9*87855593SLaurent Vivier 10*87855593SLaurent Vivier #ifndef HW_INTC_GOLDFISH_PIC_H 11*87855593SLaurent Vivier #define HW_INTC_GOLDFISH_PIC_H 12*87855593SLaurent Vivier 13*87855593SLaurent Vivier #define TYPE_GOLDFISH_PIC "goldfish_pic" 14*87855593SLaurent Vivier OBJECT_DECLARE_SIMPLE_TYPE(GoldfishPICState, GOLDFISH_PIC) 15*87855593SLaurent Vivier 16*87855593SLaurent Vivier #define GOLDFISH_PIC_IRQ_NB 32 17*87855593SLaurent Vivier 18*87855593SLaurent Vivier struct GoldfishPICState { 19*87855593SLaurent Vivier SysBusDevice parent_obj; 20*87855593SLaurent Vivier 21*87855593SLaurent Vivier MemoryRegion iomem; 22*87855593SLaurent Vivier qemu_irq irq; 23*87855593SLaurent Vivier 24*87855593SLaurent Vivier uint32_t pending; 25*87855593SLaurent Vivier uint32_t enabled; 26*87855593SLaurent Vivier 27*87855593SLaurent Vivier /* statistics */ 28*87855593SLaurent Vivier uint64_t stats_irq_count[32]; 29*87855593SLaurent Vivier /* for tracing */ 30*87855593SLaurent Vivier uint8_t idx; 31*87855593SLaurent Vivier }; 32*87855593SLaurent Vivier 33*87855593SLaurent Vivier #endif 34