| /* |
| * Nuvoton NPCM7xx General Purpose Input / Output (GPIO) |
| * |
| * Copyright 2020 Google LLC |
| * |
| * This program is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU General Public License |
| * version 2 as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| #ifndef NPCM7XX_GPIO_H |
| #define NPCM7XX_GPIO_H |
| |
| #include "exec/memory.h" |
| #include "hw/sysbus.h" |
| |
| /* Number of pins managed by each controller. */ |
| #define NPCM7XX_GPIO_NR_PINS (32) |
| |
| /* |
| * Number of registers in our device state structure. Don't change this without |
| * incrementing the version_id in the vmstate. |
| */ |
| #define NPCM7XX_GPIO_NR_REGS (0x80 / sizeof(uint32_t)) |
| |
| typedef struct NPCM7xxGPIOState { |
| SysBusDevice parent; |
| |
| /* Properties to be defined by the SoC */ |
| uint32_t reset_pu; |
| uint32_t reset_pd; |
| uint32_t reset_osrc; |
| uint32_t reset_odsc; |
| |
| MemoryRegion mmio; |
| |
| qemu_irq irq; |
| qemu_irq output[NPCM7XX_GPIO_NR_PINS]; |
| |
| uint32_t pin_level; |
| uint32_t ext_level; |
| uint32_t ext_driven; |
| |
| uint32_t regs[NPCM7XX_GPIO_NR_REGS]; |
| } NPCM7xxGPIOState; |
| |
| #define TYPE_NPCM7XX_GPIO "npcm7xx-gpio" |
| #define NPCM7XX_GPIO(obj) \ |
| OBJECT_CHECK(NPCM7xxGPIOState, (obj), TYPE_NPCM7XX_GPIO) |
| |
| #endif /* NPCM7XX_GPIO_H */ |