]>
Commit | Line | Data |
---|---|---|
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 | 28 | typedef 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 | 49 | struct 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 |