]> git.proxmox.com Git - mirror_qemu.git/blame - include/hw/nvram/nrf51_nvm.h
Move QOM typedefs and add missing includes
[mirror_qemu.git] / include / hw / nvram / nrf51_nvm.h
CommitLineData
c0d4eb83
SG
1/*
2 * Nordic Semiconductor nRF51 non-volatile memory
3 *
4 * It provides an interface to erase regions in flash memory.
5 * Furthermore it provides the user and factory information registers.
6 *
7 * QEMU interface:
8 * + sysbus MMIO regions 0: NVMC peripheral registers
9 * + sysbus MMIO regions 1: FICR peripheral registers
10 * + sysbus MMIO regions 2: UICR peripheral registers
11 * + flash-size property: flash size in bytes.
12 *
13 * Accuracy of the peripheral model:
14 * + Code regions (MPU configuration) are disregarded.
15 *
16 * Copyright 2018 Steffen Görtz <contrib@steffen-goertz.de>
17 *
18 * This code is licensed under the GPL version 2 or later. See
19 * the COPYING file in the top-level directory.
20 *
21 */
22#ifndef NRF51_NVM_H
23#define NRF51_NVM_H
24
25#include "hw/sysbus.h"
db1015e9 26#include "qom/object.h"
c0d4eb83 27#define TYPE_NRF51_NVM "nrf51_soc.nvm"
db1015e9 28typedef struct NRF51NVMState NRF51NVMState;
c0d4eb83
SG
29#define NRF51_NVM(obj) OBJECT_CHECK(NRF51NVMState, (obj), TYPE_NRF51_NVM)
30
31#define NRF51_UICR_FIXTURE_SIZE 64
32
33#define NRF51_NVMC_SIZE 0x1000
34
35#define NRF51_NVMC_READY 0x400
36#define NRF51_NVMC_READY_READY 0x01
37#define NRF51_NVMC_CONFIG 0x504
38#define NRF51_NVMC_CONFIG_MASK 0x03
39#define NRF51_NVMC_CONFIG_WEN 0x01
40#define NRF51_NVMC_CONFIG_EEN 0x02
41#define NRF51_NVMC_ERASEPCR1 0x508
42#define NRF51_NVMC_ERASEPCR0 0x510
43#define NRF51_NVMC_ERASEALL 0x50C
44#define NRF51_NVMC_ERASEUICR 0x514
45#define NRF51_NVMC_ERASE 0x01
46
47#define NRF51_UICR_SIZE 0x100
48
db1015e9 49struct NRF51NVMState {
c0d4eb83
SG
50 SysBusDevice parent_obj;
51
52 MemoryRegion mmio;
53 MemoryRegion ficr;
54 MemoryRegion uicr;
55 MemoryRegion flash;
56
57 uint32_t uicr_content[NRF51_UICR_FIXTURE_SIZE];
58 uint32_t flash_size;
59 uint8_t *storage;
60
61 uint32_t config;
62
db1015e9 63};
c0d4eb83
SG
64
65
66#endif