blob: 27ccc0c698f81a76b2193bf869dfd8436932a0b5 [file] [log] [blame]
// SPDX-License-Identifier: BSD-2-Clause
/*
* Copyright (C) 2017, Fuzhou Rockchip Electronics Co., Ltd.
* Copyright (C) 2019, Theobroma Systems Design und Consulting GmbH
*/
#include <common.h>
#include <io.h>
#include <mm/core_memprot.h>
#include <platform.h>
#include <platform_config.h>
register_phys_mem_pgdir(MEM_AREA_IO_SEC, SGRF_BASE, SGRF_SIZE);
register_phys_mem_pgdir(MEM_AREA_IO_SEC, DDRSGRF_BASE, DDRSGRF_SIZE);
#define SGRF_SOC_CON(n) ((n) * 4)
#define DDR_SGRF_DDR_CON(n) ((n) * 4)
#define DDR_RGN0_NS BIT32(30)
#define SLAVE_ALL_NS GENMASK_32(31, 16)
int platform_secure_init(void)
{
vaddr_t sgrf_base = (vaddr_t)phys_to_virt_io(SGRF_BASE);
vaddr_t ddrsgrf_base = (vaddr_t)phys_to_virt_io(DDRSGRF_BASE);
/* Set rgn0 non-secure */
io_write32(ddrsgrf_base + DDR_SGRF_DDR_CON(0), DDR_RGN0_NS);
/* Initialize all slave non-secure */
io_write32(sgrf_base + SGRF_SOC_CON(7), SLAVE_ALL_NS);
io_write32(sgrf_base + SGRF_SOC_CON(8), SLAVE_ALL_NS);
io_write32(sgrf_base + SGRF_SOC_CON(9), SLAVE_ALL_NS);
io_write32(sgrf_base + SGRF_SOC_CON(10), SLAVE_ALL_NS);
return 0;
}