blob: b5ef76a94c59d0a810d4203c6b73724bf4b87998 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
#include "sw/device/lib/ibex_peri.h"
#include "sw/device/lib/base/mmio.h"
#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"
#include "rv_core_ibex_regs.h"
void init_translation(uint32_t src_addr, uint32_t size, uint32_t dst_addr) {
mmio_region_t ibex_base =
mmio_region_from_addr(TOP_EARLGREY_RV_CORE_IBEX_CFG_BASE_ADDR);
uint32_t mask = src_addr | ((size - 1) >> 1);
mmio_region_write32(ibex_base, RV_CORE_IBEX_IBUS_ADDR_MATCHING_0_REG_OFFSET,
mask);
mmio_region_write32(ibex_base, RV_CORE_IBEX_DBUS_ADDR_MATCHING_0_REG_OFFSET,
mask);
mmio_region_write32(ibex_base, RV_CORE_IBEX_IBUS_REMAP_ADDR_0_REG_OFFSET,
dst_addr);
mmio_region_write32(ibex_base, RV_CORE_IBEX_DBUS_REMAP_ADDR_0_REG_OFFSET,
dst_addr);
mmio_region_write32(ibex_base, RV_CORE_IBEX_IBUS_ADDR_EN_0_REG_OFFSET, 1);
mmio_region_write32(ibex_base, RV_CORE_IBEX_DBUS_ADDR_EN_0_REG_OFFSET, 1);
}