1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (C) 2016 Freescale Semiconductor, Inc. 3*91f16700Schasinglulu * Copyright 2017-2019 NXP 4*91f16700Schasinglulu * 5*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 6*91f16700Schasinglulu */ 7*91f16700Schasinglulu 8*91f16700Schasinglulu /*! 9*91f16700Schasinglulu * File containing client-side RPC functions for the TIMER service. These 10*91f16700Schasinglulu * functions are ported to clients that communicate to the SC. 11*91f16700Schasinglulu * 12*91f16700Schasinglulu * @addtogroup TIMER_SVC 13*91f16700Schasinglulu * @{ 14*91f16700Schasinglulu */ 15*91f16700Schasinglulu 16*91f16700Schasinglulu /* Includes */ 17*91f16700Schasinglulu 18*91f16700Schasinglulu #include <sci/sci_types.h> 19*91f16700Schasinglulu #include <sci/svc/rm/sci_rm_api.h> 20*91f16700Schasinglulu #include <sci/svc/timer/sci_timer_api.h> 21*91f16700Schasinglulu #include <sci/sci_rpc.h> 22*91f16700Schasinglulu #include <stdlib.h> 23*91f16700Schasinglulu #include "sci_timer_rpc.h" 24*91f16700Schasinglulu 25*91f16700Schasinglulu /* Local Defines */ 26*91f16700Schasinglulu 27*91f16700Schasinglulu /* Local Types */ 28*91f16700Schasinglulu 29*91f16700Schasinglulu /* Local Functions */ 30*91f16700Schasinglulu 31*91f16700Schasinglulu sc_err_t sc_timer_set_wdog_timeout(sc_ipc_t ipc, sc_timer_wdog_time_t timeout) 32*91f16700Schasinglulu { 33*91f16700Schasinglulu sc_rpc_msg_t msg; 34*91f16700Schasinglulu uint8_t result; 35*91f16700Schasinglulu 36*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 37*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 38*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_SET_WDOG_TIMEOUT; 39*91f16700Schasinglulu RPC_U32(&msg, 0U) = (uint32_t)timeout; 40*91f16700Schasinglulu RPC_SIZE(&msg) = 2U; 41*91f16700Schasinglulu 42*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 43*91f16700Schasinglulu 44*91f16700Schasinglulu result = RPC_R8(&msg); 45*91f16700Schasinglulu return (sc_err_t)result; 46*91f16700Schasinglulu } 47*91f16700Schasinglulu 48*91f16700Schasinglulu sc_err_t sc_timer_set_wdog_pre_timeout(sc_ipc_t ipc, 49*91f16700Schasinglulu sc_timer_wdog_time_t pre_timeout) 50*91f16700Schasinglulu { 51*91f16700Schasinglulu sc_rpc_msg_t msg; 52*91f16700Schasinglulu uint8_t result; 53*91f16700Schasinglulu 54*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 55*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 56*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_SET_WDOG_PRE_TIMEOUT; 57*91f16700Schasinglulu RPC_U32(&msg, 0U) = (uint32_t)pre_timeout; 58*91f16700Schasinglulu RPC_SIZE(&msg) = 2U; 59*91f16700Schasinglulu 60*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 61*91f16700Schasinglulu 62*91f16700Schasinglulu result = RPC_R8(&msg); 63*91f16700Schasinglulu return (sc_err_t)result; 64*91f16700Schasinglulu } 65*91f16700Schasinglulu 66*91f16700Schasinglulu sc_err_t sc_timer_start_wdog(sc_ipc_t ipc, sc_bool_t lock) 67*91f16700Schasinglulu { 68*91f16700Schasinglulu sc_rpc_msg_t msg; 69*91f16700Schasinglulu uint8_t result; 70*91f16700Schasinglulu 71*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 72*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 73*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_START_WDOG; 74*91f16700Schasinglulu RPC_U8(&msg, 0U) = (uint8_t)lock; 75*91f16700Schasinglulu RPC_SIZE(&msg) = 2U; 76*91f16700Schasinglulu 77*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 78*91f16700Schasinglulu 79*91f16700Schasinglulu result = RPC_R8(&msg); 80*91f16700Schasinglulu return (sc_err_t)result; 81*91f16700Schasinglulu } 82*91f16700Schasinglulu 83*91f16700Schasinglulu sc_err_t sc_timer_stop_wdog(sc_ipc_t ipc) 84*91f16700Schasinglulu { 85*91f16700Schasinglulu sc_rpc_msg_t msg; 86*91f16700Schasinglulu uint8_t result; 87*91f16700Schasinglulu 88*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 89*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 90*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_STOP_WDOG; 91*91f16700Schasinglulu RPC_SIZE(&msg) = 1U; 92*91f16700Schasinglulu 93*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 94*91f16700Schasinglulu 95*91f16700Schasinglulu result = RPC_R8(&msg); 96*91f16700Schasinglulu return (sc_err_t)result; 97*91f16700Schasinglulu } 98*91f16700Schasinglulu 99*91f16700Schasinglulu sc_err_t sc_timer_ping_wdog(sc_ipc_t ipc) 100*91f16700Schasinglulu { 101*91f16700Schasinglulu sc_rpc_msg_t msg; 102*91f16700Schasinglulu uint8_t result; 103*91f16700Schasinglulu 104*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 105*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 106*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_PING_WDOG; 107*91f16700Schasinglulu RPC_SIZE(&msg) = 1U; 108*91f16700Schasinglulu 109*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 110*91f16700Schasinglulu 111*91f16700Schasinglulu result = RPC_R8(&msg); 112*91f16700Schasinglulu return (sc_err_t)result; 113*91f16700Schasinglulu } 114*91f16700Schasinglulu 115*91f16700Schasinglulu sc_err_t sc_timer_get_wdog_status(sc_ipc_t ipc, 116*91f16700Schasinglulu sc_timer_wdog_time_t *timeout, 117*91f16700Schasinglulu sc_timer_wdog_time_t *max_timeout, 118*91f16700Schasinglulu sc_timer_wdog_time_t *remaining_time) 119*91f16700Schasinglulu { 120*91f16700Schasinglulu sc_rpc_msg_t msg; 121*91f16700Schasinglulu uint8_t result; 122*91f16700Schasinglulu 123*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 124*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 125*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_GET_WDOG_STATUS; 126*91f16700Schasinglulu RPC_SIZE(&msg) = 1U; 127*91f16700Schasinglulu 128*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 129*91f16700Schasinglulu 130*91f16700Schasinglulu if (timeout != NULL) 131*91f16700Schasinglulu *timeout = RPC_U32(&msg, 0U); 132*91f16700Schasinglulu 133*91f16700Schasinglulu if (max_timeout != NULL) 134*91f16700Schasinglulu *max_timeout = RPC_U32(&msg, 4U); 135*91f16700Schasinglulu 136*91f16700Schasinglulu if (remaining_time != NULL) 137*91f16700Schasinglulu *remaining_time = RPC_U32(&msg, 8U); 138*91f16700Schasinglulu 139*91f16700Schasinglulu result = RPC_R8(&msg); 140*91f16700Schasinglulu return (sc_err_t)result; 141*91f16700Schasinglulu } 142*91f16700Schasinglulu 143*91f16700Schasinglulu sc_err_t sc_timer_pt_get_wdog_status(sc_ipc_t ipc, sc_rm_pt_t pt, 144*91f16700Schasinglulu sc_bool_t *enb, 145*91f16700Schasinglulu sc_timer_wdog_time_t *timeout, 146*91f16700Schasinglulu sc_timer_wdog_time_t *remaining_time) 147*91f16700Schasinglulu { 148*91f16700Schasinglulu sc_rpc_msg_t msg; 149*91f16700Schasinglulu uint8_t result; 150*91f16700Schasinglulu 151*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 152*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 153*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_PT_GET_WDOG_STATUS; 154*91f16700Schasinglulu RPC_U8(&msg, 0U) = (uint8_t)pt; 155*91f16700Schasinglulu RPC_SIZE(&msg) = 2U; 156*91f16700Schasinglulu 157*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 158*91f16700Schasinglulu 159*91f16700Schasinglulu if (timeout != NULL) 160*91f16700Schasinglulu *timeout = RPC_U32(&msg, 0U); 161*91f16700Schasinglulu 162*91f16700Schasinglulu if (remaining_time != NULL) 163*91f16700Schasinglulu *remaining_time = RPC_U32(&msg, 4U); 164*91f16700Schasinglulu 165*91f16700Schasinglulu result = RPC_R8(&msg); 166*91f16700Schasinglulu if (enb != NULL) 167*91f16700Schasinglulu *enb = RPC_U8(&msg, 8U); 168*91f16700Schasinglulu 169*91f16700Schasinglulu return (sc_err_t)result; 170*91f16700Schasinglulu } 171*91f16700Schasinglulu 172*91f16700Schasinglulu sc_err_t sc_timer_set_wdog_action(sc_ipc_t ipc, 173*91f16700Schasinglulu sc_rm_pt_t pt, sc_timer_wdog_action_t action) 174*91f16700Schasinglulu { 175*91f16700Schasinglulu sc_rpc_msg_t msg; 176*91f16700Schasinglulu uint8_t result; 177*91f16700Schasinglulu 178*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 179*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 180*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_SET_WDOG_ACTION; 181*91f16700Schasinglulu RPC_U8(&msg, 0U) = (uint8_t)pt; 182*91f16700Schasinglulu RPC_U8(&msg, 1U) = (uint8_t)action; 183*91f16700Schasinglulu RPC_SIZE(&msg) = 2U; 184*91f16700Schasinglulu 185*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 186*91f16700Schasinglulu 187*91f16700Schasinglulu result = RPC_R8(&msg); 188*91f16700Schasinglulu return (sc_err_t)result; 189*91f16700Schasinglulu } 190*91f16700Schasinglulu 191*91f16700Schasinglulu sc_err_t sc_timer_set_rtc_time(sc_ipc_t ipc, uint16_t year, uint8_t mon, 192*91f16700Schasinglulu uint8_t day, uint8_t hour, uint8_t min, 193*91f16700Schasinglulu uint8_t sec) 194*91f16700Schasinglulu { 195*91f16700Schasinglulu sc_rpc_msg_t msg; 196*91f16700Schasinglulu uint8_t result; 197*91f16700Schasinglulu 198*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 199*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 200*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_SET_RTC_TIME; 201*91f16700Schasinglulu RPC_U16(&msg, 0U) = (uint16_t)year; 202*91f16700Schasinglulu RPC_U8(&msg, 2U) = (uint8_t)mon; 203*91f16700Schasinglulu RPC_U8(&msg, 3U) = (uint8_t)day; 204*91f16700Schasinglulu RPC_U8(&msg, 4U) = (uint8_t)hour; 205*91f16700Schasinglulu RPC_U8(&msg, 5U) = (uint8_t)min; 206*91f16700Schasinglulu RPC_U8(&msg, 6U) = (uint8_t)sec; 207*91f16700Schasinglulu RPC_SIZE(&msg) = 3U; 208*91f16700Schasinglulu 209*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 210*91f16700Schasinglulu 211*91f16700Schasinglulu result = RPC_R8(&msg); 212*91f16700Schasinglulu return (sc_err_t)result; 213*91f16700Schasinglulu } 214*91f16700Schasinglulu 215*91f16700Schasinglulu sc_err_t sc_timer_get_rtc_time(sc_ipc_t ipc, uint16_t *year, uint8_t *mon, 216*91f16700Schasinglulu uint8_t *day, uint8_t *hour, uint8_t *min, 217*91f16700Schasinglulu uint8_t *sec) 218*91f16700Schasinglulu { 219*91f16700Schasinglulu sc_rpc_msg_t msg; 220*91f16700Schasinglulu uint8_t result; 221*91f16700Schasinglulu 222*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 223*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 224*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_GET_RTC_TIME; 225*91f16700Schasinglulu RPC_SIZE(&msg) = 1U; 226*91f16700Schasinglulu 227*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 228*91f16700Schasinglulu 229*91f16700Schasinglulu if (year != NULL) 230*91f16700Schasinglulu *year = RPC_U16(&msg, 0U); 231*91f16700Schasinglulu 232*91f16700Schasinglulu result = RPC_R8(&msg); 233*91f16700Schasinglulu if (mon != NULL) 234*91f16700Schasinglulu *mon = RPC_U8(&msg, 2U); 235*91f16700Schasinglulu 236*91f16700Schasinglulu if (day != NULL) 237*91f16700Schasinglulu *day = RPC_U8(&msg, 3U); 238*91f16700Schasinglulu 239*91f16700Schasinglulu if (hour != NULL) 240*91f16700Schasinglulu *hour = RPC_U8(&msg, 4U); 241*91f16700Schasinglulu 242*91f16700Schasinglulu if (min != NULL) 243*91f16700Schasinglulu *min = RPC_U8(&msg, 5U); 244*91f16700Schasinglulu 245*91f16700Schasinglulu if (sec != NULL) 246*91f16700Schasinglulu *sec = RPC_U8(&msg, 6U); 247*91f16700Schasinglulu 248*91f16700Schasinglulu return (sc_err_t)result; 249*91f16700Schasinglulu } 250*91f16700Schasinglulu 251*91f16700Schasinglulu sc_err_t sc_timer_get_rtc_sec1970(sc_ipc_t ipc, uint32_t *sec) 252*91f16700Schasinglulu { 253*91f16700Schasinglulu sc_rpc_msg_t msg; 254*91f16700Schasinglulu uint8_t result; 255*91f16700Schasinglulu 256*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 257*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 258*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_GET_RTC_SEC1970; 259*91f16700Schasinglulu RPC_SIZE(&msg) = 1U; 260*91f16700Schasinglulu 261*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 262*91f16700Schasinglulu 263*91f16700Schasinglulu if (sec != NULL) 264*91f16700Schasinglulu *sec = RPC_U32(&msg, 0U); 265*91f16700Schasinglulu 266*91f16700Schasinglulu result = RPC_R8(&msg); 267*91f16700Schasinglulu return (sc_err_t)result; 268*91f16700Schasinglulu } 269*91f16700Schasinglulu 270*91f16700Schasinglulu sc_err_t sc_timer_set_rtc_alarm(sc_ipc_t ipc, uint16_t year, uint8_t mon, 271*91f16700Schasinglulu uint8_t day, uint8_t hour, uint8_t min, 272*91f16700Schasinglulu uint8_t sec) 273*91f16700Schasinglulu { 274*91f16700Schasinglulu sc_rpc_msg_t msg; 275*91f16700Schasinglulu uint8_t result; 276*91f16700Schasinglulu 277*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 278*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 279*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_SET_RTC_ALARM; 280*91f16700Schasinglulu RPC_U16(&msg, 0U) = (uint16_t)year; 281*91f16700Schasinglulu RPC_U8(&msg, 2U) = (uint8_t)mon; 282*91f16700Schasinglulu RPC_U8(&msg, 3U) = (uint8_t)day; 283*91f16700Schasinglulu RPC_U8(&msg, 4U) = (uint8_t)hour; 284*91f16700Schasinglulu RPC_U8(&msg, 5U) = (uint8_t)min; 285*91f16700Schasinglulu RPC_U8(&msg, 6U) = (uint8_t)sec; 286*91f16700Schasinglulu RPC_SIZE(&msg) = 3U; 287*91f16700Schasinglulu 288*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 289*91f16700Schasinglulu 290*91f16700Schasinglulu result = RPC_R8(&msg); 291*91f16700Schasinglulu return (sc_err_t)result; 292*91f16700Schasinglulu } 293*91f16700Schasinglulu 294*91f16700Schasinglulu sc_err_t sc_timer_set_rtc_periodic_alarm(sc_ipc_t ipc, uint32_t sec) 295*91f16700Schasinglulu { 296*91f16700Schasinglulu sc_rpc_msg_t msg; 297*91f16700Schasinglulu uint8_t result; 298*91f16700Schasinglulu 299*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 300*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 301*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_SET_RTC_PERIODIC_ALARM; 302*91f16700Schasinglulu RPC_U32(&msg, 0U) = (uint32_t)sec; 303*91f16700Schasinglulu RPC_SIZE(&msg) = 2U; 304*91f16700Schasinglulu 305*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 306*91f16700Schasinglulu 307*91f16700Schasinglulu result = RPC_R8(&msg); 308*91f16700Schasinglulu return (sc_err_t)result; 309*91f16700Schasinglulu } 310*91f16700Schasinglulu 311*91f16700Schasinglulu sc_err_t sc_timer_cancel_rtc_alarm(sc_ipc_t ipc) 312*91f16700Schasinglulu { 313*91f16700Schasinglulu sc_rpc_msg_t msg; 314*91f16700Schasinglulu uint8_t result; 315*91f16700Schasinglulu 316*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 317*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 318*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_CANCEL_RTC_ALARM; 319*91f16700Schasinglulu RPC_SIZE(&msg) = 1U; 320*91f16700Schasinglulu 321*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 322*91f16700Schasinglulu 323*91f16700Schasinglulu result = RPC_R8(&msg); 324*91f16700Schasinglulu return (sc_err_t)result; 325*91f16700Schasinglulu } 326*91f16700Schasinglulu 327*91f16700Schasinglulu sc_err_t sc_timer_set_rtc_calb(sc_ipc_t ipc, int8_t count) 328*91f16700Schasinglulu { 329*91f16700Schasinglulu sc_rpc_msg_t msg; 330*91f16700Schasinglulu uint8_t result; 331*91f16700Schasinglulu 332*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 333*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 334*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_SET_RTC_CALB; 335*91f16700Schasinglulu RPC_I8(&msg, 0U) = (int8_t) count; 336*91f16700Schasinglulu RPC_SIZE(&msg) = 2U; 337*91f16700Schasinglulu 338*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 339*91f16700Schasinglulu 340*91f16700Schasinglulu result = RPC_R8(&msg); 341*91f16700Schasinglulu return (sc_err_t)result; 342*91f16700Schasinglulu } 343*91f16700Schasinglulu 344*91f16700Schasinglulu sc_err_t sc_timer_set_sysctr_alarm(sc_ipc_t ipc, uint64_t ticks) 345*91f16700Schasinglulu { 346*91f16700Schasinglulu sc_rpc_msg_t msg; 347*91f16700Schasinglulu uint8_t result; 348*91f16700Schasinglulu 349*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 350*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 351*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_SET_SYSCTR_ALARM; 352*91f16700Schasinglulu RPC_U32(&msg, 0U) = (uint32_t)(ticks >> 32U); 353*91f16700Schasinglulu RPC_U32(&msg, 4U) = (uint32_t)ticks; 354*91f16700Schasinglulu RPC_SIZE(&msg) = 3U; 355*91f16700Schasinglulu 356*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 357*91f16700Schasinglulu 358*91f16700Schasinglulu result = RPC_R8(&msg); 359*91f16700Schasinglulu return (sc_err_t)result; 360*91f16700Schasinglulu } 361*91f16700Schasinglulu 362*91f16700Schasinglulu sc_err_t sc_timer_set_sysctr_periodic_alarm(sc_ipc_t ipc, uint64_t ticks) 363*91f16700Schasinglulu { 364*91f16700Schasinglulu sc_rpc_msg_t msg; 365*91f16700Schasinglulu uint8_t result; 366*91f16700Schasinglulu 367*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 368*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 369*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_SET_SYSCTR_PERIODIC_ALARM; 370*91f16700Schasinglulu RPC_U32(&msg, 0U) = (uint32_t)(ticks >> 32U); 371*91f16700Schasinglulu RPC_U32(&msg, 4U) = (uint32_t)ticks; 372*91f16700Schasinglulu RPC_SIZE(&msg) = 3U; 373*91f16700Schasinglulu 374*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 375*91f16700Schasinglulu 376*91f16700Schasinglulu result = RPC_R8(&msg); 377*91f16700Schasinglulu return (sc_err_t)result; 378*91f16700Schasinglulu } 379*91f16700Schasinglulu 380*91f16700Schasinglulu sc_err_t sc_timer_cancel_sysctr_alarm(sc_ipc_t ipc) 381*91f16700Schasinglulu { 382*91f16700Schasinglulu sc_rpc_msg_t msg; 383*91f16700Schasinglulu uint8_t result; 384*91f16700Schasinglulu 385*91f16700Schasinglulu RPC_VER(&msg) = SC_RPC_VERSION; 386*91f16700Schasinglulu RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_TIMER; 387*91f16700Schasinglulu RPC_FUNC(&msg) = (uint8_t)TIMER_FUNC_CANCEL_SYSCTR_ALARM; 388*91f16700Schasinglulu RPC_SIZE(&msg) = 1U; 389*91f16700Schasinglulu 390*91f16700Schasinglulu sc_call_rpc(ipc, &msg, SC_FALSE); 391*91f16700Schasinglulu 392*91f16700Schasinglulu result = RPC_R8(&msg); 393*91f16700Schasinglulu return (sc_err_t)result; 394*91f16700Schasinglulu } 395*91f16700Schasinglulu 396*91f16700Schasinglulu /**@}*/ 397