From d0d787c1b03c5396f169f34a3527661701c2d09f Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 Apr 2023 15:11:57 +0900 Subject: [PATCH] drivers: video: isx019: Fix system clock to HV mode ISX019 doesn't work if CONFIG_CPUFREQ_RELEASE_LOCK is enabled without this changes. Signed-off-by: Takumi Ando --- boards/arm/cxd56xx/common/src/cxd56_isx019.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/boards/arm/cxd56xx/common/src/cxd56_isx019.c b/boards/arm/cxd56xx/common/src/cxd56_isx019.c index b8aed7043a..e71a3bde03 100644 --- a/boards/arm/cxd56xx/common/src/cxd56_isx019.c +++ b/boards/arm/cxd56xx/common/src/cxd56_isx019.c @@ -38,6 +38,7 @@ #include "cxd56_clock.h" #include +#include /**************************************************************************** * Pre-processor Definitions @@ -54,6 +55,14 @@ #define POWER_CHECK_RETRY (10) +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static struct pm_cpu_freqlock_s g_hv_lock = + PM_CPUFREQLOCK_INIT(PM_CPUFREQLOCK_TAG('I', 'S', 0), + PM_CPUFREQLOCK_FLAG_HV); + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -134,6 +143,10 @@ struct i2c_master_s *board_isx019_initialize(void) _info("Initializing ISX019...\n"); + /* Fix system clock to HV mode */ + + up_pm_acquire_freqlock(&g_hv_lock); + while (!g_rtc_enabled && 0 < retry--) { /* ISX019 requires stable RTC */ @@ -171,6 +184,10 @@ int board_isx019_uninitialize(struct i2c_master_s *i2c) cxd56_gpio_write_hiz(PIN_IS_DATA0); cxd56_gpio_write_hiz(PIN_IS_DATA7); + /* Release system clock */ + + up_pm_release_freqlock(&g_hv_lock); + /* Uninitialize i2c device */ ret = isx019_uninitialize();