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