mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-10 06:43:28 +09:00
![Tom Rini](/assets/img/avatar_default.png)
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
57 lines
1.1 KiB
C
57 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* (C) Copyright 2016 Beniamino Galvani <b.galvani@gmail.com>
|
|
*
|
|
* Secure monitor calls.
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <asm/arch/gxbb.h>
|
|
#include <linux/kernel.h>
|
|
|
|
#define FN_GET_SHARE_MEM_INPUT_BASE 0x82000020
|
|
#define FN_GET_SHARE_MEM_OUTPUT_BASE 0x82000021
|
|
#define FN_EFUSE_READ 0x82000030
|
|
#define FN_EFUSE_WRITE 0x82000031
|
|
|
|
static void *shmem_input;
|
|
static void *shmem_output;
|
|
|
|
static void meson_init_shmem(void)
|
|
{
|
|
struct pt_regs regs;
|
|
|
|
if (shmem_input && shmem_output)
|
|
return;
|
|
|
|
regs.regs[0] = FN_GET_SHARE_MEM_INPUT_BASE;
|
|
smc_call(®s);
|
|
shmem_input = (void *)regs.regs[0];
|
|
|
|
regs.regs[0] = FN_GET_SHARE_MEM_OUTPUT_BASE;
|
|
smc_call(®s);
|
|
shmem_output = (void *)regs.regs[0];
|
|
|
|
debug("Secure Monitor shmem: 0x%p 0x%p\n", shmem_input, shmem_output);
|
|
}
|
|
|
|
ssize_t meson_sm_read_efuse(uintptr_t offset, void *buffer, size_t size)
|
|
{
|
|
struct pt_regs regs;
|
|
|
|
meson_init_shmem();
|
|
|
|
regs.regs[0] = FN_EFUSE_READ;
|
|
regs.regs[1] = offset;
|
|
regs.regs[2] = size;
|
|
|
|
smc_call(®s);
|
|
|
|
if (regs.regs[0] == 0)
|
|
return -1;
|
|
|
|
memcpy(buffer, shmem_output, min(size, regs.regs[0]));
|
|
|
|
return regs.regs[0];
|
|
}
|