From 50129f8dd705e7f3bd49f43fb49ddc4d1ac71f54 Mon Sep 17 00:00:00 2001 From: Kumar Gala Date: Tue, 14 Apr 2020 10:38:37 -0500 Subject: [PATCH] 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 --- boards/arm/mimxrt1010_evk/Kconfig.defconfig | 10 - boards/arm/mimxrt1015_evk/Kconfig.defconfig | 10 - boards/arm/mimxrt1020_evk/Kconfig.defconfig | 10 - boards/arm/mimxrt1050_evk/Kconfig.defconfig | 19 -- boards/arm/mimxrt1060_evk/Kconfig.defconfig | 10 - boards/arm/mimxrt1064_evk/Kconfig.defconfig | 10 - boards/arm/mm_swiftio/Kconfig.defconfig | 19 -- drivers/gpio/Kconfig.mcux_igpio | 31 +-- drivers/gpio/gpio_mcux_igpio.c | 226 ++++---------------- 9 files changed, 40 insertions(+), 305 deletions(-) diff --git a/boards/arm/mimxrt1010_evk/Kconfig.defconfig b/boards/arm/mimxrt1010_evk/Kconfig.defconfig index de4c2a794ef..1d73b839168 100644 --- a/boards/arm/mimxrt1010_evk/Kconfig.defconfig +++ b/boards/arm/mimxrt1010_evk/Kconfig.defconfig @@ -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 diff --git a/boards/arm/mimxrt1015_evk/Kconfig.defconfig b/boards/arm/mimxrt1015_evk/Kconfig.defconfig index af2033a7439..b7655d39614 100644 --- a/boards/arm/mimxrt1015_evk/Kconfig.defconfig +++ b/boards/arm/mimxrt1015_evk/Kconfig.defconfig @@ -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 diff --git a/boards/arm/mimxrt1020_evk/Kconfig.defconfig b/boards/arm/mimxrt1020_evk/Kconfig.defconfig index 05d9a2feaa9..ea7fcafc255 100644 --- a/boards/arm/mimxrt1020_evk/Kconfig.defconfig +++ b/boards/arm/mimxrt1020_evk/Kconfig.defconfig @@ -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 diff --git a/boards/arm/mimxrt1050_evk/Kconfig.defconfig b/boards/arm/mimxrt1050_evk/Kconfig.defconfig index 9763200fef4..458f387c679 100644 --- a/boards/arm/mimxrt1050_evk/Kconfig.defconfig +++ b/boards/arm/mimxrt1050_evk/Kconfig.defconfig @@ -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 diff --git a/boards/arm/mimxrt1060_evk/Kconfig.defconfig b/boards/arm/mimxrt1060_evk/Kconfig.defconfig index a5dc2a83199..f205d5bebf3 100644 --- a/boards/arm/mimxrt1060_evk/Kconfig.defconfig +++ b/boards/arm/mimxrt1060_evk/Kconfig.defconfig @@ -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 diff --git a/boards/arm/mimxrt1064_evk/Kconfig.defconfig b/boards/arm/mimxrt1064_evk/Kconfig.defconfig index 8d0c9736e29..a92d9a3a647 100644 --- a/boards/arm/mimxrt1064_evk/Kconfig.defconfig +++ b/boards/arm/mimxrt1064_evk/Kconfig.defconfig @@ -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 diff --git a/boards/arm/mm_swiftio/Kconfig.defconfig b/boards/arm/mm_swiftio/Kconfig.defconfig index 652ab3fe4be..6c7cbae278f 100644 --- a/boards/arm/mm_swiftio/Kconfig.defconfig +++ b/boards/arm/mm_swiftio/Kconfig.defconfig @@ -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 diff --git a/drivers/gpio/Kconfig.mcux_igpio b/drivers/gpio/Kconfig.mcux_igpio index 2de2dcd4cfc..efb6e7d339f 100644 --- a/drivers/gpio/Kconfig.mcux_igpio +++ b/drivers/gpio/Kconfig.mcux_igpio @@ -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 diff --git a/drivers/gpio/gpio_mcux_igpio.c b/drivers/gpio/gpio_mcux_igpio.c index 8e0332b33b0..b3d94d3a466 100644 --- a/drivers/gpio/gpio_mcux_igpio.c +++ b/drivers/gpio/gpio_mcux_igpio.c @@ -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)