Skip to content

Commit 0727566

Browse files
decsnynashif
authored andcommitted
drivers: spi_mcux_lpspi: Remove parent_dev field
Remove parent_dev from config struct, and simplify code for the definition and use of the irq config function. Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
1 parent 6607976 commit 0727566

File tree

1 file changed

+15
-35
lines changed

1 file changed

+15
-35
lines changed

drivers/spi/spi_mcux_lpspi.c

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,6 @@ struct spi_dma_stream {
5555

5656
struct spi_mcux_config {
5757
DEVICE_MMIO_NAMED_ROM(reg_base);
58-
#ifdef CONFIG_NXP_LP_FLEXCOMM
59-
const struct device *parent_dev;
60-
#endif
6158
const struct device *clock_dev;
6259
clock_control_subsys_t clock_subsys;
6360
void (*irq_config_func)(const struct device *dev);
@@ -661,16 +658,7 @@ static int spi_mcux_init(const struct device *dev)
661658

662659
DEVICE_MMIO_NAMED_MAP(dev, reg_base, K_MEM_CACHE_NONE | K_MEM_DIRECT_MAP);
663660

664-
#if CONFIG_NXP_LP_FLEXCOMM
665-
/* When using LP Flexcomm driver, register the interrupt handler
666-
* so we receive notification from the LP Flexcomm interrupt handler.
667-
*/
668-
nxp_lp_flexcomm_setirqhandler(config->parent_dev, dev, LP_FLEXCOMM_PERIPH_LPSPI,
669-
spi_mcux_isr);
670-
#else
671-
/* Interrupt is managed by this driver */
672661
config->irq_config_func(dev);
673-
#endif
674662

675663
err = spi_context_cs_configure_all(&data->ctx);
676664
if (err < 0) {
@@ -849,31 +837,29 @@ static const struct spi_driver_api spi_mcux_driver_api = {
849837
#define SPI_DMA_CHANNELS(n)
850838
#endif /* CONFIG_SPI_MCUX_LPSPI_DMA */
851839

852-
#define SPI_MCUX_LPSPI_MODULE_IRQ_CONNECT(n) \
853-
do { \
854-
IRQ_CONNECT(DT_INST_IRQN(n), DT_INST_IRQ(n, priority), spi_mcux_isr, \
855-
DEVICE_DT_INST_GET(n), 0); \
856-
irq_enable(DT_INST_IRQN(n)); \
857-
} while (false)
858-
859-
#define SPI_MCUX_LPSPI_MODULE_IRQ(n) \
860-
IF_ENABLED(DT_INST_IRQ_HAS_IDX(n, 0), (SPI_MCUX_LPSPI_MODULE_IRQ_CONNECT(n)))
861-
862-
#ifdef CONFIG_NXP_LP_FLEXCOMM
863-
#define PARENT_DEV(n) .parent_dev = DEVICE_DT_GET(DT_INST_PARENT(n)),
840+
#if defined(CONFIG_NXP_LP_FLEXCOMM)
841+
#define SPI_MCUX_LPSPI_IRQ_FUNC(n) \
842+
nxp_lp_flexcomm_setirqhandler(DEVICE_DT_GET(DT_INST_PARENT(n)), DEVICE_DT_INST_GET(n), \
843+
LP_FLEXCOMM_PERIPH_LPSPI, spi_mcux_isr);
864844
#else
865-
#define PARENT_DEV(n)
866-
#endif /* CONFIG_NXP_LP_FLEXCOMM */
845+
#define SPI_MCUX_LPSPI_IRQ_FUNC(n) \
846+
IRQ_CONNECT(DT_INST_IRQN(n), DT_INST_IRQ(n, priority), spi_mcux_isr, \
847+
DEVICE_DT_INST_GET(n), 0); \
848+
irq_enable(DT_INST_IRQN(n));
849+
#endif
867850

868851
#define SPI_MCUX_LPSPI_INIT(n) \
869852
PINCTRL_DT_INST_DEFINE(n); \
870853
COND_CODE_1(CONFIG_SPI_RTIO, (SPI_MCUX_RTIO_DEFINE(n)), ()); \
871854
\
872-
static void spi_mcux_config_func_##n(const struct device *dev); \
855+
static void spi_mcux_config_func_##n(const struct device *dev) \
856+
{ \
857+
SPI_MCUX_LPSPI_IRQ_FUNC(n) \
858+
} \
873859
\
874860
static const struct spi_mcux_config spi_mcux_config_##n = { \
875861
DEVICE_MMIO_NAMED_ROM_INIT(reg_base, DT_DRV_INST(n)), \
876-
PARENT_DEV(n).clock_dev = DEVICE_DT_GET(DT_INST_CLOCKS_CTLR(n)), \
862+
.clock_dev = DEVICE_DT_GET(DT_INST_CLOCKS_CTLR(n)), \
877863
.clock_subsys = (clock_control_subsys_t)DT_INST_CLOCKS_CELL(n, name), \
878864
.irq_config_func = spi_mcux_config_func_##n, \
879865
.pcs_sck_delay = UTIL_AND(DT_INST_NODE_HAS_PROP(n, pcs_sck_delay), \
@@ -891,15 +877,9 @@ static const struct spi_driver_api spi_mcux_driver_api = {
891877
SPI_CONTEXT_INIT_SYNC(spi_mcux_data_##n, ctx), \
892878
SPI_CONTEXT_CS_GPIOS_INITIALIZE(DT_DRV_INST(n), ctx) SPI_DMA_CHANNELS(n) \
893879
IF_ENABLED(CONFIG_SPI_RTIO, (.rtio_ctx = &spi_mcux_rtio_##n,)) \
894-
\
895880
}; \
896881
\
897882
DEVICE_DT_INST_DEFINE(n, spi_mcux_init, NULL, &spi_mcux_data_##n, &spi_mcux_config_##n, \
898-
POST_KERNEL, CONFIG_SPI_INIT_PRIORITY, &spi_mcux_driver_api); \
899-
\
900-
static void spi_mcux_config_func_##n(const struct device *dev) \
901-
{ \
902-
SPI_MCUX_LPSPI_MODULE_IRQ(n); \
903-
}
883+
POST_KERNEL, CONFIG_SPI_INIT_PRIORITY, &spi_mcux_driver_api);
904884

905885
DT_INST_FOREACH_STATUS_OKAY(SPI_MCUX_LPSPI_INIT)

0 commit comments

Comments
 (0)