drivers: gpio: stellaris: convert to DT_INST defines

Convert driver to use DT_INST_ defines.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
Kumar Gala 2020-02-14 11:41:28 -06:00 committed by Kumar Gala
commit 9213024696
6 changed files with 60 additions and 305 deletions

View file

@ -8,4 +8,8 @@ config BUILD_OUTPUT_BIN
config BOARD
default "qemu_cortex_m3"
config GPIO_STELLARIS
default y
depends on GPIO
endif # BOARD_QEMU_CORTEX_M3

View file

@ -9,6 +9,7 @@ toolchain:
- xtools
supported:
- netif:serial-net
- gpio
ram: 64
flash: 256
testing:

View file

@ -9,5 +9,3 @@ CONFIG_SERIAL=y
CONFIG_CORTEX_M_SYSTICK=y
CONFIG_UART_STELLARIS=y
CONFIG_SCHED_MULTIQ=y
CONFIG_GPIO=y
CONFIG_GPIO_STELLARIS=y

View file

@ -3,41 +3,9 @@
# Copyright (c) 2018 Zilogic Systems
# SPDX-License-Identifier: Apache-2.0
menuconfig GPIO_STELLARIS
config GPIO_STELLARIS
bool "TI Stellaris GPIO Driver"
depends on SOC_TI_LM3S6965
select HAS_DTS_GPIO
help
Enable support for the Stellaris GPIO controllers.
if GPIO_STELLARIS
config GPIO_A_STELLARIS
bool "Enable GPIO port A support"
default y
config GPIO_B_STELLARIS
bool "Enable GPIO port B support"
default y
config GPIO_C_STELLARIS
bool "Enable GPIO port C support"
default y
config GPIO_D_STELLARIS
bool "Enable GPIO port D support"
default y
config GPIO_E_STELLARIS
bool "Enable GPIO port E support"
default y
config GPIO_F_STELLARIS
bool "Enable GPIO port F support"
default y
config GPIO_G_STELLARIS
bool "Enable GPIO port G support"
default y
endif

View file

