arch: cxd56x: Add support for power management debug output

Add support for power management debug output.
This commit is contained in:
SPRESENSE 2021-07-04 12:55:27 +09:00 committed by Xiang Xiao
parent 7af6b394de
commit b3389cf751
4 changed files with 92 additions and 67 deletions

View File

@ -25,6 +25,7 @@
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <queue.h>
/****************************************************************************
@ -161,7 +162,7 @@ extern "C"
int up_pmramctrl(int cmd, uintptr_t addr, size_t size);
#ifdef CONFIG_DEBUG_PM
#ifdef CONFIG_CXD56_PM_DEBUG_INFO
/****************************************************************************
* Name: up_pmstatdump
*

View File

@ -45,14 +45,22 @@
* Pre-processor Definitions
****************************************************************************/
#ifdef CONFIG_DEBUG_PM
# define pmerr(fmt, ...) logerr(fmt, ## __VA_ARGS__)
# define pminfo(fmt, ...) loginfo(fmt, ## __VA_ARGS__)
# define pmdbg(fmt, ...) logdebug(fmt, ## __VA_ARGS__)
/* Debug */
#ifdef CONFIG_CXD56_PM_DEBUG_ERROR
# define pmerr(format, ...) _err(format, ##__VA_ARGS__)
#else
# define pmerr(fmt, ...)
# define pminfo(fmt, ...)
# define pmdbg(fmt, ...)
# define pmerr(x, ...)
#endif
#ifdef CONFIG_CXD56_PM_DEBUG_WARN
# define pmwarn(format, ...) _warn(format, ##__VA_ARGS__)
#else
# define pmwarn(x, ...)
#endif
#ifdef CONFIG_CXD56_PM_DEBUG_INFO
# define pminfo(format, ...) _info(format, ##__VA_ARGS__)
#else
# define pminfo(x, ...)
#endif
/* For enable_pwd, disable_pwd (digital domain) */
@ -2489,8 +2497,8 @@ int up_pmramctrl(int cmd, uintptr_t addr, size_t size)
endidx = TILEALIGNIDX(TILEALIGN(addr + size));
DEBUGASSERT(startidx < 12 && endidx <= 12);
pmdbg("%x (size: %x) [%d:%d] -> %d\n", addr, size,
startidx, endidx, cmd);
pminfo("%x (size: %x) [%d:%d] -> %d\n", addr, size,
startidx, endidx, cmd);
/* Make controls bits for RAM power control */
@ -2555,7 +2563,7 @@ int up_pmramctrl(int cmd, uintptr_t addr, size_t size)
return OK;
}
#ifdef CONFIG_DEBUG_PM
#ifdef CONFIG_CXD56_PM_DEBUG_INFO
/****************************************************************************
* Name: up_pmstatdump
*
@ -2574,34 +2582,34 @@ void up_pmstatdump(void)
stat0 = getreg32(CXD56_TOPREG_APPDSP_RAMMODE_STAT0);
stat1 = getreg32(CXD56_TOPREG_APPDSP_RAMMODE_STAT1);
pmdbg(" 0 1 2 3 4 5 6 7 8 9 A B\n");
pmdbg("DSP RAM stat: %c %c %c %c %c %c %c %c %c %c %c %c\n",
statch[(stat0 >> 0) & 3],
statch[(stat0 >> 2) & 3],
statch[(stat0 >> 4) & 3],
statch[(stat0 >> 6) & 3],
statch[(stat0 >> 8) & 3],
statch[(stat0 >> 10) & 3],
statch[(stat1 >> 0) & 3],
statch[(stat1 >> 2) & 3],
statch[(stat1 >> 4) & 3],
statch[(stat1 >> 6) & 3],
statch[(stat1 >> 8) & 3],
statch[(stat1 >> 10) & 3]);
pminfo(" 0 1 2 3 4 5 6 7 8 9 A B\n");
pminfo("DSP RAM stat: %c %c %c %c %c %c %c %c %c %c %c %c\n",
statch[(stat0 >> 0) & 3],
statch[(stat0 >> 2) & 3],
statch[(stat0 >> 4) & 3],
statch[(stat0 >> 6) & 3],
statch[(stat0 >> 8) & 3],
statch[(stat0 >> 10) & 3],
statch[(stat1 >> 0) & 3],
statch[(stat1 >> 2) & 3],
statch[(stat1 >> 4) & 3],
statch[(stat1 >> 6) & 3],
statch[(stat1 >> 8) & 3],
statch[(stat1 >> 10) & 3]);
stat0 = getreg32(CXD56_CRG_APP_TILE_CLK_GATING_ENB);
pmdbg("Clock gating: %c %c %c %c %c %c %c %c %c %c %c %c\n",
gatech[(stat0 >> 0) & 1],
gatech[(stat0 >> 1) & 1],
gatech[(stat0 >> 2) & 1],
gatech[(stat0 >> 3) & 1],
gatech[(stat0 >> 4) & 1],
gatech[(stat0 >> 5) & 1],
gatech[(stat0 >> 6) & 1],
gatech[(stat0 >> 7) & 1],
gatech[(stat0 >> 8) & 1],
gatech[(stat0 >> 9) & 1],
gatech[(stat0 >> 10) & 1],
gatech[(stat0 >> 11) & 1]);
pminfo("Clock gating: %c %c %c %c %c %c %c %c %c %c %c %c\n",
gatech[(stat0 >> 0) & 1],
gatech[(stat0 >> 1) & 1],
gatech[(stat0 >> 2) & 1],
gatech[(stat0 >> 3) & 1],
gatech[(stat0 >> 4) & 1],
gatech[(stat0 >> 5) & 1],
gatech[(stat0 >> 6) & 1],
gatech[(stat0 >> 7) & 1],
gatech[(stat0 >> 8) & 1],
gatech[(stat0 >> 9) & 1],
gatech[(stat0 >> 10) & 1],
gatech[(stat0 >> 11) & 1]);
}
#endif

View File

@ -84,14 +84,22 @@
#define PM_CPUFREQLOCK_FLAG_INITIALIZED (0x8000)
#ifdef CONFIG_CXD56_PM_DEBUG
# define pmerr(format, ...) _err(format, ##__VA_ARGS__)
# define pmwarn(format, ...) _warn(format, ##__VA_ARGS__)
# define pminfo(format, ...) _info(format, ##__VA_ARGS__)
/* Debug */
#ifdef CONFIG_CXD56_PM_DEBUG_ERROR
# define pmerr(format, ...) _err(format, ##__VA_ARGS__)
#else
# define pmerr(x...)
# define pmwarn(x...)
# define pminfo(x...)
# define pmerr(x, ...)
#endif
#ifdef CONFIG_CXD56_PM_DEBUG_WARN
# define pmwarn(format, ...) _warn(format, ##__VA_ARGS__)
#else
# define pmwarn(x, ...)
#endif
#ifdef CONFIG_CXD56_PM_DEBUG_INFO
# define pminfo(format, ...) _info(format, ##__VA_ARGS__)
#else
# define pminfo(x, ...)
#endif
void up_cpuctxload(void);

