/*
 * nRF51 System-on-Chip general purpose input/output register definition
 *
 * QEMU interface:
 * + sysbus MMIO regions 0: GPIO registers
 * + Unnamed GPIO inputs 0-31: Set tri-state input level for GPIO pin.
 *   Level -1: Externally Disconnected/Floating; Pull-up/down will be regarded
 *   Level 0: Input externally driven LOW
 *   Level 1: Input externally driven HIGH
 * + Unnamed GPIO outputs 0-31:
 *   Level -1: Disconnected/Floating
 *   Level 0: Driven LOW
 *   Level 1: Driven HIGH
 *
 * Accuracy of the peripheral model:
 * + The nRF51 GPIO output driver supports two modes, standard and high-current
 *   mode. These different drive modes are not modeled and handled the same.
 * + Pin SENSEing is not modeled/implemented.
 *
 * Copyright 2018 Steffen Görtz <contrib@steffen-goertz.de>
 *
 * This code is licensed under the GPL version 2 or later.  See
 * the COPYING file in the top-level directory.
 *
 */
#ifndef NRF51_GPIO_H
#define NRF51_GPIO_H

#include "hw/sysbus.h"
#include "qom/object.h"
#define TYPE_NRF51_GPIO "nrf51_soc.gpio"
OBJECT_DECLARE_SIMPLE_TYPE(NRF51GPIOState, NRF51_GPIO)

#define NRF51_GPIO_PINS 32

#define NRF51_GPIO_SIZE 0x1000

#define NRF51_GPIO_REG_OUT          0x504
#define NRF51_GPIO_REG_OUTSET       0x508
#define NRF51_GPIO_REG_OUTCLR       0x50C
#define NRF51_GPIO_REG_IN           0x510
#define NRF51_GPIO_REG_DIR          0x514
#define NRF51_GPIO_REG_DIRSET       0x518
#define NRF51_GPIO_REG_DIRCLR       0x51C
#define NRF51_GPIO_REG_CNF_START    0x700
#define NRF51_GPIO_REG_CNF_END      0x77C

#define NRF51_GPIO_PULLDOWN 1
#define NRF51_GPIO_PULLUP 3

struct NRF51GPIOState {
    SysBusDevice parent_obj;

    MemoryRegion mmio;
    qemu_irq irq;

    uint32_t out;
    uint32_t in;
    uint32_t in_mask;
    uint32_t dir;
    uint32_t cnf[NRF51_GPIO_PINS];

    uint32_t old_out;
    uint32_t old_out_connected;

    qemu_irq output[NRF51_GPIO_PINS];
    qemu_irq detect;
};


#endif
