diff --git a/drivers/flash/flash_stm32_xspi.c b/drivers/flash/flash_stm32_xspi.c index 2eeef514393..81d6f21eb64 100644 --- a/drivers/flash/flash_stm32_xspi.c +++ b/drivers/flash/flash_stm32_xspi.c @@ -2019,6 +2019,21 @@ static int flash_stm32_xspi_init(const struct device *dev) uint32_t prescaler = STM32_XSPI_CLOCK_PRESCALER_MIN; int ret; + if (!device_is_ready(DEVICE_DT_GET(STM32_CLOCK_CONTROL_NODE))) { + LOG_ERR("clock control device not ready"); + return -ENODEV; + } + +#ifdef CONFIG_STM32_MEMMAP + /* If MemoryMapped then configure skip init */ + if (stm32_xspi_is_memorymap(dev)) { + LOG_DBG("NOR init'd in MemMapped mode"); + /* Force HAL instance in correct state */ + dev_data->hxspi.State = HAL_XSPI_STATE_BUSY_MEM_MAPPED; + return 0; + } +#endif /* CONFIG_STM32_MEMMAP */ + /* The SPI/DTR is not a valid config of data_mode/data_rate according to the DTS */ if ((dev_cfg->data_mode != XSPI_OCTO_MODE) && (dev_cfg->data_rate == XSPI_DTR_TRANSFER)) { @@ -2034,21 +2049,6 @@ static int flash_stm32_xspi_init(const struct device *dev) return ret; } - if (!device_is_ready(DEVICE_DT_GET(STM32_CLOCK_CONTROL_NODE))) { - LOG_ERR("clock control device not ready"); - return -ENODEV; - } - -#ifdef CONFIG_STM32_MEMMAP - /* If MemoryMapped then configure skip init */ - if (stm32_xspi_is_memorymap(dev)) { - LOG_DBG("NOR init'd in MemMapped mode\n"); - /* Force HAL instance in correct state */ - dev_data->hxspi.State = HAL_XSPI_STATE_BUSY_MEM_MAPPED; - return 0; - } -#endif /* CONFIG_STM32_MEMMAP */ - if (dev_cfg->pclk_len > 3) { /* Max 3 domain clock are expected */ LOG_ERR("Could not select %d XSPI domain clock", dev_cfg->pclk_len);