19d68bf56SSteffen Görtz /* 29d68bf56SSteffen Görtz * Microbit stub for Nordic Semiconductor nRF51 SoC Two-Wire Interface 39d68bf56SSteffen Görtz * http://infocenter.nordicsemi.com/pdf/nRF51_RM_v3.0.1.pdf 49d68bf56SSteffen Görtz * 59d68bf56SSteffen Görtz * Copyright 2019 Red Hat, Inc. 69d68bf56SSteffen Görtz * 79d68bf56SSteffen Görtz * This code is licensed under the GPL version 2 or later. See 89d68bf56SSteffen Görtz * the COPYING file in the top-level directory. 99d68bf56SSteffen Görtz */ 109d68bf56SSteffen Görtz 119d68bf56SSteffen Görtz #ifndef MICROBIT_I2C_H 129d68bf56SSteffen Görtz #define MICROBIT_I2C_H 139d68bf56SSteffen Görtz 149d68bf56SSteffen Görtz #include "hw/sysbus.h" 159d68bf56SSteffen Görtz #include "hw/arm/nrf51.h" 16db1015e9SEduardo Habkost #include "qom/object.h" 179d68bf56SSteffen Görtz 189d68bf56SSteffen Görtz #define NRF51_TWI_TASK_STARTRX 0x000 199d68bf56SSteffen Görtz #define NRF51_TWI_TASK_STARTTX 0x008 209d68bf56SSteffen Görtz #define NRF51_TWI_TASK_STOP 0x014 219d68bf56SSteffen Görtz #define NRF51_TWI_EVENT_STOPPED 0x104 229d68bf56SSteffen Görtz #define NRF51_TWI_EVENT_RXDREADY 0x108 239d68bf56SSteffen Görtz #define NRF51_TWI_EVENT_TXDSENT 0x11c 249d68bf56SSteffen Görtz #define NRF51_TWI_REG_ENABLE 0x500 259d68bf56SSteffen Görtz #define NRF51_TWI_REG_RXD 0x518 269d68bf56SSteffen Görtz #define NRF51_TWI_REG_TXD 0x51c 279d68bf56SSteffen Görtz #define NRF51_TWI_REG_ADDRESS 0x588 289d68bf56SSteffen Görtz 299d68bf56SSteffen Görtz #define TYPE_MICROBIT_I2C "microbit.i2c" 30*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(MicrobitI2CState, MICROBIT_I2C) 319d68bf56SSteffen Görtz 3254595a57SPhilippe Mathieu-Daudé #define MICROBIT_I2C_NREGS (NRF51_PERIPHERAL_SIZE / sizeof(uint32_t)) 339d68bf56SSteffen Görtz 34db1015e9SEduardo Habkost struct MicrobitI2CState { 359d68bf56SSteffen Görtz SysBusDevice parent_obj; 369d68bf56SSteffen Görtz 379d68bf56SSteffen Görtz MemoryRegion iomem; 389d68bf56SSteffen Görtz uint32_t regs[MICROBIT_I2C_NREGS]; 399d68bf56SSteffen Görtz uint32_t read_idx; 40db1015e9SEduardo Habkost }; 419d68bf56SSteffen Görtz 429d68bf56SSteffen Görtz #endif /* MICROBIT_I2C_H */ 43