From b3389cf751a1254e274135cbed4797c41cdc0fac Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Sun, 4 Jul 2021 12:55:27 +0900 Subject: [PATCH] arch: cxd56x: Add support for power management debug output Add support for power management debug output. --- arch/arm/include/cxd56xx/pm.h | 3 +- arch/arm/src/cxd56xx/cxd56_clock.c | 82 +++++++++++--------- arch/arm/src/cxd56xx/cxd56_powermgr.c | 22 ++++-- arch/arm/src/cxd56xx/cxd56_powermgr_procfs.c | 52 +++++++------ 4 files changed, 92 insertions(+), 67 deletions(-) diff --git a/arch/arm/include/cxd56xx/pm.h b/arch/arm/include/cxd56xx/pm.h index fe3ab71699..40506dbbcb 100644 --- a/arch/arm/include/cxd56xx/pm.h +++ b/arch/arm/include/cxd56xx/pm.h @@ -25,6 +25,7 @@ * Included Files ****************************************************************************/ +#include #include /**************************************************************************** @@ -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 * diff --git a/arch/arm/src/cxd56xx/cxd56_clock.c b/arch/arm/src/cxd56xx/cxd56_clock.c index 491dea7049..7a05641f63 100644 --- a/arch/arm/src/cxd56xx/cxd56_clock.c +++ b/arch/arm/src/cxd56xx/cxd56_clock.c @@ -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 diff --git a/arch/arm/src/cxd56xx/cxd56_powermgr.c b/arch/arm/src/cxd56xx/cxd56_powermgr.c index c27d6a67a5..2c71c4a412 100644 --- a/arch/arm/src/cxd56xx/cxd56_powermgr.c +++ b/arch/arm/src/cxd56xx/cxd56_powermgr.c @@ -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); diff --git a/arch/arm/src/cxd56xx/cxd56_powermgr_procfs.c b/arch/arm/src/cxd56xx/cxd56_powermgr_procfs.c index 09bdc68023..6f5549a97e 100644 --- a/arch/arm/src/cxd56xx/cxd56_powermgr_procfs.c +++ b/arch/arm/src/cxd56xx/cxd56_powermgr_procfs.c @@ -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],