mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-27 23:35:10 +00:00

On i.MX8QM/i.MX8QX with system controller inside, the SRTC is managed by SCFW(system controller firmware) and some functions like setting SRTC's time etc. can ONLY be requested from secure world, so SIP runtime service is needed for such kind of operations, this patch adds SRTC SIP runtime service support for i.MX8QM and i.MX8QX. Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
44 lines
837 B
C
44 lines
837 B
C
/*
|
|
* Copyright 2019 NXP
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
#include <std_svc.h>
|
|
#include <platform_def.h>
|
|
#include <common/debug.h>
|
|
#include <common/runtime_svc.h>
|
|
#include <imx_sip_svc.h>
|
|
#include <sci/sci.h>
|
|
|
|
static int imx_srtc_set_time(uint32_t year_mon,
|
|
unsigned long day_hour,
|
|
unsigned long min_sec)
|
|
{
|
|
return sc_timer_set_rtc_time(ipc_handle,
|
|
year_mon >> 16, year_mon & 0xffff,
|
|
day_hour >> 16, day_hour & 0xffff,
|
|
min_sec >> 16, min_sec & 0xffff);
|
|
}
|
|
|
|
int imx_srtc_handler(uint32_t smc_fid,
|
|
void *handle,
|
|
u_register_t x1,
|
|
u_register_t x2,
|
|
u_register_t x3,
|
|
u_register_t x4)
|
|
{
|
|
int ret;
|
|
|
|
switch (x1) {
|
|
case IMX_SIP_SRTC_SET_TIME:
|
|
ret = imx_srtc_set_time(x2, x3, x4);
|
|
break;
|
|
default:
|
|
ret = SMC_UNK;
|
|
}
|
|
|
|
SMC_RET1(handle, ret);
|
|
}
|