29  mmio_region_write32(dma->
base_addr, DMA_SRC_ADDR_LO_REG_OFFSET,
 
   30                      transaction.source.address & UINT32_MAX);
 
   31  mmio_region_write32(dma->
base_addr, DMA_SRC_ADDR_HI_REG_OFFSET,
 
   32                      transaction.source.address >> (
sizeof(uint32_t) * 8));
 
   35  mmio_region_write32(dma->
base_addr, DMA_DST_ADDR_LO_REG_OFFSET,
 
   36                      transaction.destination.address & UINT32_MAX);
 
   38      dma->
base_addr, DMA_DST_ADDR_HI_REG_OFFSET,
 
   39      transaction.destination.address >> (
sizeof(uint32_t) * 8));
 
   43  reg = bitfield_bit32_write(reg, DMA_SRC_CONFIG_WRAP_BIT,
 
   44                             transaction.src_config.wrap);
 
   45  reg = bitfield_bit32_write(reg, DMA_SRC_CONFIG_INCREMENT_BIT,
 
   46                             transaction.src_config.increment);
 
   47  mmio_region_write32(dma->
base_addr, DMA_SRC_CONFIG_REG_OFFSET, reg);
 
   51  reg = bitfield_bit32_write(reg, DMA_DST_CONFIG_WRAP_BIT,
 
   52                             transaction.dst_config.wrap);
 
   53  reg = bitfield_bit32_write(reg, DMA_DST_CONFIG_INCREMENT_BIT,
 
   54                             transaction.dst_config.increment);
 
   55  mmio_region_write32(dma->
base_addr, DMA_DST_CONFIG_REG_OFFSET, reg);
 
   59  reg = bitfield_field32_write(reg, DMA_ADDR_SPACE_ID_SRC_ASID_FIELD,
 
   60                               transaction.source.asid);
 
   61  reg = bitfield_field32_write(reg, DMA_ADDR_SPACE_ID_DST_ASID_FIELD,
 
   62                               transaction.destination.asid);
 
   63  mmio_region_write32(dma->
base_addr, DMA_ADDR_SPACE_ID_REG_OFFSET, reg);
 
   66  mmio_region_write32(dma->
base_addr, DMA_CHUNK_DATA_SIZE_REG_OFFSET,
 
   67                      transaction.chunk_size);
 
   68  mmio_region_write32(dma->
base_addr, DMA_TOTAL_DATA_SIZE_REG_OFFSET,
 
   69                      transaction.total_size);
 
   70  mmio_region_write32(dma->
base_addr, DMA_TRANSFER_WIDTH_REG_OFFSET,
 
 
   81  uint32_t reg = mmio_region_read32(dma->
base_addr, DMA_CONTROL_REG_OFFSET);
 
   82  reg = bitfield_bit32_write(reg, DMA_CONTROL_HARDWARE_HANDSHAKE_ENABLE_BIT,
 
   84  mmio_region_write32(dma->
base_addr, DMA_CONTROL_REG_OFFSET, reg);
 
 
   93  uint32_t reg = mmio_region_read32(dma->
base_addr, DMA_CONTROL_REG_OFFSET);
 
   94  reg = bitfield_bit32_write(reg, DMA_CONTROL_HARDWARE_HANDSHAKE_ENABLE_BIT,
 
   96  mmio_region_write32(dma->
base_addr, DMA_CONTROL_REG_OFFSET, reg);
 
 
  101                           dif_dma_transaction_opcode_t opcode) {
 
  106  uint32_t reg = mmio_region_read32(dma->
base_addr, DMA_CONTROL_REG_OFFSET);
 
  107  reg = bitfield_field32_write(reg, DMA_CONTROL_OPCODE_FIELD, opcode);
 
  108  reg = bitfield_bit32_write(reg, DMA_CONTROL_GO_BIT, 1);
 
  109  reg = bitfield_bit32_write(reg, DMA_CONTROL_INITIAL_TRANSFER_BIT, 1);
 
  110  mmio_region_write32(dma->
base_addr, DMA_CONTROL_REG_OFFSET, reg);
 
 
  127  if (dma == NULL || size == 0) {
 
  131  mmio_region_write32(dma->
base_addr, DMA_ENABLED_MEMORY_RANGE_BASE_REG_OFFSET,
 
  134  uint32_t end_addr = address + size - 1;
 
  135  mmio_region_write32(dma->
base_addr, DMA_ENABLED_MEMORY_RANGE_LIMIT_REG_OFFSET,
 
  138  mmio_region_write32(dma->
base_addr, DMA_RANGE_VALID_REG_OFFSET, 1);
 
 
  265                                     dif_dma_transaction_opcode_t opcode,
 
  267  if (dma == NULL || digest == NULL) {
 
  274  for (
int i = 0; i < digest_len; ++i) {
 
  275    ptrdiff_t offset = DMA_SHA2_DIGEST_0_REG_OFFSET +
 
  276                       (ptrdiff_t)i * (ptrdiff_t)
sizeof(uint32_t);
 
  278    digest[i] = mmio_region_read32(dma->
base_addr, offset);