blob: bf11872ab17218f2b26ce53e912a49be4c1787af [file] [log] [blame]
/*
* Copyright 2017 NXP
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef _SCFW_UTILS_H_
#define _SCFW_UTILS_H_
#include <common.h>
#include <asm/arch/sci/sci.h>
static int g_debug_scfw; /* set to one to turn on SCFW API tracing */
#define SC_PM_SET_CLOCK_PARENT(__ipcHndl__, __res__, __clk__, __parent__) \
do { \
char _res_str[] = #__res__;\
char _clk_str[] = #__clk__;\
sc_err_t _ret;\
if (g_debug_scfw) \
printf("(%4d) sc_pm_set_clock_parent %s:%s -> %d\n",\
__LINE__, _res_str, _clk_str, __parent__);\
_ret = sc_pm_set_clock_parent(__ipcHndl__,\
__res__, __clk__, __parent__);\
if (_ret != SC_ERR_NONE) \
printf("(%d)>> sc_pm_set_clock_parent failed! %s:%s -> %d (error = %d)\n",\
__LINE__, _res_str, _clk_str, __parent__, _ret);\
} while (0)
#define SC_PM_SET_CLOCK_RATE(__ipcHndl__, __res__, __clk__, __rate__) \
do { \
char _res_str[] = #__res__;\
char _clk_str[] = #__clk__;\
sc_err_t _ret;\
sc_pm_clock_rate_t _actual = __rate__;\
if (g_debug_scfw) \
printf("(%4d) sc_pm_set_clock_rate %s:%s -> %d\n",\
__LINE__, _res_str, _clk_str, __rate__);\
_ret = sc_pm_set_clock_rate(__ipcHndl__, __res__, __clk__, &_actual);\
if (_ret != SC_ERR_NONE)\
printf("(%4d)>> sc_pm_set_clock_rate failed! %s:%s -> %d (error = %d)\n",\
__LINE__, _res_str, _clk_str, __rate__, _ret);\
if (_actual != __rate__)\
printf("(%4d)>> Actual rate for %s:%s is %d instead of %d\n", \
__LINE__, _res_str, _clk_str, _actual, __rate__); \
} while (0)
#define SC_PM_CLOCK_ENABLE(__ipcHndl__, __res__, __clk__, __enable__) \
do { \
char _res_str[] = #__res__;\
char _clk_str[] = #__clk__;\
sc_err_t _ret;\
if (g_debug_scfw) \
printf("(%4d) sc_pm_clock_enable %s:%s -> %d\n",\
__LINE__, _res_str, _clk_str, __enable__);\
_ret = sc_pm_clock_enable(__ipcHndl__,\
__res__, __clk__, __enable__, false);\
if (_ret != SC_ERR_NONE)\
printf("(%4d)>> sc_pm_clock_enable failed! %s:%s -> %d (error = %d)\n",\
__LINE__, _res_str, _clk_str, __enable__, _ret);\
} while (0) \
#define SC_MISC_SET_CONTROL(__ipcHndl__, __res__, __clk__, __value__) \
do { \
char _res_str[] = #__res__; \
char _clk_str[] = #__clk__; \
sc_err_t _ret; \
if (g_debug_scfw) \
printf("(%4d) sc_misc_set_control %s:%s -> %d\n",\
__LINE__, _res_str, _clk_str, __value__);\
_ret = sc_misc_set_control(__ipcHndl__, \
__res__, __clk__, __value__); \
if (_ret != SC_ERR_NONE) \
printf("(%4d)>> sc_misc_set_control failed! %s:%s -> %d (error = %d)\n", \
__LINE__, _res_str, _clk_str, __value__, _ret); \
} while (0)
#define SC_PM_SET_RESOURCE_POWER_MODE(__ipcHndl__, __res__, __enable__) \
do { \
char _res_str[] = #__res__; \
sc_err_t _ret; \
if (g_debug_scfw) \
printf("(%4d) sc_pm_set_resource_power_mode %s -> %d\n",\
__LINE__, _res_str, __enable__);\
_ret = sc_pm_set_resource_power_mode(__ipcHndl__, __res__, __enable__);\
if (_ret != SC_ERR_NONE) \
printf("(%4d)>> sc_pm_set_resource_power_mode failed! %s -> %d (error = %d)\n", \
__LINE__, _res_str, __enable__, _ret);\
} while (0)
#define SC_MISC_AUTH(__ipcHndl__, __cmd__, __addr__) \
do { \
sc_err_t _ret; \
if (g_debug_scfw) \
printf("(%4d) sc_misc_seco_authenticate -> cmd %d addr %d\n",\
__LINE__, __cmd__, __addr__);\
_ret = sc_seco_authenticate(__ipcHndl__, __cmd__, __addr__); \
if (_ret != SC_ERR_NONE) \
printf("(%4d)>> sc_misc_seco_authenticate cmd %d addr %d (error = %d)\n", \
__LINE__, __cmd__, __addr__, _ret); \
} while (0)
#endif /*_SCFW_UTILS_H_ */