/* * Copyright 2017 NXP * * SPDX-License-Identifier: GPL-2.0+ */ #ifndef _SCFW_UTILS_H_ #define _SCFW_UTILS_H_ #include #include 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) #endif /*_SCFW_UTILS_H_ */