drivers: gpio: cmsdk_ahb: Convert driver to be full DTS based
Convert driver to utilize the new DT_INST macros completely and remove associated Kconfig symbols that now come from devicetree. Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
parent
8945f69b40
commit
1951c79db4
12 changed files with 41 additions and 340 deletions
|
@ -269,146 +269,44 @@ static int gpio_cmsdk_ahb_init(struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Port 0 */
|
||||
#ifdef CONFIG_GPIO_CMSDK_AHB_PORT0
|
||||
static void gpio_cmsdk_ahb_config_0(struct device *dev);
|
||||
#define PORT_PIN_MASK(n) \
|
||||
GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_PROP(n, ngpios))
|
||||
|
||||
static const struct gpio_cmsdk_ahb_cfg gpio_cmsdk_ahb_0_cfg = {
|
||||
.common = {
|
||||
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_PROP(0, ngpios)),
|
||||
},
|
||||
.port = ((volatile struct gpio_cmsdk_ahb *)DT_CMSDK_AHB_GPIO0),
|
||||
.gpio_config_func = gpio_cmsdk_ahb_config_0,
|
||||
.gpio_cc_as = {.bus = CMSDK_AHB, .state = SOC_ACTIVE,
|
||||
.device = DT_CMSDK_AHB_GPIO0,},
|
||||
.gpio_cc_ss = {.bus = CMSDK_AHB, .state = SOC_SLEEP,
|
||||
.device = DT_CMSDK_AHB_GPIO0,},
|
||||
.gpio_cc_dss = {.bus = CMSDK_AHB, .state = SOC_DEEPSLEEP,
|
||||
.device = DT_CMSDK_AHB_GPIO0,},
|
||||
};
|
||||
#define CMSDK_AHB_GPIO_DEVICE(n) \
|
||||
static void gpio_cmsdk_port_##n##_config_func(struct device *dev); \
|
||||
\
|
||||
static const struct gpio_cmsdk_ahb_cfg gpio_cmsdk_port_##n##_config = { \
|
||||
.common = { \
|
||||
.port_pin_mask = PORT_PIN_MASK(n), \
|
||||
}, \
|
||||
.port = ((volatile struct gpio_cmsdk_ahb *)DT_INST_REG_ADDR(n)),\
|
||||
.gpio_config_func = gpio_cmsdk_port_##n##_config_func, \
|
||||
.gpio_cc_as = {.bus = CMSDK_AHB, .state = SOC_ACTIVE, \
|
||||
.device = DT_INST_REG_ADDR(n),}, \
|
||||
.gpio_cc_ss = {.bus = CMSDK_AHB, .state = SOC_SLEEP, \
|
||||
.device = DT_INST_REG_ADDR(n),}, \
|
||||
.gpio_cc_dss = {.bus = CMSDK_AHB, .state = SOC_DEEPSLEEP, \
|
||||
.device = DT_INST_REG_ADDR(n),}, \
|
||||
}; \
|
||||
\
|
||||
static struct gpio_cmsdk_ahb_dev_data gpio_cmsdk_port_##n##_data; \
|
||||
\
|
||||
DEVICE_AND_API_INIT(gpio_cmsdk_port_## n, \
|
||||
DT_INST_LABEL(n), \
|
||||
gpio_cmsdk_ahb_init, \
|
||||
&gpio_cmsdk_port_##n##_data, \
|
||||
&gpio_cmsdk_port_## n ##_config, \
|
||||
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \
|
||||
&gpio_cmsdk_ahb_drv_api_funcs); \
|
||||
\
|
||||
static void gpio_cmsdk_port_##n##_config_func(struct device *dev) \
|
||||
{ \
|
||||
IRQ_CONNECT(DT_INST_IRQN(n), \
|
||||
DT_INST_IRQ(n, priority), \
|
||||
gpio_cmsdk_ahb_isr, \
|
||||
DEVICE_GET(gpio_cmsdk_port_## n), 0); \
|
||||
\
|
||||
irq_enable(DT_INST_IRQN(n)); \
|
||||
}
|
||||
|
||||
static struct gpio_cmsdk_ahb_dev_data gpio_cmsdk_ahb_0_data;
|
||||
|
||||
DEVICE_AND_API_INIT(gpio_cmsdk_ahb_0,
|
||||
CONFIG_GPIO_CMSDK_AHB_PORT0_DEV_NAME,
|
||||
gpio_cmsdk_ahb_init, &gpio_cmsdk_ahb_0_data,
|
||||
&gpio_cmsdk_ahb_0_cfg, POST_KERNEL,
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
&gpio_cmsdk_ahb_drv_api_funcs);
|
||||
|
||||
static void gpio_cmsdk_ahb_config_0(struct device *dev)
|
||||
{
|
||||
IRQ_CONNECT(DT_IRQ_PORT0_ALL, CONFIG_GPIO_CMSDK_AHB_PORT0_IRQ_PRI,
|
||||
gpio_cmsdk_ahb_isr,
|
||||
DEVICE_GET(gpio_cmsdk_ahb_0), 0);
|
||||
irq_enable(DT_IRQ_PORT0_ALL);
|
||||
}
|
||||
#endif /* CONFIG_GPIO_CMSDK_AHB_PORT0 */
|
||||
|
||||
/* Port 1 */
|
||||
#ifdef CONFIG_GPIO_CMSDK_AHB_PORT1
|
||||
static void gpio_cmsdk_ahb_config_1(struct device *dev);
|
||||
|
||||
static const struct gpio_cmsdk_ahb_cfg gpio_cmsdk_ahb_1_cfg = {
|
||||
.common = {
|
||||
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_PROP(1, ngpios)),
|
||||
},
|
||||
.port = ((volatile struct gpio_cmsdk_ahb *)DT_CMSDK_AHB_GPIO1),
|
||||
.gpio_config_func = gpio_cmsdk_ahb_config_1,
|
||||
.gpio_cc_as = {.bus = CMSDK_AHB, .state = SOC_ACTIVE,
|
||||
.device = DT_CMSDK_AHB_GPIO1,},
|
||||
.gpio_cc_ss = {.bus = CMSDK_AHB, .state = SOC_SLEEP,
|
||||
.device = DT_CMSDK_AHB_GPIO1,},
|
||||
.gpio_cc_dss = {.bus = CMSDK_AHB, .state = SOC_DEEPSLEEP,
|
||||
.device = DT_CMSDK_AHB_GPIO1,},
|
||||
};
|
||||
|
||||
static struct gpio_cmsdk_ahb_dev_data gpio_cmsdk_ahb_1_data;
|
||||
|
||||
DEVICE_AND_API_INIT(gpio_cmsdk_ahb_1,
|
||||
CONFIG_GPIO_CMSDK_AHB_PORT1_DEV_NAME,
|
||||
gpio_cmsdk_ahb_init, &gpio_cmsdk_ahb_1_data,
|
||||
&gpio_cmsdk_ahb_1_cfg, POST_KERNEL,
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
&gpio_cmsdk_ahb_drv_api_funcs);
|
||||
|
||||
static void gpio_cmsdk_ahb_config_1(struct device *dev)
|
||||
{
|
||||
IRQ_CONNECT(DT_IRQ_PORT1_ALL, CONFIG_GPIO_CMSDK_AHB_PORT1_IRQ_PRI,
|
||||
gpio_cmsdk_ahb_isr,
|
||||
DEVICE_GET(gpio_cmsdk_ahb_1), 0);
|
||||
irq_enable(DT_IRQ_PORT1_ALL);
|
||||
}
|
||||
#endif /* CONFIG_GPIO_CMSDK_AHB_PORT1 */
|
||||
|
||||
/* Port 2 */
|
||||
#ifdef CONFIG_GPIO_CMSDK_AHB_PORT2
|
||||
static void gpio_cmsdk_ahb_config_2(struct device *dev);
|
||||
|
||||
static const struct gpio_cmsdk_ahb_cfg gpio_cmsdk_ahb_2_cfg = {
|
||||
.common = {
|
||||
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_PROP(2, ngpios)),
|
||||
},
|
||||
.port = ((volatile struct gpio_cmsdk_ahb *)DT_CMSDK_AHB_GPIO2),
|
||||
.gpio_config_func = gpio_cmsdk_ahb_config_2,
|
||||
.gpio_cc_as = {.bus = CMSDK_AHB, .state = SOC_ACTIVE,
|
||||
.device = DT_CMSDK_AHB_GPIO2,},
|
||||
.gpio_cc_ss = {.bus = CMSDK_AHB, .state = SOC_SLEEP,
|
||||
.device = DT_CMSDK_AHB_GPIO2,},
|
||||
.gpio_cc_dss = {.bus = CMSDK_AHB, .state = SOC_DEEPSLEEP,
|
||||
.device = DT_CMSDK_AHB_GPIO2,},
|
||||
};
|
||||
|
||||
static struct gpio_cmsdk_ahb_dev_data gpio_cmsdk_ahb_2_data;
|
||||
|
||||
DEVICE_AND_API_INIT(gpio_cmsdk_ahb_2,
|
||||
CONFIG_GPIO_CMSDK_AHB_PORT2_DEV_NAME,
|
||||
gpio_cmsdk_ahb_init, &gpio_cmsdk_ahb_2_data,
|
||||
&gpio_cmsdk_ahb_2_cfg, POST_KERNEL,
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
&gpio_cmsdk_ahb_drv_api_funcs);
|
||||
|
||||
static void gpio_cmsdk_ahb_config_2(struct device *dev)
|
||||
{
|
||||
IRQ_CONNECT(DT_IRQ_PORT2_ALL, CONFIG_GPIO_CMSDK_AHB_PORT2_IRQ_PRI,
|
||||
gpio_cmsdk_ahb_isr,
|
||||
DEVICE_GET(gpio_cmsdk_ahb_2), 0);
|
||||
irq_enable(DT_IRQ_PORT2_ALL);
|
||||
}
|
||||
#endif /* CONFIG_GPIO_CMSDK_AHB_PORT2 */
|
||||
|
||||
/* Port 3 */
|
||||
#ifdef CONFIG_GPIO_CMSDK_AHB_PORT3
|
||||
static void gpio_cmsdk_ahb_config_3(struct device *dev);
|
||||
|
||||
static const struct gpio_cmsdk_ahb_cfg gpio_cmsdk_ahb_3_cfg = {
|
||||
.common = {
|
||||
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_PROP(3, ngpios)),
|
||||
},
|
||||
.port = ((volatile struct gpio_cmsdk_ahb *)DT_CMSDK_AHB_GPIO3),
|
||||
.gpio_config_func = gpio_cmsdk_ahb_config_3,
|
||||
.gpio_cc_as = {.bus = CMSDK_AHB, .state = SOC_ACTIVE,
|
||||
.device = DT_CMSDK_AHB_GPIO3,},
|
||||
.gpio_cc_ss = {.bus = CMSDK_AHB, .state = SOC_SLEEP,
|
||||
.device = DT_CMSDK_AHB_GPIO3,},
|
||||
.gpio_cc_dss = {.bus = CMSDK_AHB, .state = SOC_DEEPSLEEP,
|
||||
.device = DT_CMSDK_AHB_GPIO3,},
|
||||
};
|
||||
|
||||
static struct gpio_cmsdk_ahb_dev_data gpio_cmsdk_ahb_3_data;
|
||||
|
||||
DEVICE_AND_API_INIT(gpio_cmsdk_ahb_3,
|
||||
CONFIG_GPIO_CMSDK_AHB_PORT3_DEV_NAME,
|
||||
gpio_cmsdk_ahb_init, &gpio_cmsdk_ahb_3_data,
|
||||
&gpio_cmsdk_ahb_3_cfg, POST_KERNEL,
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
&gpio_cmsdk_ahb_drv_api_funcs);
|
||||
|
||||
static void gpio_cmsdk_ahb_config_3(struct device *dev)
|
||||
{
|
||||
IRQ_CONNECT(DT_IRQ_PORT3_ALL, CONFIG_GPIO_CMSDK_AHB_PORT3_IRQ_PRI,
|
||||
gpio_cmsdk_ahb_isr,
|
||||
DEVICE_GET(gpio_cmsdk_ahb_3), 0);
|
||||
irq_enable(DT_IRQ_PORT3_ALL);
|
||||
}
|
||||
#endif /* CONFIG_GPIO_CMSDK_AHB_PORT3 */
|
||||
DT_INST_FOREACH(CMSDK_AHB_GPIO_DEVICE)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue