From 699582a25e07d33e84f187ebd6ecad37b73b6e7f Mon Sep 17 00:00:00 2001 From: Magdalena Pastula Date: Wed, 5 Feb 2025 14:45:36 +0100 Subject: [PATCH] drivers: mspi: add checking device frequency Add checking if desired transmission frequency is possible to set. Signed-off-by: Magdalena Pastula --- drivers/mspi/mspi_nrfe.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/mspi/mspi_nrfe.c b/drivers/mspi/mspi_nrfe.c index 51bb03ef8b87..9c77c7603bac 100644 --- a/drivers/mspi/mspi_nrfe.c +++ b/drivers/mspi/mspi_nrfe.c @@ -28,8 +28,7 @@ LOG_MODULE_REGISTER(mspi_nrfe, CONFIG_MSPI_LOG_LEVEL); #define SDP_MPSI_PINCTRL_DEV_CONFIG_INIT(node_id) \ { \ - .reg = PINCTRL_REG_NONE, \ - .states = Z_PINCTRL_STATES_NAME(node_id), \ + .reg = PINCTRL_REG_NONE, .states = Z_PINCTRL_STATES_NAME(node_id), \ .state_cnt = ARRAY_SIZE(Z_PINCTRL_STATES_NAME(node_id)), \ } @@ -60,8 +59,7 @@ static atomic_t ipc_atomic_sem = ATOMIC_INIT(0); .duplex = DT_PROP_OR(MSPI_NRFE_NODE, duplex, MSPI_FULL_DUPLEX), \ .dqs_support = DT_PROP_OR(MSPI_NRFE_NODE, dqs_support, false), \ .num_periph = DT_CHILD_NUM(MSPI_NRFE_NODE), \ - .max_freq = DT_PROP(MSPI_NRFE_NODE, clock_frequency), \ - .re_init = true, \ + .max_freq = DT_PROP(MSPI_NRFE_NODE, clock_frequency), .re_init = true, \ .sw_multi_periph = false, \ } @@ -408,6 +406,13 @@ static int api_dev_config(const struct device *dev, const struct mspi_dev_id *de drv_cfg->mspicfg.max_freq); return -EINVAL; } + + if (SystemCoreClock % (cfg->freq * 2) != 0) { + LOG_ERR("Invalid frequency: %u. Only divisors of (CPU_FREQ / 2) are " + "allowed.", + cfg->freq); + return -EINVAL; + } } if (param_mask & MSPI_DEVICE_CONFIG_IO_MODE) {