@ -55,16 +55,6 @@ enum gpio_regs {
GPIO_ICR_OFFSET = 0x41C,
};
enum gpio_port_map {
GPIO_PORT_A_MAP = 0xFF,
GPIO_PORT_B_MAP = 0xFF,
GPIO_PORT_C_MAP = 0xFF,
GPIO_PORT_D_MAP = 0xFF,
GPIO_PORT_E_MAP = 0x0F,
GPIO_PORT_F_MAP = 0x0F,
GPIO_PORT_G_MAP = 0x03,
};
static void gpio_stellaris_isr(void *arg)
{
struct device *dev = (struct device *)arg;
@ -263,236 +253,65 @@ static const struct gpio_driver_api gpio_stellaris_driver_api = {
.disable_callback = gpio_stellaris_disable_callback,
};
#ifdef CONFIG_GPIO_A_STELLARIS
#define PORT_PIN_MASK(n) \
GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_## n ##_TI_STELLARIS_GPIO_NGPIOS)
static void port_a_stellaris_config_func(struct device *dev);
#define STELLARIS_GPIO_DEVICE(n) \
static void port_## n ##_stellaris_config_func(struct device *dev); \
\
static struct gpio_stellaris_runtime port_## n ##_stellaris_runtime; \
\
static const struct gpio_stellaris_config gpio_stellaris_port_## n ##_config = {\
.common = { \
.port_pin_mask = PORT_PIN_MASK(n), \
}, \
.base = DT_INST_## n ##_TI_STELLARIS_GPIO_BASE_ADDRESS, \
.port_map = BIT_MASK(DT_INST_## n ##_TI_STELLARIS_GPIO_NGPIOS), \
.config_func = port_## n ##_stellaris_config_func, \
}; \
\
DEVICE_AND_API_INIT(gpio_stellaris_port_## n, \
DT_INST_## n ## _TI_STELLARIS_GPIO_LABEL, \
gpio_stellaris_init, \
&port_## n ##_stellaris_runtime, \
&gpio_stellaris_port_## n ##_config, \
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \
&gpio_stellaris_driver_api); \
\
static void port_## n ##_stellaris_config_func(struct device *dev) \
{ \
IRQ_CONNECT(DT_INST_## n ##_TI_STELLARIS_GPIO_IRQ_0, \
DT_INST_## n ##_TI_STELLARIS_GPIO_IRQ_0_PRIORITY, \
gpio_stellaris_isr, \
DEVICE_GET(gpio_stellaris_port_## n), 0); \
\
irq_enable(DT_INST_## n ##_TI_STELLARIS_GPIO_IRQ_0); \
}
static struct gpio_stellaris_runtime port_a_stellaris_runtime;
#ifdef DT_INST_0_TI_STELLARIS_GPIO
STELLARIS_GPIO_DEVICE(0)
#endif
static const struct gpio_stellaris_config gpio_stellaris_port_a_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_0_TI_STELLARIS_GPIO_NGPIOS),
},
.base = DT_GPIO_A_BASE_ADDRESS,
.port_map = GPIO_PORT_A_MAP,
.config_func = port_a_stellaris_config_func,
};
#ifdef DT_INST_1_TI_STELLARIS_GPIO
STELLARIS_GPIO_DEVICE(1)
#endif
DEVICE_AND_API_INIT(gpio_stellaris_port_a, DT_GPIO_A_LABEL,
gpio_stellaris_init,
&port_a_stellaris_runtime, &gpio_stellaris_port_a_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&gpio_stellaris_driver_api);
#ifdef DT_INST_2_TI_STELLARIS_GPIO
STELLARIS_GPIO_DEVICE(2)
#endif
static void port_a_stellaris_config_func(struct device *dev)
{
IRQ_CONNECT(DT_GPIO_A_IRQ,
DT_GPIO_A_IRQ_PRIO,
gpio_stellaris_isr,
DEVICE_GET(gpio_stellaris_port_a),
0);
#ifdef DT_INST_3_TI_STELLARIS_GPIO
STELLARIS_GPIO_DEVICE(3)
#endif
irq_enable(DT_GPIO_A_IRQ);
}
#endif /* CONFIG_GPIO_A_STELLARIS */
#ifdef DT_INST_4_TI_STELLARIS_GPIO
STELLARIS_GPIO_DEVICE(4)
#endif
#ifdef DT_INST_5_TI_STELLARIS_GPIO
STELLARIS_GPIO_DEVICE(5)
#endif
#ifdef CONFIG_GPIO_B_STELLARIS
static void port_b_stellaris_config_func(struct device *dev);
static struct gpio_stellaris_runtime port_b_stellaris_runtime;
static const struct gpio_stellaris_config gpio_stellaris_port_b_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_1_TI_STELLARIS_GPIO_NGPIOS),
},
.base = DT_GPIO_B_BASE_ADDRESS,
.port_map = GPIO_PORT_B_MAP,
.config_func = port_b_stellaris_config_func,
};
DEVICE_AND_API_INIT(gpio_stellaris_port_b, DT_GPIO_B_LABEL,
gpio_stellaris_init,
&port_b_stellaris_runtime, &gpio_stellaris_port_b_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&gpio_stellaris_driver_api);
static void port_b_stellaris_config_func(struct device *dev)
{
IRQ_CONNECT(DT_GPIO_B_IRQ,
DT_GPIO_B_IRQ_PRIO,
gpio_stellaris_isr,
DEVICE_GET(gpio_stellaris_port_b),
0);
irq_enable(DT_GPIO_B_IRQ);
}
#endif /* CONFIG_GPIO_B_STELLARIS */
#ifdef CONFIG_GPIO_C_STELLARIS
static void port_c_stellaris_config_func(struct device *dev);
static struct gpio_stellaris_runtime port_c_stellaris_runtime;
static const struct gpio_stellaris_config gpio_stellaris_port_c_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_2_TI_STELLARIS_GPIO_NGPIOS),
},
.base = DT_GPIO_C_BASE_ADDRESS,
.port_map = GPIO_PORT_C_MAP,
.config_func = port_c_stellaris_config_func,
};
DEVICE_AND_API_INIT(gpio_stellaris_port_c, DT_GPIO_C_LABEL,
gpio_stellaris_init,
&port_c_stellaris_runtime, &gpio_stellaris_port_c_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&gpio_stellaris_driver_api);
static void port_c_stellaris_config_func(struct device *dev)
{
IRQ_CONNECT(DT_GPIO_C_IRQ,
DT_GPIO_C_IRQ_PRIO,
gpio_stellaris_isr,
DEVICE_GET(gpio_stellaris_port_c),
0);
irq_enable(DT_GPIO_C_IRQ);
}
#endif /* CONFIG_GPIO_C_STELLARIS */
#ifdef CONFIG_GPIO_D_STELLARIS
static void port_d_stellaris_config_func(struct device *dev);
static struct gpio_stellaris_runtime port_d_stellaris_runtime;
static const struct gpio_stellaris_config gpio_stellaris_port_d_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_3_TI_STELLARIS_GPIO_NGPIOS),
},
.base = DT_GPIO_D_BASE_ADDRESS,
.port_map = GPIO_PORT_D_MAP,
.config_func = port_d_stellaris_config_func,
};
DEVICE_AND_API_INIT(gpio_stellaris_port_d, DT_GPIO_D_LABEL,
gpio_stellaris_init,
&port_d_stellaris_runtime, &gpio_stellaris_port_d_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&gpio_stellaris_driver_api);
static void port_d_stellaris_config_func(struct device *dev)
{
IRQ_CONNECT(DT_GPIO_D_IRQ,
DT_GPIO_D_IRQ_PRIO,
gpio_stellaris_isr,
DEVICE_GET(gpio_stellaris_port_d), 0);
irq_enable(DT_GPIO_D_IRQ);
}
#endif /* CONFIG_GPIO_D_STELLARIS */
#ifdef CONFIG_GPIO_E_STELLARIS
static void port_e_stellaris_config_func(struct device *dev);
static const struct gpio_stellaris_config gpio_stellaris_port_e_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_4_TI_STELLARIS_GPIO_NGPIOS),
},
.base = DT_GPIO_E_BASE_ADDRESS,
.port_map = GPIO_PORT_E_MAP,
.config_func = port_e_stellaris_config_func,
};
static struct gpio_stellaris_runtime port_e_stellaris_runtime;
DEVICE_AND_API_INIT(gpio_stellaris_port_e, DT_GPIO_E_LABEL,
gpio_stellaris_init,
&port_e_stellaris_runtime, &gpio_stellaris_port_e_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&gpio_stellaris_driver_api);
static void port_e_stellaris_config_func(struct device *dev)
{
IRQ_CONNECT(DT_GPIO_E_IRQ,
DT_GPIO_E_IRQ_PRIO,
gpio_stellaris_isr,
DEVICE_GET(gpio_stellaris_port_e),
0);
irq_enable(DT_GPIO_E_IRQ);
}
#endif /* CONFIG_GPIO_E_STELLARIS */
#ifdef CONFIG_GPIO_F_STELLARIS
static void port_f_stellaris_config_func(struct device *dev);
static struct gpio_stellaris_runtime port_f_stellaris_runtime;
static const struct gpio_stellaris_config gpio_stellaris_port_f_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_5_TI_STELLARIS_GPIO_NGPIOS),
},
.base = DT_GPIO_F_BASE_ADDRESS,
.port_map = GPIO_PORT_F_MAP,
.config_func = port_f_stellaris_config_func,
};
DEVICE_AND_API_INIT(gpio_stellaris_port_f, DT_GPIO_F_LABEL,
gpio_stellaris_init,
&port_f_stellaris_runtime, &gpio_stellaris_port_f_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&gpio_stellaris_driver_api);
static void port_f_stellaris_config_func(struct device *dev)
{
IRQ_CONNECT(DT_GPIO_F_IRQ,
DT_GPIO_F_IRQ_PRIO,
gpio_stellaris_isr,
DEVICE_GET(gpio_stellaris_port_f),
0);
irq_enable(DT_GPIO_F_IRQ);
}
#endif /* CONFIG_GPIO_F_STELLARIS */
#ifdef CONFIG_GPIO_G_STELLARIS
static void port_g_stellaris_config_func(struct device *dev);
static struct gpio_stellaris_runtime port_g_stellaris_runtime;
static const struct gpio_stellaris_config gpio_stellaris_port_g_config = {
.common = {
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_6_TI_STELLARIS_GPIO_NGPIOS),
},
.base = DT_GPIO_G_BASE_ADDRESS,
.port_map = GPIO_PORT_G_MAP,
.config_func = port_g_stellaris_config_func,
};
DEVICE_AND_API_INIT(gpio_stellaris_port_g, DT_GPIO_G_LABEL,
gpio_stellaris_init,
&port_g_stellaris_runtime, &gpio_stellaris_port_g_config,
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
&gpio_stellaris_driver_api);
static void port_g_stellaris_config_func(struct device *dev)
{
IRQ_CONNECT(DT_GPIO_G_IRQ,
DT_GPIO_G_IRQ_PRIO,
gpio_stellaris_isr,
DEVICE_GET(gpio_stellaris_port_g),
0);
irq_enable(DT_GPIO_G_IRQ);
}
#endif /* CONFIG_GPIO_G_STELLARIS */
#ifdef DT_INST_6_TI_STELLARIS_GPIO
STELLARIS_GPIO_DEVICE(6)
#endif