View File

@ -46,14 +46,22 @@
* Pre-processor Definitions
****************************************************************************/
#ifdef CONFIG_CXD56_PM_DEBUG
# define pmerr(format, ...) _err(format, ##__VA_ARGS__)
# define pmwarn(format, ...) _warn(format, ##__VA_ARGS__)
# define pminfo(format, ...) _info(format, ##__VA_ARGS__)
/* Debug */
#ifdef CONFIG_CXD56_PM_DEBUG_ERROR
# define pmerr(format, ...) _err(format, ##__VA_ARGS__)
#else
# define pmerr(x...)
# define pmwarn(x...)
# define pminfo(x...)
# define pmerr(x, ...)
#endif
#ifdef CONFIG_CXD56_PM_DEBUG_WARN
# define pmwarn(format, ...) _warn(format, ##__VA_ARGS__)
#else
# define pmwarn(x, ...)
#endif
#ifdef CONFIG_CXD56_PM_DEBUG_INFO
# define pminfo(format, ...) _info(format, ##__VA_ARGS__)
#else
# define pminfo(x, ...)
#endif
#define PWD_STAT(val, shift) ((val >> shift) & 0x1)
@ -280,21 +288,21 @@ static void cxd56_powermgr_procfs_clock(void)
len = snprintf(g_powermg_procfs_buffer + g_powermg_procfs_len,
g_powermg_procfs_size - g_powermg_procfs_len,
"Clock Status [Hz]\n"
" |-RTC : %9d"" |-APP : %9d\n"
" |-RCOSC : %9d"" ||-DSP0 : %9d\n"
" |-XOSC : %9d"" ||-DSP1 : %9d\n"
" |-SYSPLL : %9d"" ||-DSP2 : %9d\n"
" |-M0P : %9d"" ||-DSP3 : %9d\n"
" ||-AHB : %9d"" ||-DSP4 : %9d\n"
" | |-APB : %9d"" ||-DSP5 : %9d\n"
" |-UART1 : %9d"" ||-UART2 : %9d\n"
" |-SFC : %9d"" ||-SPI4 : %9d\n"
" |-SCU : %9d"" ||-SPI5 : %9d\n"
" ||-LPADC : %9d"" ||-USB : %9d\n"
" ||-HPADC : %9d"" ||-EMMC : %9d\n"
" |-I2C4 : %9d"" ||-SDIO : %9d\n"
" |-GPS : %9d"" ||-VSYNC : %9d\n"
" ||-AHB : %9d\n",
" |-RTC : %9ld"" |-APP : %9ld\n"
" |-RCOSC : %9ld"" ||-DSP0 : %9ld\n"
" |-XOSC : %9ld"" ||-DSP1 : %9ld\n"
" |-SYSPLL : %9ld"" ||-DSP2 : %9ld\n"
" |-M0P : %9ld"" ||-DSP3 : %9ld\n"
" ||-AHB : %9ld"" ||-DSP4 : %9ld\n"
" | |-APB : %9ld"" ||-DSP5 : %9ld\n"
" |-UART1 : %9ld"" ||-UART2 : %9ld\n"
" |-SFC : %9ld"" ||-SPI4 : %9ld\n"
" |-SCU : %9ld"" ||-SPI5 : %9ld\n"
" ||-LPADC : %9ld"" ||-USB : %9ld\n"
" ||-HPADC : %9ld"" ||-EMMC : %9ld\n"
" |-I2C4 : %9ld"" ||-SDIO : %9ld\n"
" |-GPS : %9ld"" ||-VSYNC : %9ld\n"
" ||-AHB : %9ld\n",
cxd56_get_rtc_clock(), cxd56_get_appsmp_baseclock(),
cxd56_get_rcosc_clock(), dsptabl[0],
cxd56_get_xosc_clock(), dsptabl[1],