drivers: i2c: Refactor mcux lpi2c driver to use generated dts macros

Refactors the mcux lpi2c driver to use generated device tree macros
directly. Removes now unused dts fixup macros from i.mx rt and kinetis
socs.

Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
This commit is contained in:
Maureen Helm 2020-01-03 14:36:32 -06:00 committed by Anas Nashif
commit 7242660399
3 changed files with 55 additions and 99 deletions

View file

@ -220,30 +220,32 @@ static const struct i2c_driver_api mcux_lpi2c_driver_api = {
static void mcux_lpi2c_config_func_0(struct device *dev);
static const struct mcux_lpi2c_config mcux_lpi2c_config_0 = {
.base = (LPI2C_Type *)DT_I2C_MCUX_LPI2C_0_BASE_ADDRESS,
.clock_name = DT_I2C_MCUX_LPI2C_0_CLOCK_NAME,
.base = (LPI2C_Type *)DT_NXP_IMX_LPI2C_I2C_0_BASE_ADDRESS,
.clock_name = DT_NXP_IMX_LPI2C_I2C_0_CLOCK_CONTROLLER,
.clock_subsys =
(clock_control_subsys_t) DT_I2C_MCUX_LPI2C_0_CLOCK_SUBSYS,
(clock_control_subsys_t) DT_NXP_IMX_LPI2C_I2C_0_CLOCK_NAME,
.irq_config_func = mcux_lpi2c_config_func_0,
.bitrate = DT_I2C_MCUX_LPI2C_0_BITRATE,
#if DT_I2C_MCUX_LPI2C_0_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_I2C_MCUX_LPI2C_0_BUS_IDLE_TIMEOUT,
.bitrate = DT_NXP_IMX_LPI2C_I2C_0_CLOCK_FREQUENCY,
#if DT_NXP_IMX_LPI2C_I2C_0_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_NXP_IMX_LPI2C_I2C_0_BUS_IDLE_TIMEOUT,
#endif
};
static struct mcux_lpi2c_data mcux_lpi2c_data_0;
DEVICE_AND_API_INIT(mcux_lpi2c_0, DT_I2C_0_NAME, &mcux_lpi2c_init,
DEVICE_AND_API_INIT(mcux_lpi2c_0, DT_NXP_IMX_LPI2C_I2C_0_LABEL,
&mcux_lpi2c_init,
&mcux_lpi2c_data_0, &mcux_lpi2c_config_0,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
&mcux_lpi2c_driver_api);
static void mcux_lpi2c_config_func_0(struct device *dev)
{
IRQ_CONNECT(DT_I2C_MCUX_LPI2C_0_IRQ, DT_I2C_MCUX_LPI2C_0_IRQ_PRI,
IRQ_CONNECT(DT_NXP_IMX_LPI2C_I2C_0_IRQ_0,
DT_NXP_IMX_LPI2C_I2C_0_IRQ_0_PRIORITY,
mcux_lpi2c_isr, DEVICE_GET(mcux_lpi2c_0), 0);
irq_enable(DT_I2C_MCUX_LPI2C_0_IRQ);
irq_enable(DT_NXP_IMX_LPI2C_I2C_0_IRQ_0);
}
#endif /* CONFIG_I2C_0 */
@ -251,30 +253,32 @@ static void mcux_lpi2c_config_func_0(struct device *dev)
static void mcux_lpi2c_config_func_1(struct device *dev);
static const struct mcux_lpi2c_config mcux_lpi2c_config_1 = {
.base = (LPI2C_Type *)DT_I2C_MCUX_LPI2C_1_BASE_ADDRESS,
.clock_name = DT_I2C_MCUX_LPI2C_1_CLOCK_NAME,
.base = (LPI2C_Type *)DT_NXP_IMX_LPI2C_I2C_1_BASE_ADDRESS,
.clock_name = DT_NXP_IMX_LPI2C_I2C_1_CLOCK_CONTROLLER,
.clock_subsys =
(clock_control_subsys_t) DT_I2C_MCUX_LPI2C_1_CLOCK_SUBSYS,
(clock_control_subsys_t) DT_NXP_IMX_LPI2C_I2C_1_CLOCK_NAME,
.irq_config_func = mcux_lpi2c_config_func_1,
.bitrate = DT_I2C_MCUX_LPI2C_1_BITRATE,
#if DT_I2C_MCUX_LPI2C_1_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_I2C_MCUX_LPI2C_1_BUS_IDLE_TIMEOUT,
.bitrate = DT_NXP_IMX_LPI2C_I2C_1_CLOCK_FREQUENCY,
#if DT_NXP_IMX_LPI2C_I2C_1_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_NXP_IMX_LPI2C_I2C_1_BUS_IDLE_TIMEOUT,
#endif
};
static struct mcux_lpi2c_data mcux_lpi2c_data_1;
DEVICE_AND_API_INIT(mcux_lpi2c_1, DT_I2C_1_NAME, &mcux_lpi2c_init,
DEVICE_AND_API_INIT(mcux_lpi2c_1, DT_NXP_IMX_LPI2C_I2C_1_LABEL,
&mcux_lpi2c_init,
&mcux_lpi2c_data_1, &mcux_lpi2c_config_1,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
&mcux_lpi2c_driver_api);
static void mcux_lpi2c_config_func_1(struct device *dev)
{
IRQ_CONNECT(DT_I2C_MCUX_LPI2C_1_IRQ, DT_I2C_MCUX_LPI2C_1_IRQ_PRI,
IRQ_CONNECT(DT_NXP_IMX_LPI2C_I2C_1_IRQ_0,
DT_NXP_IMX_LPI2C_I2C_1_IRQ_0_PRIORITY,
mcux_lpi2c_isr, DEVICE_GET(mcux_lpi2c_1), 0);
irq_enable(DT_I2C_MCUX_LPI2C_1_IRQ);
irq_enable(DT_NXP_IMX_LPI2C_I2C_1_IRQ_0);
}
#endif /* CONFIG_I2C_1 */
@ -282,30 +286,32 @@ static void mcux_lpi2c_config_func_1(struct device *dev)
static void mcux_lpi2c_config_func_2(struct device *dev);
static const struct mcux_lpi2c_config mcux_lpi2c_config_2 = {
.base = (LPI2C_Type *)DT_I2C_MCUX_LPI2C_2_BASE_ADDRESS,
.clock_name = DT_I2C_MCUX_LPI2C_2_CLOCK_NAME,
.base = (LPI2C_Type *)DT_NXP_IMX_LPI2C_I2C_2_BASE_ADDRESS,
.clock_name = DT_NXP_IMX_LPI2C_I2C_2_CLOCK_CONTROLLER,
.clock_subsys =
(clock_control_subsys_t) DT_I2C_MCUX_LPI2C_2_CLOCK_SUBSYS,
(clock_control_subsys_t) DT_NXP_IMX_LPI2C_I2C_2_CLOCK_NAME,
.irq_config_func = mcux_lpi2c_config_func_2,
.bitrate = DT_I2C_MCUX_LPI2C_2_BITRATE,
#if DT_I2C_MCUX_LPI2C_2_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_I2C_MCUX_LPI2C_2_BUS_IDLE_TIMEOUT,
.bitrate = DT_NXP_IMX_LPI2C_I2C_2_CLOCK_FREQUENCY,
#if DT_NXP_IMX_LPI2C_I2C_2_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_NXP_IMX_LPI2C_I2C_2_BUS_IDLE_TIMEOUT,
#endif
};
static struct mcux_lpi2c_data mcux_lpi2c_data_2;
DEVICE_AND_API_INIT(mcux_lpi2c_2, DT_I2C_2_NAME, &mcux_lpi2c_init,
DEVICE_AND_API_INIT(mcux_lpi2c_2, DT_NXP_IMX_LPI2C_I2C_2_LABEL,
&mcux_lpi2c_init,
&mcux_lpi2c_data_2, &mcux_lpi2c_config_2,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
&mcux_lpi2c_driver_api);
static void mcux_lpi2c_config_func_2(struct device *dev)
{
IRQ_CONNECT(DT_I2C_MCUX_LPI2C_2_IRQ, DT_I2C_MCUX_LPI2C_2_IRQ_PRI,
IRQ_CONNECT(DT_NXP_IMX_LPI2C_I2C_2_IRQ_0,
DT_NXP_IMX_LPI2C_I2C_2_IRQ_0_PRIORITY,
mcux_lpi2c_isr, DEVICE_GET(mcux_lpi2c_2), 0);
irq_enable(DT_I2C_MCUX_LPI2C_2_IRQ);
irq_enable(DT_NXP_IMX_LPI2C_I2C_2_IRQ_0);
}
#endif /* CONFIG_I2C_2 */
@ -313,30 +319,32 @@ static void mcux_lpi2c_config_func_2(struct device *dev)
static void mcux_lpi2c_config_func_3(struct device *dev);
static const struct mcux_lpi2c_config mcux_lpi2c_config_3 = {
.base = (LPI2C_Type *)DT_I2C_MCUX_LPI2C_3_BASE_ADDRESS,
.clock_name = DT_I2C_MCUX_LPI2C_3_CLOCK_NAME,
.base = (LPI2C_Type *)DT_NXP_IMX_LPI2C_I2C_3_BASE_ADDRESS,
.clock_name = DT_NXP_IMX_LPI2C_I2C_3_CLOCK_CONTROLLER,
.clock_subsys =
(clock_control_subsys_t) DT_I2C_MCUX_LPI2C_3_CLOCK_SUBSYS,
(clock_control_subsys_t) DT_NXP_IMX_LPI2C_I2C_3_CLOCK_NAME,
.irq_config_func = mcux_lpi2c_config_func_3,
.bitrate = DT_I2C_MCUX_LPI2C_3_BITRATE,
#if DT_I2C_MCUX_LPI2C_3_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_I2C_MCUX_LPI2C_3_BUS_IDLE_TIMEOUT,
.bitrate = DT_NXP_IMX_LPI2C_I2C_3_CLOCK_FREQUENCY,
#if DT_NXP_IMX_LPI2C_I2C_3_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_NXP_IMX_LPI2C_I2C_3_BUS_IDLE_TIMEOUT,
#endif
};
static struct mcux_lpi2c_data mcux_lpi2c_data_3;
DEVICE_AND_API_INIT(mcux_lpi2c_3, DT_I2C_3_NAME, &mcux_lpi2c_init,
DEVICE_AND_API_INIT(mcux_lpi2c_3, DT_NXP_IMX_LPI2C_I2C_3_LABEL,
&mcux_lpi2c_init,
&mcux_lpi2c_data_3, &mcux_lpi2c_config_3,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
&mcux_lpi2c_driver_api);
static void mcux_lpi2c_config_func_3(struct device *dev)
{
IRQ_CONNECT(DT_I2C_MCUX_LPI2C_3_IRQ, DT_I2C_MCUX_LPI2C_3_IRQ_PRI,
IRQ_CONNECT(DT_NXP_IMX_LPI2C_I2C_3_IRQ_0,
DT_NXP_IMX_LPI2C_I2C_3_IRQ_0_PRIORITY,
mcux_lpi2c_isr, DEVICE_GET(mcux_lpi2c_3), 0);
irq_enable(DT_I2C_MCUX_LPI2C_3_IRQ);
irq_enable(DT_NXP_IMX_LPI2C_I2C_3_IRQ_0);
}
#endif /* CONFIG_I2C_3 */
@ -344,29 +352,31 @@ static void mcux_lpi2c_config_func_3(struct device *dev)
static void mcux_lpi2c_config_func_4(struct device *dev);
static const struct mcux_lpi2c_config mcux_lpi2c_config_4 = {
.base = (LPI2C_Type *)DT_I2C_MCUX_LPI2C_4_BASE_ADDRESS,
.clock_name = DT_I2C_MCUX_LPI2C_4_CLOCK_NAME,
.base = (LPI2C_Type *)DT_NXP_IMX_LPI2C_I2C_4_BASE_ADDRESS,
.clock_name = DT_NXP_IMX_LPI2C_I2C_4_CLOCK_CONTROLLER,
.clock_subsys =
(clock_control_subsys_t) DT_I2C_MCUX_LPI2C_4_CLOCK_SUBSYS,
(clock_control_subsys_t) DT_NXP_IMX_LPI2C_I2C_4_CLOCK_NAME,
.irq_config_func = mcux_lpi2c_config_func_4,
.bitrate = DT_I2C_MCUX_LPI2C_4_BITRATE,
#if DT_I2C_MCUX_LPI2C_4_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_I2C_MCUX_LPI2C_4_BUS_IDLE_TIMEOUT,
.bitrate = DT_NXP_IMX_LPI2C_I2C_4_CLOCK_FREQUENCY,
#if DT_NXP_IMX_LPI2C_I2C_4_BUS_IDLE_TIMEOUT
.bus_idle_timeout_ns = DT_NXP_IMX_LPI2C_I2C_4_BUS_IDLE_TIMEOUT,
#endif
};
static struct mcux_lpi2c_data mcux_lpi2c_data_4;
DEVICE_AND_API_INIT(mcux_lpi2c_4, DT_I2C_4_NAME, &mcux_lpi2c_init,
DEVICE_AND_API_INIT(mcux_lpi2c_4, DT_NXP_IMX_LPI2C_I2C_4_LABEL,
&mcux_lpi2c_init,
&mcux_lpi2c_data_4, &mcux_lpi2c_config_4,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
&mcux_lpi2c_driver_api);
static void mcux_lpi2c_config_func_4(struct device *dev)
{
IRQ_CONNECT(DT_I2C_MCUX_LPI2C_4_IRQ, DT_I2C_MCUX_LPI2C_4_IRQ_PRI,
IRQ_CONNECT(DT_NXP_IMX_LPI2C_I2C_4_IRQ_0,
DT_NXP_IMX_LPI2C_I2C_4_IRQ_0_PRIORITY,
mcux_lpi2c_isr, DEVICE_GET(mcux_lpi2c_4), 0);
irq_enable(DT_I2C_MCUX_LPI2C_4_IRQ);
irq_enable(DT_NXP_IMX_LPI2C_I2C_4_IRQ_0);
}
#endif /* CONFIG_I2C_4 */

View file

@ -55,42 +55,6 @@
#define DT_MCUX_IGPIO_5_IRQ_1 DT_NXP_IMX_GPIO_400C0000_IRQ_1
#define DT_MCUX_IGPIO_5_IRQ_1_PRI DT_NXP_IMX_GPIO_400C0000_IRQ_1_PRIORITY
#define DT_I2C_1_NAME DT_NXP_IMX_LPI2C_403F0000_LABEL
#define DT_I2C_MCUX_LPI2C_1_BASE_ADDRESS DT_NXP_IMX_LPI2C_403F0000_BASE_ADDRESS
#define DT_I2C_MCUX_LPI2C_1_IRQ DT_NXP_IMX_LPI2C_403F0000_IRQ_0
#define DT_I2C_MCUX_LPI2C_1_IRQ_PRI DT_NXP_IMX_LPI2C_403F0000_IRQ_0_PRIORITY
#define DT_I2C_MCUX_LPI2C_1_BITRATE DT_NXP_IMX_LPI2C_403F0000_CLOCK_FREQUENCY
#define DT_I2C_MCUX_LPI2C_1_CLOCK_NAME DT_NXP_IMX_LPI2C_403F0000_CLOCK_CONTROLLER
#define DT_I2C_MCUX_LPI2C_1_CLOCK_SUBSYS DT_NXP_IMX_LPI2C_403F0000_CLOCK_NAME
#define DT_I2C_MCUX_LPI2C_1_BUS_IDLE_TIMEOUT DT_NXP_IMX_LPI2C_403F0000_BUS_IDLE_TIMEOUT
#define DT_I2C_2_NAME DT_NXP_IMX_LPI2C_403F4000_LABEL
#define DT_I2C_MCUX_LPI2C_2_BASE_ADDRESS DT_NXP_IMX_LPI2C_403F4000_BASE_ADDRESS
#define DT_I2C_MCUX_LPI2C_2_IRQ DT_NXP_IMX_LPI2C_403F4000_IRQ_0
#define DT_I2C_MCUX_LPI2C_2_IRQ_PRI DT_NXP_IMX_LPI2C_403F4000_IRQ_0_PRIORITY
#define DT_I2C_MCUX_LPI2C_2_BITRATE DT_NXP_IMX_LPI2C_403F4000_CLOCK_FREQUENCY
#define DT_I2C_MCUX_LPI2C_2_CLOCK_NAME DT_NXP_IMX_LPI2C_403F4000_CLOCK_CONTROLLER
#define DT_I2C_MCUX_LPI2C_2_CLOCK_SUBSYS DT_NXP_IMX_LPI2C_403F4000_CLOCK_NAME
#define DT_I2C_MCUX_LPI2C_2_BUS_IDLE_TIMEOUT DT_NXP_IMX_LPI2C_403F4000_BUS_IDLE_TIMEOUT
#define DT_I2C_3_NAME DT_NXP_IMX_LPI2C_403F8000_LABEL
#define DT_I2C_MCUX_LPI2C_3_BASE_ADDRESS DT_NXP_IMX_LPI2C_403F8000_BASE_ADDRESS
#define DT_I2C_MCUX_LPI2C_3_IRQ DT_NXP_IMX_LPI2C_403F8000_IRQ_0
#define DT_I2C_MCUX_LPI2C_3_IRQ_PRI DT_NXP_IMX_LPI2C_403F8000_IRQ_0_PRIORITY
#define DT_I2C_MCUX_LPI2C_3_BITRATE DT_NXP_IMX_LPI2C_403F8000_CLOCK_FREQUENCY
#define DT_I2C_MCUX_LPI2C_3_CLOCK_NAME DT_NXP_IMX_LPI2C_403F8000_CLOCK_CONTROLLER
#define DT_I2C_MCUX_LPI2C_3_CLOCK_SUBSYS DT_NXP_IMX_LPI2C_403F8000_CLOCK_NAME
#define DT_I2C_MCUX_LPI2C_3_BUS_IDLE_TIMEOUT DT_NXP_IMX_LPI2C_403F8000_BUS_IDLE_TIMEOUT
#define DT_I2C_4_NAME DT_NXP_IMX_LPI2C_403FC000_LABEL
#define DT_I2C_MCUX_LPI2C_4_BASE_ADDRESS DT_NXP_IMX_LPI2C_403FC000_BASE_ADDRESS
#define DT_I2C_MCUX_LPI2C_4_IRQ DT_NXP_IMX_LPI2C_403FC000_IRQ_0
#define DT_I2C_MCUX_LPI2C_4_IRQ_PRI DT_NXP_IMX_LPI2C_403FC000_IRQ_0_PRIORITY
#define DT_I2C_MCUX_LPI2C_4_BITRATE DT_NXP_IMX_LPI2C_403FC000_CLOCK_FREQUENCY
#define DT_I2C_MCUX_LPI2C_4_CLOCK_NAME DT_NXP_IMX_LPI2C_403FC000_CLOCK_CONTROLLER
#define DT_I2C_MCUX_LPI2C_4_CLOCK_SUBSYS DT_NXP_IMX_LPI2C_403FC000_CLOCK_NAME
#define DT_I2C_MCUX_LPI2C_4_BUS_IDLE_TIMEOUT DT_NXP_IMX_LPI2C_403FC000_BUS_IDLE_TIMEOUT
#define DT_UART_MCUX_LPUART_1_BASE_ADDRESS DT_NXP_KINETIS_LPUART_40184000_BASE_ADDRESS
#define DT_UART_MCUX_LPUART_1_NAME DT_NXP_KINETIS_LPUART_40184000_LABEL
#define DT_UART_MCUX_LPUART_1_IRQ_0 DT_NXP_KINETIS_LPUART_40184000_IRQ_0

View file

@ -60,24 +60,6 @@
#define DT_UART_MCUX_LPUART_2_CLOCK_NAME DT_NXP_KINETIS_LPUART_4006C000_CLOCK_CONTROLLER
#define DT_UART_MCUX_LPUART_2_CLOCK_SUBSYS DT_NXP_KINETIS_LPUART_4006C000_CLOCK_NAME
#define DT_I2C_0_NAME DT_NXP_IMX_LPI2C_40066000_LABEL
#define DT_I2C_MCUX_LPI2C_0_BASE_ADDRESS DT_NXP_IMX_LPI2C_40066000_BASE_ADDRESS
#define DT_I2C_MCUX_LPI2C_0_IRQ DT_NXP_IMX_LPI2C_40066000_IRQ_0
#define DT_I2C_MCUX_LPI2C_0_IRQ_PRI DT_NXP_IMX_LPI2C_40066000_IRQ_0_PRIORITY
#define DT_I2C_MCUX_LPI2C_0_BITRATE DT_NXP_IMX_LPI2C_40066000_CLOCK_FREQUENCY
#define DT_I2C_MCUX_LPI2C_0_CLOCK_NAME DT_NXP_IMX_LPI2C_40066000_CLOCK_CONTROLLER
#define DT_I2C_MCUX_LPI2C_0_CLOCK_SUBSYS DT_NXP_IMX_LPI2C_40066000_CLOCK_NAME
#define DT_I2C_MCUX_LPI2C_0_BUS_IDLE_TIMEOUT DT_NXP_IMX_LPI2C_40066000_BUS_IDLE_TIMEOUT
#define DT_I2C_1_NAME DT_NXP_IMX_LPI2C_40067000_LABEL
#define DT_I2C_MCUX_LPI2C_1_BASE_ADDRESS DT_NXP_IMX_LPI2C_40067000_BASE_ADDRESS
#define DT_I2C_MCUX_LPI2C_1_IRQ DT_NXP_IMX_LPI2C_40067000_IRQ_0
#define DT_I2C_MCUX_LPI2C_1_IRQ_PRI DT_NXP_IMX_LPI2C_40067000_IRQ_0_PRIORITY
#define DT_I2C_MCUX_LPI2C_1_BITRATE DT_NXP_IMX_LPI2C_40067000_CLOCK_FREQUENCY
#define DT_I2C_MCUX_LPI2C_1_CLOCK_NAME DT_NXP_IMX_LPI2C_40067000_CLOCK_CONTROLLER
#define DT_I2C_MCUX_LPI2C_1_CLOCK_SUBSYS DT_NXP_IMX_LPI2C_40067000_CLOCK_NAME
#define DT_I2C_MCUX_LPI2C_1_BUS_IDLE_TIMEOUT DT_NXP_IMX_LPI2C_40067000_BUS_IDLE_TIMEOUT
#define DT_ADC_0_NAME DT_NXP_KINETIS_ADC12_4003B000_LABEL
#define DT_ADC_1_NAME DT_NXP_KINETIS_ADC12_40027000_LABEL
#define DT_ADC_2_NAME DT_NXP_KINETIS_ADC12_4003C000_LABEL