@ -16,6 +16,9 @@
@@ -16,6 +16,9 @@
# include <zephyr/kernel.h>
# include <zephyr/irq.h>
# include <fsl_lpi2c.h>
# if CONFIG_NXP_LP_FLEXCOMM
# include <zephyr/drivers/mfd/nxp_lp_flexcomm.h>
# endif
# include <zephyr/drivers/pinctrl.h>
@ -40,6 +43,9 @@ LOG_MODULE_REGISTER(mcux_lpi2c);
@@ -40,6 +43,9 @@ LOG_MODULE_REGISTER(mcux_lpi2c);
struct mcux_lpi2c_config {
DEVICE_MMIO_NAMED_ROM ( reg_base ) ;
# ifdef CONFIG_NXP_LP_FLEXCOMM
const struct device * parent_dev ;
# endif
const struct device * clock_dev ;
clock_control_subsys_t clock_subsys ;
void ( * irq_config_func ) ( const struct device * dev ) ;
@ -329,7 +335,15 @@ static int mcux_lpi2c_init(const struct device *dev)
@@ -329,7 +335,15 @@ static int mcux_lpi2c_init(const struct device *dev)
return error ;
}
# if CONFIG_NXP_LP_FLEXCOMM
/* When using LP Flexcomm driver, register the interrupt handler
* so we receive notification from the LP Flexcomm interrupt handler .
*/
nxp_lp_flexcomm_setirqhandler ( config - > parent_dev , dev ,
LP_FLEXCOMM_PERIPH_LPI2C , mcux_lpi2c_isr ) ;
# else
config - > irq_config_func ( dev ) ;
# endif
i2c_rtio_init ( data - > ctx , dev ) ;
@ -363,6 +377,13 @@ static DEVICE_API(i2c, mcux_lpi2c_driver_api) = {
@@ -363,6 +377,13 @@ static DEVICE_API(i2c, mcux_lpi2c_driver_api) = {
IF_ENABLED ( DT_INST_IRQ_HAS_IDX ( n , 0 ) , \
( I2C_MCUX_LPI2C_MODULE_IRQ_CONNECT ( n ) ) )
# ifdef CONFIG_NXP_LP_FLEXCOMM
# define PARENT_DEV(n) \
. parent_dev = DEVICE_DT_GET ( DT_INST_PARENT ( n ) ) ,
# else
# define PARENT_DEV(n)
# endif /* CONFIG_NXP_LP_FLEXCOMM */
# define I2C_MCUX_LPI2C_INIT(n) \
PINCTRL_DT_INST_DEFINE ( n ) ; \
\
@ -370,6 +391,7 @@ static DEVICE_API(i2c, mcux_lpi2c_driver_api) = {
@@ -370,6 +391,7 @@ static DEVICE_API(i2c, mcux_lpi2c_driver_api) = {
\
static const struct mcux_lpi2c_config mcux_lpi2c_config_ # # n = { \
DEVICE_MMIO_NAMED_ROM_INIT ( reg_base , DT_DRV_INST ( n ) ) , \
PARENT_DEV ( n ) \
. clock_dev = DEVICE_DT_GET ( DT_INST_CLOCKS_CTLR ( n ) ) , \
. clock_subsys = \
( clock_control_subsys_t ) DT_INST_CLOCKS_CELL ( n , name ) , \