diff --git a/drivers/spi/spi_mcux_lpspi.c b/drivers/spi/spi_mcux_lpspi.c index 38fb7120a23..3e83c966114 100644 --- a/drivers/spi/spi_mcux_lpspi.c +++ b/drivers/spi/spi_mcux_lpspi.c @@ -751,21 +751,12 @@ static void spi_mcux_iodev_complete(const struct device *dev, int status) static int spi_mcux_init(const struct device *dev) { - int err; const struct spi_mcux_config *config = dev->config; struct spi_mcux_data *data = dev->data; + int err; DEVICE_MMIO_NAMED_MAP(dev, reg_base, K_MEM_CACHE_NONE | K_MEM_DIRECT_MAP); - config->irq_config_func(dev); - - err = spi_context_cs_configure_all(&data->ctx); - if (err < 0) { - return err; - } - - spi_context_unlock_unconditionally(&data->ctx); - data->dev = dev; #ifdef CONFIG_SPI_MCUX_LPSPI_DMA @@ -782,15 +773,21 @@ static int spi_mcux_init(const struct device *dev) } #endif /* CONFIG_SPI_MCUX_LPSPI_DMA */ -#ifdef CONFIG_SPI_RTIO - spi_rtio_init(data->rtio_ctx, dev); -#endif + err = spi_context_cs_configure_all(&data->ctx); + if (err < 0) { + return err; + } err = pinctrl_apply_state(config->pincfg, PINCTRL_STATE_DEFAULT); if (err) { return err; } + config->irq_config_func(dev); + +#ifdef CONFIG_SPI_RTIO + spi_rtio_init(data->rtio_ctx, dev); +#endif spi_context_unlock_unconditionally(&data->ctx); return 0;