qemu/include/hw/i2c/microbit_i2c.h
<<
>>
Prefs
   1/*
   2 * Microbit stub for Nordic Semiconductor nRF51 SoC Two-Wire Interface
   3 * http://infocenter.nordicsemi.com/pdf/nRF51_RM_v3.0.1.pdf
   4 *
   5 * Copyright 2019 Red Hat, Inc.
   6 *
   7 * This code is licensed under the GPL version 2 or later.  See
   8 * the COPYING file in the top-level directory.
   9 */
  10
  11#ifndef MICROBIT_I2C_H
  12#define MICROBIT_I2C_H
  13
  14#include "hw/sysbus.h"
  15#include "hw/arm/nrf51.h"
  16#include "qom/object.h"
  17
  18#define NRF51_TWI_TASK_STARTRX 0x000
  19#define NRF51_TWI_TASK_STARTTX 0x008
  20#define NRF51_TWI_TASK_STOP 0x014
  21#define NRF51_TWI_EVENT_STOPPED 0x104
  22#define NRF51_TWI_EVENT_RXDREADY 0x108
  23#define NRF51_TWI_EVENT_TXDSENT 0x11c
  24#define NRF51_TWI_REG_ENABLE 0x500
  25#define NRF51_TWI_REG_RXD 0x518
  26#define NRF51_TWI_REG_TXD 0x51c
  27#define NRF51_TWI_REG_ADDRESS 0x588
  28
  29#define TYPE_MICROBIT_I2C "microbit.i2c"
  30OBJECT_DECLARE_SIMPLE_TYPE(MicrobitI2CState, MICROBIT_I2C)
  31
  32#define MICROBIT_I2C_NREGS (NRF51_PERIPHERAL_SIZE / sizeof(uint32_t))
  33
  34struct MicrobitI2CState {
  35    SysBusDevice parent_obj;
  36
  37    MemoryRegion iomem;
  38    uint32_t regs[MICROBIT_I2C_NREGS];
  39    uint32_t read_idx;
  40};
  41
  42#endif /* MICROBIT_I2C_H */
  43