View file

@ -4,39 +4,4 @@
#define DT_NUM_IRQ_PRIO_BITS DT_ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
#define DT_GPIO_A_BASE_ADDRESS DT_TI_STELLARIS_GPIO_40004000_BASE_ADDRESS
#define DT_GPIO_A_LABEL DT_TI_STELLARIS_GPIO_40004000_LABEL
#define DT_GPIO_A_IRQ DT_TI_STELLARIS_GPIO_40004000_IRQ_0
#define DT_GPIO_A_IRQ_PRIO DT_TI_STELLARIS_GPIO_40004000_IRQ_0_PRIORITY
#define DT_GPIO_B_BASE_ADDRESS DT_TI_STELLARIS_GPIO_40005000_BASE_ADDRESS
#define DT_GPIO_B_LABEL DT_TI_STELLARIS_GPIO_40005000_LABEL
#define DT_GPIO_B_IRQ DT_TI_STELLARIS_GPIO_40005000_IRQ_0
#define DT_GPIO_B_IRQ_PRIO DT_TI_STELLARIS_GPIO_40005000_IRQ_0_PRIORITY
#define DT_GPIO_C_BASE_ADDRESS DT_TI_STELLARIS_GPIO_40006000_BASE_ADDRESS
#define DT_GPIO_C_LABEL DT_TI_STELLARIS_GPIO_40006000_LABEL
#define DT_GPIO_C_IRQ DT_TI_STELLARIS_GPIO_40006000_IRQ_0
#define DT_GPIO_C_IRQ_PRIO DT_TI_STELLARIS_GPIO_40006000_IRQ_0_PRIORITY
#define DT_GPIO_D_BASE_ADDRESS DT_TI_STELLARIS_GPIO_40007000_BASE_ADDRESS
#define DT_GPIO_D_LABEL DT_TI_STELLARIS_GPIO_40007000_LABEL
#define DT_GPIO_D_IRQ DT_TI_STELLARIS_GPIO_40007000_IRQ_0
#define DT_GPIO_D_IRQ_PRIO DT_TI_STELLARIS_GPIO_40007000_IRQ_0_PRIORITY
#define DT_GPIO_E_BASE_ADDRESS DT_TI_STELLARIS_GPIO_40024000_BASE_ADDRESS
#define DT_GPIO_E_LABEL DT_TI_STELLARIS_GPIO_40024000_LABEL
#define DT_GPIO_E_IRQ DT_TI_STELLARIS_GPIO_40024000_IRQ_0
#define DT_GPIO_E_IRQ_PRIO DT_TI_STELLARIS_GPIO_40024000_IRQ_0_PRIORITY
#define DT_GPIO_F_BASE_ADDRESS DT_TI_STELLARIS_GPIO_40025000_BASE_ADDRESS
#define DT_GPIO_F_LABEL DT_TI_STELLARIS_GPIO_40025000_LABEL
#define DT_GPIO_F_IRQ DT_TI_STELLARIS_GPIO_40025000_IRQ_0
#define DT_GPIO_F_IRQ_PRIO DT_TI_STELLARIS_GPIO_40025000_IRQ_0_PRIORITY
#define DT_GPIO_G_BASE_ADDRESS DT_TI_STELLARIS_GPIO_40026000_BASE_ADDRESS
#define DT_GPIO_G_LABEL DT_TI_STELLARIS_GPIO_40026000_LABEL
#define DT_GPIO_G_IRQ DT_TI_STELLARIS_GPIO_40026000_IRQ_0
#define DT_GPIO_G_IRQ_PRIO DT_TI_STELLARIS_GPIO_40026000_IRQ_0_PRIORITY
/* End of SoC Level DTS fixup file */