Skip to content

Commit da4b8ec

Browse files
TallplayLinkartben
authored andcommitted
drivers: gpio: Support gpio_pin_get_config_dt
Add CONFIG_GPIO_GET_CONFIG feature to gpio_cmsdk_ahb.c Signed-off-by: Tallplay Lin <tlin@atmosic.com>
1 parent 7368758 commit da4b8ec

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

drivers/gpio/gpio_cmsdk_ahb.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/*
22
* Copyright (c) 2016 Linaro Limited.
3+
* Copyright (c) 2025 Atmosic
34
*
45
* SPDX-License-Identifier: Apache-2.0
56
*/
@@ -134,6 +135,23 @@ int cmsdk_ahb_gpio_config(const struct device *dev, uint32_t mask, gpio_flags_t
134135
return 0;
135136
}
136137

138+
#ifdef CONFIG_GPIO_GET_CONFIG
139+
static int gpio_cmsdk_ahb_get_config(const struct device *dev, gpio_pin_t pin, gpio_flags_t *flags)
140+
{
141+
const struct gpio_cmsdk_ahb_cfg *const cfg = dev->config;
142+
143+
uint32_t mask = BIT(pin);
144+
145+
*flags = GPIO_DISCONNECTED;
146+
147+
if (cfg->port->outenableset & mask) {
148+
*flags |= (cfg->port->dataout & mask) ? GPIO_OUTPUT_HIGH : GPIO_OUTPUT_LOW;
149+
}
150+
151+
return 0;
152+
}
153+
#endif /* CONFIG_GPIO_GET_CONFIG */
154+
137155
/**
138156
* @brief Configure pin or port
139157
*
@@ -217,6 +235,9 @@ static int gpio_cmsdk_ahb_manage_callback(const struct device *dev,
217235

218236
static DEVICE_API(gpio, gpio_cmsdk_ahb_drv_api_funcs) = {
219237
.pin_configure = gpio_cmsdk_ahb_config,
238+
#ifdef CONFIG_GPIO_GET_CONFIG
239+
.pin_get_config = gpio_cmsdk_ahb_get_config,
240+
#endif
220241
.port_get_raw = gpio_cmsdk_ahb_port_get_raw,
221242
.port_set_masked_raw = gpio_cmsdk_ahb_port_set_masked_raw,
222243
.port_set_bits_raw = gpio_cmsdk_ahb_port_set_bits_raw,

0 commit comments

Comments
 (0)