48 lines
1.0 KiB
C
48 lines
1.0 KiB
C
/*
|
|
* Copyright (c) 2022 Nordic Semiconductor ASA
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <soc_secure.h>
|
|
#include <errno.h>
|
|
|
|
#include "nrf.h"
|
|
|
|
#include "tfm_platform_api.h"
|
|
#include "tfm_ioctl_api.h"
|
|
|
|
#if NRF_GPIO_HAS_SEL
|
|
void soc_secure_gpio_pin_mcu_select(uint32_t pin_number, nrf_gpio_pin_sel_t mcu)
|
|
{
|
|
uint32_t result;
|
|
enum tfm_platform_err_t err;
|
|
|
|
err = tfm_platform_gpio_pin_mcu_select(pin_number, mcu, &result);
|
|
__ASSERT(err == TFM_PLATFORM_ERR_SUCCESS, "TFM platform error (%d)", err);
|
|
__ASSERT(result == 0, "GPIO service error (%d)", result);
|
|
}
|
|
#endif /* NRF_GPIO_HAS_SEL */
|
|
|
|
int soc_secure_mem_read(void *dst, void *src, size_t len)
|
|
{
|
|
enum tfm_platform_err_t status;
|
|
uint32_t result;
|
|
|
|
status = tfm_platform_mem_read(dst, (uintptr_t)src, len, &result);
|
|
|
|
switch (status) {
|
|
case TFM_PLATFORM_ERR_INVALID_PARAM:
|
|
return -EINVAL;
|
|
case TFM_PLATFORM_ERR_NOT_SUPPORTED:
|
|
return -ENOTSUP;
|
|
case TFM_PLATFORM_ERR_SUCCESS:
|
|
if (result == 0) {
|
|
return 0;
|
|
}
|
|
/* Fallthrough */
|
|
default:
|
|
return -EPERM;
|
|
}
|
|
}
|