drivers: gpio: mcux_igpio: Convert driver to new DT_INST macros

Convert driver to use DT_INST macros and remove related board per
instance Kconfig symbol usage.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
Kumar Gala 2020-04-14 10:38:37 -05:00 committed by Maureen Helm
commit 50129f8dd7
9 changed files with 40 additions and 305 deletions

View file

@ -12,16 +12,6 @@ choice CODE_LOCATION
default CODE_FLEXSPI
endchoice
if GPIO_MCUX_IGPIO
config GPIO_MCUX_IGPIO_1
default y
config GPIO_MCUX_IGPIO_2
default y
endif # GPIO_MCUX_IGPIO
config I2C_1
default y
depends on I2C_MCUX_LPI2C

View file

@ -12,16 +12,6 @@ choice CODE_LOCATION
default CODE_FLEXSPI
endchoice
if GPIO_MCUX_IGPIO
config GPIO_MCUX_IGPIO_2
default y
config GPIO_MCUX_IGPIO_3
default y
endif # GPIO_MCUX_IGPIO
config I2C_1
default y
depends on I2C_MCUX_LPI2C

View file

@ -16,16 +16,6 @@ choice DATA_LOCATION
default DATA_SEMC
endchoice
if GPIO_MCUX_IGPIO
config GPIO_MCUX_IGPIO_1
default y
config GPIO_MCUX_IGPIO_5
default y
endif # GPIO_MCUX_IGPIO
if I2C_MCUX_LPI2C
config I2C_1

View file

@ -20,25 +20,6 @@ config DISK_ACCESS_USDHC1
default y
depends on DISK_ACCESS_USDHC
if GPIO_MCUX_IGPIO
config GPIO_MCUX_IGPIO_1
default y
config GPIO_MCUX_IGPIO_2
default y if DISK_ACCESS_USDHC1
config GPIO_MCUX_IGPIO_3
default n
config GPIO_MCUX_IGPIO_4
default n
config GPIO_MCUX_IGPIO_5
default y
endif # GPIO_MCUX_IGPIO
config I2C
default y if LVGL

View file

@ -17,16 +17,6 @@ choice DATA_LOCATION
default DATA_SEMC
endchoice
if GPIO_MCUX_IGPIO
config GPIO_MCUX_IGPIO_1
default y
config GPIO_MCUX_IGPIO_5
default y
endif # GPIO_MCUX_IGPIO
config I2C
default y if LVGL

View file

@ -16,16 +16,6 @@ choice DATA_LOCATION
default DATA_SEMC
endchoice
if GPIO_MCUX_IGPIO
config GPIO_MCUX_IGPIO_1
default y
config GPIO_MCUX_IGPIO_5
default y
endif # GPIO_MCUX_IGPIO
config I2C
default y if LVGL

View file

@ -20,25 +20,6 @@ config DISK_ACCESS_USDHC1
default y
depends on DISK_ACCESS_USDHC
if GPIO_MCUX_IGPIO
config GPIO_MCUX_IGPIO_1
default y
config GPIO_MCUX_IGPIO_2
default y if DISK_ACCESS_USDHC1
config GPIO_MCUX_IGPIO_3
default n
config GPIO_MCUX_IGPIO_4
default n
config GPIO_MCUX_IGPIO_5
default y
endif # GPIO_MCUX_IGPIO
config UART_MCUX_LPUART_1
default y
depends on UART_MCUX_LPUART

View file

@ -3,37 +3,8 @@
# Copyright (c) 2017, NXP
# SPDX-License-Identifier: Apache-2.0
menuconfig GPIO_MCUX_IGPIO
config GPIO_MCUX_IGPIO
bool "MCUX IGPIO driver"
depends on HAS_MCUX_IGPIO
help
Enable the MCUX IGPIO driver.
if GPIO_MCUX_IGPIO
config GPIO_MCUX_IGPIO_1
bool "Port 1"
help
Enable Port 1.
config GPIO_MCUX_IGPIO_2
bool "Port 2"
help
Enable Port 2.
config GPIO_MCUX_IGPIO_3
bool "Port 3"
help
Enable Port 3.
config GPIO_MCUX_IGPIO_4
bool "Port 4"
help
Enable Port 4.
config GPIO_MCUX_IGPIO_5
bool "Port 5"
help
Enable Port 5.
endif # GPIO_MCUX_IGPIO

