1*025514baSAnson Huang /* 2*025514baSAnson Huang * Copyright 2019 NXP 3*025514baSAnson Huang * 4*025514baSAnson Huang * SPDX-License-Identifier: BSD-3-Clause 5*025514baSAnson Huang */ 6*025514baSAnson Huang 7*025514baSAnson Huang #include <stdlib.h> 8*025514baSAnson Huang #include <stdint.h> 9*025514baSAnson Huang #include <std_svc.h> 10*025514baSAnson Huang #include <platform_def.h> 11*025514baSAnson Huang #include <common/debug.h> 12*025514baSAnson Huang #include <common/runtime_svc.h> 13*025514baSAnson Huang #include <imx_sip_svc.h> 14*025514baSAnson Huang #include <sci/sci.h> 15*025514baSAnson Huang 16*025514baSAnson Huang static int imx_srtc_set_time(uint32_t year_mon, 17*025514baSAnson Huang unsigned long day_hour, 18*025514baSAnson Huang unsigned long min_sec) 19*025514baSAnson Huang { 20*025514baSAnson Huang return sc_timer_set_rtc_time(ipc_handle, 21*025514baSAnson Huang year_mon >> 16, year_mon & 0xffff, 22*025514baSAnson Huang day_hour >> 16, day_hour & 0xffff, 23*025514baSAnson Huang min_sec >> 16, min_sec & 0xffff); 24*025514baSAnson Huang } 25*025514baSAnson Huang 26*025514baSAnson Huang int imx_srtc_handler(uint32_t smc_fid, 27*025514baSAnson Huang void *handle, 28*025514baSAnson Huang u_register_t x1, 29*025514baSAnson Huang u_register_t x2, 30*025514baSAnson Huang u_register_t x3, 31*025514baSAnson Huang u_register_t x4) 32*025514baSAnson Huang { 33*025514baSAnson Huang int ret; 34*025514baSAnson Huang 35*025514baSAnson Huang switch (x1) { 36*025514baSAnson Huang case IMX_SIP_SRTC_SET_TIME: 37*025514baSAnson Huang ret = imx_srtc_set_time(x2, x3, x4); 38*025514baSAnson Huang break; 39*025514baSAnson Huang default: 40*025514baSAnson Huang ret = SMC_UNK; 41*025514baSAnson Huang } 42*025514baSAnson Huang 43*025514baSAnson Huang SMC_RET1(handle, ret); 44*025514baSAnson Huang } 45