Skip to content

Commit

Permalink
plat-rz: Add pta for rsip.
Browse files Browse the repository at this point in the history
Signed-off-by: kousuke.suzuki <kousuke.suzuki.te@bp.renesas.com>
  • Loading branch information
kousuke.suzuki authored and takunoriotsuka committed Jun 20, 2024
1 parent b62c4b7 commit 4d91ea4
Show file tree
Hide file tree
Showing 23 changed files with 6,216 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
#include <r_rsip.h>
#include <r_rsip_addr.h>

#define RSIP_BASE (0x11850000)
#define RSIP_SIZE (0x00010000)

register_phys_mem_pgdir(MEM_AREA_IO_SEC, RSIP_BASE, RSIP_SIZE);

rsip_cfg_t rsip_cfg;
rsip_instance_ctrl_t rsip_instance_ctrl;

volatile uint32_t * gp_sce;

static TEE_Result RSIP_Init(void)
Expand All @@ -25,6 +25,13 @@ static TEE_Result RSIP_Init(void)

gp_sce = (uint32_t *) phys_to_virt_io(RSIP_BASE, RSIP_SIZE);

err = R_RSIP_Open(&rsip_instance_ctrl, &rsip_cfg);
if (FSP_SUCCESS != err)
{
EMSG("Failed to initialize RSIP (0x%08x).", err);
panic();
}

return TEE_SUCCESS;
}

Expand Down
5 changes: 4 additions & 1 deletion core/arch/arm/plat-rz/common/drivers/sub.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@ global-incdirs-y += .

srcs-$(CFG_RZ_SCIF) += scif.c

srcs-$(CFG_RZ_RSIP) += rsip.c

subdirs-$(CFG_RZ_XSPI) += xspi
subdirs-$(CFG_RZ_RSIP) += r_rsip

subdirs-$(CFG_RZ_RSIP) += r_rsip
64 changes: 64 additions & 0 deletions core/arch/arm/plat-rz/common/hw_rng_rsip.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// SPDX-License-Identifier: BSD-2-Clause
/*
* Copyright (c) 2024, Renesas Electronics
*/

#include <io.h>
#include <kernel/panic.h>
#include <mm/core_mmu.h>
#include <mm/core_memprot.h>
#include <rng_support.h>
#include <platform_config.h>
#include <trace.h>

#include <r_rsip.h>
#include <string.h>

extern rsip_instance_ctrl_t rsip_instance_ctrl;

#define LOCAL_BUFFER_SIZE (16)

static uint32_t buffer[LOCAL_BUFFER_SIZE / sizeof(uint32_t)];

static TEE_Result random_number_generator(uint32_t *rand, size_t size)
{
fsp_err_t err;

size_t n;
const size_t rand_sz = 4;

assert(0 == (size % rand_sz));

for (n = 0; n < size; n += rand_sz)
{
err = R_RSIP_RandomNumberGenerate(
&rsip_instance_ctrl,
(uint8_t * const)&rand[n]
);
switch (err)
{
case FSP_SUCCESS:
break;
default:
return TEE_ERROR_BUSY;
}
}

return TEE_SUCCESS;
}

TEE_Result hw_get_random_bytes(void *buf, size_t len)
{
TEE_Result ret = TEE_SUCCESS;

for(size_t i = 0; i < len; i += sizeof(buffer))
{
if (TEE_SUCCESS != (ret = random_number_generator(buffer, ARRAY_SIZE(buffer))))
{
return ret;
}
memcpy(buf + i, buffer, MIN(sizeof(buffer), len - i));
}

return ret;
}
Loading

0 comments on commit 4d91ea4

Please sign in to comment.