diff --git a/boards/arm/cxd56xx/common/src/cxd56_isx012.c b/boards/arm/cxd56xx/common/src/cxd56_isx012.c index 4178d960c98..697a8ef3803 100644 --- a/boards/arm/cxd56xx/common/src/cxd56_isx012.c +++ b/boards/arm/cxd56xx/common/src/cxd56_isx012.c @@ -37,6 +37,7 @@ #include "cxd56_i2c.h" #include +#include /**************************************************************************** * Pre-processor Definitions @@ -59,6 +60,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 ****************************************************************************/ @@ -163,6 +172,10 @@ struct i2c_master_s *board_isx012_initialize(void) { _info("Initializing ISX012...\n"); + /* Fix system clock to HV mode */ + + up_pm_acquire_freqlock(&g_hv_lock); + #ifdef IMAGER_ALERT cxd56_gpio_config(IMAGER_ALERT, true); #endif @@ -184,6 +197,10 @@ int board_isx012_uninitialize(struct i2c_master_s *i2c) _info("Uninitializing ISX012...\n"); + /* Release system clock */ + + up_pm_release_freqlock(&g_hv_lock); + /* Initialize i2c device */ ret = isx012_uninitialize();