134d0831fSPeter Maydell /* 234d0831fSPeter Maydell * "Universal" Interrupt Controller for PowerPPC 4xx embedded processors 334d0831fSPeter Maydell * 434d0831fSPeter Maydell * Copyright (c) 2007 Jocelyn Mayer 534d0831fSPeter Maydell * 634d0831fSPeter Maydell * Permission is hereby granted, free of charge, to any person obtaining a copy 734d0831fSPeter Maydell * of this software and associated documentation files (the "Software"), to deal 834d0831fSPeter Maydell * in the Software without restriction, including without limitation the rights 934d0831fSPeter Maydell * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1034d0831fSPeter Maydell * copies of the Software, and to permit persons to whom the Software is 1134d0831fSPeter Maydell * furnished to do so, subject to the following conditions: 1234d0831fSPeter Maydell * 1334d0831fSPeter Maydell * The above copyright notice and this permission notice shall be included in 1434d0831fSPeter Maydell * all copies or substantial portions of the Software. 1534d0831fSPeter Maydell * 1634d0831fSPeter Maydell * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1734d0831fSPeter Maydell * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1834d0831fSPeter Maydell * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1934d0831fSPeter Maydell * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2034d0831fSPeter Maydell * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2134d0831fSPeter Maydell * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 2234d0831fSPeter Maydell * THE SOFTWARE. 2334d0831fSPeter Maydell */ 2434d0831fSPeter Maydell 2534d0831fSPeter Maydell #ifndef HW_INTC_PPC_UIC_H 2634d0831fSPeter Maydell #define HW_INTC_PPC_UIC_H 2734d0831fSPeter Maydell 28*a55b2136SBALATON Zoltan #include "hw/ppc/ppc4xx.h" 2934d0831fSPeter Maydell 3034d0831fSPeter Maydell #define TYPE_PPC_UIC "ppc-uic" 3134d0831fSPeter Maydell OBJECT_DECLARE_SIMPLE_TYPE(PPCUIC, PPC_UIC) 3234d0831fSPeter Maydell 3334d0831fSPeter Maydell /* 3434d0831fSPeter Maydell * QEMU interface: 3534d0831fSPeter Maydell * QOM property "cpu": link to the PPC CPU 3634d0831fSPeter Maydell * (no default, must be set) 3734d0831fSPeter Maydell * QOM property "dcr-base": base of the bank of DCR registers for the UIC 3834d0831fSPeter Maydell * (default 0x30) 3934d0831fSPeter Maydell * QOM property "use-vectors": true if the UIC has vector registers 4034d0831fSPeter Maydell * (default true) 4134d0831fSPeter Maydell * unnamed GPIO inputs 0..UIC_MAX_IRQ: input IRQ lines 4234d0831fSPeter Maydell * sysbus IRQs: 4334d0831fSPeter Maydell * 0 (PPCUIC_OUTPUT_INT): output INT line to the CPU 4434d0831fSPeter Maydell * 1 (PPCUIC_OUTPUT_CINT): output CINT line to the CPU 4534d0831fSPeter Maydell */ 4634d0831fSPeter Maydell 4734d0831fSPeter Maydell #define UIC_MAX_IRQ 32 4834d0831fSPeter Maydell 49f7c4acf5SPeter Maydell /* Symbolic constants for the sysbus IRQ outputs */ 50f7c4acf5SPeter Maydell enum { 51f7c4acf5SPeter Maydell PPCUIC_OUTPUT_INT = 0, 52f7c4acf5SPeter Maydell PPCUIC_OUTPUT_CINT = 1, 53f7c4acf5SPeter Maydell PPCUIC_OUTPUT_NB, 54f7c4acf5SPeter Maydell }; 55f7c4acf5SPeter Maydell 5634d0831fSPeter Maydell struct PPCUIC { 5734d0831fSPeter Maydell /*< private >*/ 58*a55b2136SBALATON Zoltan Ppc4xxDcrDeviceState parent_obj; 5934d0831fSPeter Maydell 6034d0831fSPeter Maydell /*< public >*/ 6134d0831fSPeter Maydell qemu_irq output_int; 6234d0831fSPeter Maydell qemu_irq output_cint; 6334d0831fSPeter Maydell 6434d0831fSPeter Maydell /* properties */ 6534d0831fSPeter Maydell uint32_t dcr_base; 6634d0831fSPeter Maydell bool use_vectors; 6734d0831fSPeter Maydell 6834d0831fSPeter Maydell uint32_t level; /* Remembers the state of level-triggered interrupts. */ 6934d0831fSPeter Maydell uint32_t uicsr; /* Status register */ 7034d0831fSPeter Maydell uint32_t uicer; /* Enable register */ 7134d0831fSPeter Maydell uint32_t uiccr; /* Critical register */ 7234d0831fSPeter Maydell uint32_t uicpr; /* Polarity register */ 7334d0831fSPeter Maydell uint32_t uictr; /* Triggering register */ 7434d0831fSPeter Maydell uint32_t uicvcr; /* Vector configuration register */ 7534d0831fSPeter Maydell uint32_t uicvr; 7634d0831fSPeter Maydell }; 7734d0831fSPeter Maydell 7834d0831fSPeter Maydell #endif 79