/** * meson_sm_call_read - retrieve data from secure-monitor * * @fw: Pointer to secure-monitor firmware * @buffer: Buffer to store the retrieved data * @bsize: Size of the buffer * @cmd_index: Index of the SMC32 function ID * @arg0: SMC32 Argument 0 * @arg1: SMC32 Argument 1 * @arg2: SMC32 Argument 2 * @arg3: SMC32 Argument 3 * @arg4: SMC32 Argument 4 * * Return: size of read data on success, a negative value on error * When 0 is returned there is no guarantee about the amount of * data read and bsize bytes are copied in buffer.
*/ int meson_sm_call_read(struct meson_sm_firmware *fw, void *buffer, unsignedint bsize, unsignedint cmd_index, u32 arg0,
u32 arg1, u32 arg2, u32 arg3, u32 arg4)
{
s32 size; int ret;
if (!fw->chip) return -ENOENT;
if (!fw->chip->cmd_shmem_out_base) return -EINVAL;
/* In some cases (for example GET_CHIP_ID command), * SMC doesn't return the number of bytes read, even * though the bytes were actually read into sm_shmem_out. * So this check is needed.
*/ if (!size)
size = bsize;
if (buffer)
memcpy(buffer, fw->sm_shmem_out_base, size);
return ret;
}
EXPORT_SYMBOL(meson_sm_call_read);
/** * meson_sm_call_write - send data to secure-monitor * * @fw: Pointer to secure-monitor firmware * @buffer: Buffer containing data to send * @size: Size of the data to send * @cmd_index: Index of the SMC32 function ID * @arg0: SMC32 Argument 0 * @arg1: SMC32 Argument 1 * @arg2: SMC32 Argument 2 * @arg3: SMC32 Argument 3 * @arg4: SMC32 Argument 4 * * Return: size of sent data on success, a negative value on error
*/ int meson_sm_call_write(struct meson_sm_firmware *fw, void *buffer, unsignedint size, unsignedint cmd_index, u32 arg0,
u32 arg1, u32 arg2, u32 arg3, u32 arg4)
{
s32 written;
/** * meson_sm_get - get pointer to meson_sm_firmware structure. * * @sm_node: Pointer to the secure-monitor Device Tree node. * * Return: NULL is the secure-monitor device is not ready.
*/ struct meson_sm_firmware *meson_sm_get(struct device_node *sm_node)
{ struct platform_device *pdev = of_find_device_by_node(sm_node); struct meson_sm_firmware *fw;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.