12#ifndef ZEPHYR_INCLUDE_NVMEM_H_
13#define ZEPHYR_INCLUDE_NVMEM_H_
96#define NVMEM_CELL_INIT(node_id) \
98 .dev = DEVICE_DT_GET(DT_MTD_FROM_NVMEM_CELL(node_id)), \
99 .offset = DT_REG_ADDR(node_id), \
100 .size = DT_REG_SIZE(node_id), \
101 .read_only = DT_PROP(node_id, read_only), \
155#define NVMEM_CELL_GET_BY_NAME(node_id, name) NVMEM_CELL_INIT(DT_NVMEM_CELL_BY_NAME(node_id, name))
169#define NVMEM_CELL_INST_GET_BY_NAME(inst, name) NVMEM_CELL_GET_BY_NAME(DT_DRV_INST(inst), name)
189#define NVMEM_CELL_GET_BY_NAME_OR(node_id, name, default_value) \
190 COND_CODE_1(DT_PROP_HAS_NAME(node_id, nvmem_cells, name), \
191 (NVMEM_CELL_GET_BY_NAME(node_id, name)), \
208#define NVMEM_CELL_INST_GET_BY_NAME_OR(inst, name, default_value) \
209 NVMEM_CELL_GET_BY_NAME_OR(DT_DRV_INST(inst), name, default_value)
261#define NVMEM_CELL_GET_BY_IDX(node_id, idx) NVMEM_CELL_INIT(DT_NVMEM_CELL_BY_IDX(node_id, idx))
274#define NVMEM_CELL_INST_GET_BY_IDX(inst, idx) NVMEM_CELL_GET_BY_IDX(DT_DRV_INST(inst), idx)
293#define NVMEM_CELL_GET_BY_IDX_OR(node_id, idx, default_value) \
294 COND_CODE_1(DT_PROP_HAS_IDX(node_id, nvmem_cells, idx), \
295 (NVMEM_CELL_GET_BY_IDX(node_id, idx)), \
311#define NVMEM_CELL_INST_GET_BY_IDX_OR(inst, idx, default_value) \
312 NVMEM_CELL_GET_BY_IDX_OR(DT_DRV_INST(inst), idx, default_value)
377 return cell->read_only;
irp nz macro MOVR cc s mov cc s endm endr irp aw macro LDR aa off
Definition asm-macro-32-bit-gnu.h:17
Public NVMEM devicetree header file.
bool device_is_ready(const struct device *dev)
Verify that a device is ready for use.
static int nvmem_cell_write_be48(const struct nvmem_cell *cell, uint64_t val, off_t off)
Write a big-endian 48-bit value to an NVMEM cell.
Definition nvmem.h:655
static int nvmem_cell_write_le32(const struct nvmem_cell *cell, uint32_t val, off_t off)
Write a little-endian 32-bit value to an NVMEM cell.
Definition nvmem.h:601
static int nvmem_cell_write_le48(const struct nvmem_cell *cell, uint64_t val, off_t off)
Write a little-endian 48-bit value to an NVMEM cell.
Definition nvmem.h:637
static int nvmem_cell_read_le32(const struct nvmem_cell *cell, uint32_t *val, off_t off)
Read a little-endian 32-bit value from an NVMEM cell.
Definition nvmem.h:433
static int nvmem_cell_read_le48(const struct nvmem_cell *cell, uint64_t *val, off_t off)
Read a little-endian 48-bit value from an NVMEM cell.
Definition nvmem.h:477
static int nvmem_cell_write_be16(const struct nvmem_cell *cell, uint16_t val, off_t off)
Write a big-endian 16-bit value to an NVMEM cell.
Definition nvmem.h:583
static int nvmem_cell_write_be64(const struct nvmem_cell *cell, uint64_t val, off_t off)
Write a big-endian 64-bit value to an NVMEM cell.
Definition nvmem.h:691
static int nvmem_cell_read_le16(const struct nvmem_cell *cell, uint16_t *val, off_t off)
Read a little-endian 16-bit value from an NVMEM cell.
Definition nvmem.h:389
static int nvmem_cell_write_le16(const struct nvmem_cell *cell, uint16_t val, off_t off)
Write a little-endian 16-bit value to an NVMEM cell.
Definition nvmem.h:565
int nvmem_cell_read(const struct nvmem_cell *cell, void *data, off_t off, size_t len)
Read data from an NVMEM cell.
static bool nvmem_cell_is_ready(const struct nvmem_cell *cell)
Check if an NVMEM cell is ready.
Definition nvmem.h:363
static int nvmem_cell_read_be16(const struct nvmem_cell *cell, uint16_t *val, off_t off)
Read a big-endian 16-bit value from an NVMEM cell.
Definition nvmem.h:411
static int nvmem_cell_write_be32(const struct nvmem_cell *cell, uint32_t val, off_t off)
Write a big-endian 32-bit value to an NVMEM cell.
Definition nvmem.h:619
static int nvmem_cell_read_be64(const struct nvmem_cell *cell, uint64_t *val, off_t off)
Read a big-endian 64-bit value from an NVMEM cell.
Definition nvmem.h:543
static int nvmem_cell_write_le64(const struct nvmem_cell *cell, uint64_t val, off_t off)
Write a little-endian 64-bit value to an NVMEM cell.
Definition nvmem.h:673
static bool nvmem_cell_is_read_only(const struct nvmem_cell *cell)
Check if an NVMEM cell is read-only.
Definition nvmem.h:375
static int nvmem_cell_read_be32(const struct nvmem_cell *cell, uint32_t *val, off_t off)
Read a big-endian 32-bit value from an NVMEM cell.
Definition nvmem.h:455
static int nvmem_cell_read_be48(const struct nvmem_cell *cell, uint64_t *val, off_t off)
Read a big-endian 48-bit value from an NVMEM cell.
Definition nvmem.h:499
int nvmem_cell_write(const struct nvmem_cell *cell, const void *data, off_t off, size_t len)
Write data to an NVMEM cell.
static int nvmem_cell_read_le64(const struct nvmem_cell *cell, uint64_t *val, off_t off)
Read a little-endian 64-bit value from an NVMEM cell.
Definition nvmem.h:521
#define NULL
Definition iar_missing_defs.h:20
__INTPTR_TYPE__ off_t
Definition types.h:36
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
void * data
Address of the device instance private data.
Definition device.h:523
Non-Volatile Memory cell representation.
Definition nvmem.h:37
static void sys_put_be32(uint32_t val, uint8_t dst[4])
Put a 32-bit integer as big-endian to arbitrary location.
Definition byteorder.h:353
static void sys_put_be64(uint64_t val, uint8_t dst[8])
Put a 64-bit integer as big-endian to arbitrary location.
Definition byteorder.h:397
static uint32_t sys_get_be32(const uint8_t src[4])
Get a 32-bit integer stored in big-endian format.
Definition byteorder.h:533
static uint16_t sys_get_le16(const uint8_t src[2])
Get a 16-bit integer stored in little-endian format.
Definition byteorder.h:593
static uint64_t sys_get_le48(const uint8_t src[6])
Get a 48-bit integer stored in little-endian format.
Definition byteorder.h:653
static uint64_t sys_get_le64(const uint8_t src[8])
Get a 64-bit integer stored in little-endian format.
Definition byteorder.h:668
static void sys_put_be16(uint16_t val, uint8_t dst[2])
Put a 16-bit integer as big-endian to arbitrary location.
Definition byteorder.h:323
static void sys_put_le64(uint64_t val, uint8_t dst[8])
Put a 64-bit integer as little-endian to arbitrary location.
Definition byteorder.h:487
static uint16_t sys_get_be16(const uint8_t src[2])
Get a 16-bit integer stored in big-endian format.
Definition byteorder.h:503
static void sys_put_le48(uint64_t val, uint8_t dst[6])
Put a 48-bit integer as little-endian to arbitrary location.
Definition byteorder.h:472
static uint32_t sys_get_le32(const uint8_t src[4])
Get a 32-bit integer stored in little-endian format.
Definition byteorder.h:623
static void sys_put_be48(uint64_t val, uint8_t dst[6])
Put a 48-bit integer as big-endian to arbitrary location.
Definition byteorder.h:382
static uint64_t sys_get_be48(const uint8_t src[6])
Get a 48-bit integer stored in big-endian format.
Definition byteorder.h:563
static uint64_t sys_get_be64(const uint8_t src[8])
Get a 64-bit integer stored in big-endian format.
Definition byteorder.h:578
static void sys_put_le16(uint16_t val, uint8_t dst[2])
Put a 16-bit integer as little-endian to arbitrary location.
Definition byteorder.h:412
static void sys_put_le32(uint32_t val, uint8_t dst[4])
Put a 32-bit integer as little-endian to arbitrary location.
Definition byteorder.h:442