Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Device memory-mapped IO management

Modules

 Named MMIO region macros
 For drivers which need to manage multiple MMIO regions, which will be referenced by name.
 
 Single MMIO region macros
 For drivers which need to manage just one MMIO region, the most common case.
 
 Top-level MMIO region macros
 For drivers which do not use Zephyr's driver model and do not associate struct device with a driver instance.
 

Macros

#define DEVICE_MMIO_IS_IN_RAM
 

Functions

static __boot_func void device_map (mm_reg_t *virt_addr, uintptr_t phys_addr, size_t size, uint32_t flags)
 Set linear address for device MMIO access.
 

Detailed Description

Macro Definition Documentation

◆ DEVICE_MMIO_IS_IN_RAM

#define DEVICE_MMIO_IS_IN_RAM

Function Documentation

◆ device_map()

static __boot_func void device_map ( mm_reg_t virt_addr,
uintptr_t  phys_addr,
size_t  size,
uint32_t  flags 
)
inlinestatic

#include <zephyr/sys/device_mmio.h>

Set linear address for device MMIO access.

This function sets the virt_addr parameter to the correct linear address for the MMIO region.

If the MMU is enabled, mappings may be created in the page tables.

Normally, only a caching mode needs to be set for the 'flags' parameter. The mapped linear address will have read-write access to supervisor mode.

See also
k_map()
Parameters
virt_addr[out] Output linear address storage location, most users will want some DEVICE_MMIO_RAM_PTR() value
phys_addrPhysical address base of the MMIO region
sizeSize of the MMIO region
flagsCaching mode and access flags, see K_MEM_CACHE_* and K_MEM_PERM_* macros