qemu/include/hw/nvram/nrf51_nvm.h
Eduardo Habkost db1015e92e Move QOM typedefs and add missing includes
Some typedefs and macros are defined after the type check macros.
This makes it difficult to automatically replace their
definitions with OBJECT_DECLARE_TYPE.

Patch generated using:

 $ ./scripts/codeconverter/converter.py -i \
   --pattern=QOMStructTypedefSplit $(git grep -l '' -- '*.[ch]')

which will split "typdef struct { ... } TypedefName"
declarations.

Followed by:

 $ ./scripts/codeconverter/converter.py -i --pattern=MoveSymbols \
    $(git grep -l '' -- '*.[ch]')

which will:
- move the typedefs and #defines above the type check macros
- add missing #include "qom/object.h" lines if necessary

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Message-Id: <20200831210740.126168-9-ehabkost@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Message-Id: <20200831210740.126168-10-ehabkost@redhat.com>
Message-Id: <20200831210740.126168-11-ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
2020-09-09 09:26:43 -04:00

66 lines
1.7 KiB
C

/*
* Nordic Semiconductor nRF51 non-volatile memory
*
* It provides an interface to erase regions in flash memory.
* Furthermore it provides the user and factory information registers.
*
* QEMU interface:
* + sysbus MMIO regions 0: NVMC peripheral registers
* + sysbus MMIO regions 1: FICR peripheral registers
* + sysbus MMIO regions 2: UICR peripheral registers
* + flash-size property: flash size in bytes.
*
* Accuracy of the peripheral model:
* + Code regions (MPU configuration) are disregarded.
*
* 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_NVM_H
#define NRF51_NVM_H
#include "hw/sysbus.h"
#include "qom/object.h"
#define TYPE_NRF51_NVM "nrf51_soc.nvm"
typedef struct NRF51NVMState NRF51NVMState;
#define NRF51_NVM(obj) OBJECT_CHECK(NRF51NVMState, (obj), TYPE_NRF51_NVM)
#define NRF51_UICR_FIXTURE_SIZE 64
#define NRF51_NVMC_SIZE 0x1000
#define NRF51_NVMC_READY 0x400
#define NRF51_NVMC_READY_READY 0x01
#define NRF51_NVMC_CONFIG 0x504
#define NRF51_NVMC_CONFIG_MASK 0x03
#define NRF51_NVMC_CONFIG_WEN 0x01
#define NRF51_NVMC_CONFIG_EEN 0x02
#define NRF51_NVMC_ERASEPCR1 0x508
#define NRF51_NVMC_ERASEPCR0 0x510
#define NRF51_NVMC_ERASEALL 0x50C
#define NRF51_NVMC_ERASEUICR 0x514
#define NRF51_NVMC_ERASE 0x01
#define NRF51_UICR_SIZE 0x100
struct NRF51NVMState {
SysBusDevice parent_obj;
MemoryRegion mmio;
MemoryRegion ficr;
MemoryRegion uicr;
MemoryRegion flash;
uint32_t uicr_content[NRF51_UICR_FIXTURE_SIZE];
uint32_t flash_size;
uint8_t *storage;
uint32_t config;
};
#endif