View file

@ -224,192 +224,44 @@ static const struct gpio_driver_api mcux_igpio_driver_api = {
.disable_callback = mcux_igpio_disable_callback,
};
#ifdef CONFIG_GPIO_MCUX_IGPIO_1
static int mcux_igpio_1_init(struct device *dev);
#define MCUX_IGPIO_IRQ_INIT(n, i) \
do { \
IRQ_CONNECT(DT_INST_IRQ_BY_IDX(n, i, irq), \
DT_INST_IRQ_BY_IDX(n, i, priority), \
mcux_igpio_port_isr, \
DEVICE_GET(mcux_igpio_##n), 0); \
\
irq_enable(DT_INST_IRQ_BY_IDX(n, i, irq)); \
} while (1)
static const struct mcux_igpio_config mcux_igpio_1_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_DT_INST(0),
},
.base = (GPIO_Type *)DT_NXP_IMX_GPIO_GPIO_1_BASE_ADDRESS,
};
#define MCUX_IGPIO_INIT(n) \
static int mcux_igpio_##n##_init(struct device *dev); \
\
static const struct mcux_igpio_config mcux_igpio_##n##_config = {\
.common = { \
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_DT_INST(n),\
}, \
.base = (GPIO_Type *)DT_INST_REG_ADDR(n), \
}; \
\
static struct mcux_igpio_data mcux_igpio_##n##_data; \
\
DEVICE_AND_API_INIT(mcux_igpio_##n, DT_INST_LABEL(n), \
mcux_igpio_##n##_init, \
&mcux_igpio_##n##_data, \
&mcux_igpio_##n##_config, \
POST_KERNEL, \
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \
&mcux_igpio_driver_api); \
\
static int mcux_igpio_##n##_init(struct device *dev) \
{ \
MCUX_IGPIO_IRQ_INIT(n, 0); \
\
IF_ENABLED(DT_INST_IRQ_HAS_IDX(n, 1), \
(MCUX_IGPIO_IRQ_INIT(n, 1);)) \
\
return 0; \
}
static struct mcux_igpio_data mcux_igpio_1_data;
DEVICE_AND_API_INIT(mcux_igpio_1, DT_NXP_IMX_GPIO_GPIO_1_LABEL,
mcux_igpio_1_init,
&mcux_igpio_1_data, &mcux_igpio_1_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&mcux_igpio_driver_api);
static int mcux_igpio_1_init(struct device *dev)
{
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_1_IRQ_0,
DT_NXP_IMX_GPIO_GPIO_1_IRQ_0_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_1), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_1_IRQ_0);
#if defined(DT_NXP_IMX_GPIO_GPIO_1_IRQ_1) && defined(DT_NXP_IMX_GPIO_GPIO_1_IRQ_1_PRIORITY)
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_1_IRQ_1,
DT_NXP_IMX_GPIO_GPIO_1_IRQ_1_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_1), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_1_IRQ_1);
#endif
return 0;
}
#endif /* CONFIG_GPIO_MCUX_IGPIO_1 */
#ifdef CONFIG_GPIO_MCUX_IGPIO_2
static int mcux_igpio_2_init(struct device *dev);
static const struct mcux_igpio_config mcux_igpio_2_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_DT_INST(1),
},
.base = (GPIO_Type *)DT_NXP_IMX_GPIO_GPIO_2_BASE_ADDRESS,
};
static struct mcux_igpio_data mcux_igpio_2_data;
DEVICE_AND_API_INIT(mcux_igpio_2, DT_NXP_IMX_GPIO_GPIO_2_LABEL,
mcux_igpio_2_init,
&mcux_igpio_2_data, &mcux_igpio_2_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&mcux_igpio_driver_api);
static int mcux_igpio_2_init(struct device *dev)
{
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_2_IRQ_0,
DT_NXP_IMX_GPIO_GPIO_2_IRQ_0_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_2), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_2_IRQ_0);
#if defined(DT_NXP_IMX_GPIO_GPIO_2_IRQ_1) && defined(DT_NXP_IMX_GPIO_GPIO_2_IRQ_1_PRIORITY)
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_2_IRQ_1,
DT_NXP_IMX_GPIO_GPIO_2_IRQ_1_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_2), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_2_IRQ_1);
#endif
return 0;
}
#endif /* CONFIG_GPIO_MCUX_IGPIO_2 */
#ifdef CONFIG_GPIO_MCUX_IGPIO_3
static int mcux_igpio_3_init(struct device *dev);
static const struct mcux_igpio_config mcux_igpio_3_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_DT_INST(2),
},
.base = (GPIO_Type *)DT_NXP_IMX_GPIO_GPIO_3_BASE_ADDRESS,
};
static struct mcux_igpio_data mcux_igpio_3_data;
DEVICE_AND_API_INIT(mcux_igpio_3, DT_NXP_IMX_GPIO_GPIO_3_LABEL,
mcux_igpio_3_init,
&mcux_igpio_3_data, &mcux_igpio_3_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&mcux_igpio_driver_api);
static int mcux_igpio_3_init(struct device *dev)
{
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_3_IRQ_0,
DT_NXP_IMX_GPIO_GPIO_3_IRQ_0_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_3), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_3_IRQ_0);
#if defined(DT_NXP_IMX_GPIO_GPIO_3_IRQ_1) && defined(DT_NXP_IMX_GPIO_GPIO_3_IRQ_1_PRIORITY)
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_3_IRQ_1,
DT_NXP_IMX_GPIO_GPIO_3_IRQ_1_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_3), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_3_IRQ_1);
#endif
return 0;
}
#endif /* CONFIG_GPIO_MCUX_IGPIO_3 */
#ifdef CONFIG_GPIO_MCUX_IGPIO_4
static int mcux_igpio_4_init(struct device *dev);
static const struct mcux_igpio_config mcux_igpio_4_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_DT_INST(3),
},
.base = (GPIO_Type *)DT_NXP_IMX_GPIO_GPIO_4_BASE_ADDRESS,
};
static struct mcux_igpio_data mcux_igpio_4_data;
DEVICE_AND_API_INIT(mcux_igpio_4, DT_NXP_IMX_GPIO_GPIO_4_LABEL,
mcux_igpio_4_init,
&mcux_igpio_4_data, &mcux_igpio_4_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&mcux_igpio_driver_api);
static int mcux_igpio_4_init(struct device *dev)
{
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_4_IRQ_0,
DT_NXP_IMX_GPIO_GPIO_4_IRQ_0_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_4), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_4_IRQ_0);
#if defined(DT_NXP_IMX_GPIO_GPIO_4_IRQ_1) && defined(DT_NXP_IMX_GPIO_GPIO_4_IRQ_1_PRIORITY)
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_4_IRQ_1,
DT_NXP_IMX_GPIO_GPIO_4_IRQ_1_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_4), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_4_IRQ_1);
#endif
return 0;
}
#endif /* CONFIG_GPIO_MCUX_IGPIO_4 */
#ifdef CONFIG_GPIO_MCUX_IGPIO_5
static int mcux_igpio_5_init(struct device *dev);
static const struct mcux_igpio_config mcux_igpio_5_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_DT_INST(4),
},
.base = (GPIO_Type *)DT_NXP_IMX_GPIO_GPIO_5_BASE_ADDRESS,
};
static struct mcux_igpio_data mcux_igpio_5_data;
DEVICE_AND_API_INIT(mcux_igpio_5, DT_NXP_IMX_GPIO_GPIO_5_LABEL,
mcux_igpio_5_init,
&mcux_igpio_5_data, &mcux_igpio_5_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&mcux_igpio_driver_api);
static int mcux_igpio_5_init(struct device *dev)
{
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_5_IRQ_0,
DT_NXP_IMX_GPIO_GPIO_5_IRQ_0_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_5), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_5_IRQ_0);
#if defined(DT_NXP_IMX_GPIO_GPIO_5_IRQ_1) && defined(DT_NXP_IMX_GPIO_GPIO_5_IRQ_1_PRIORITY)
IRQ_CONNECT(DT_NXP_IMX_GPIO_GPIO_5_IRQ_1,
DT_NXP_IMX_GPIO_GPIO_5_IRQ_1_PRIORITY,
mcux_igpio_port_isr, DEVICE_GET(mcux_igpio_5), 0);
irq_enable(DT_NXP_IMX_GPIO_GPIO_5_IRQ_1);
#endif
return 0;
}
#endif /* CONFIG_GPIO_MCUX_IGPIO_5 */
DT_INST_FOREACH(MCUX_IGPIO_INIT)