|
1 | 1 | /*
|
2 | 2 | * Copyright (c) 2016 Linaro Limited.
|
| 3 | + * Copyright (c) 2025 Atmosic |
3 | 4 | *
|
4 | 5 | * SPDX-License-Identifier: Apache-2.0
|
5 | 6 | */
|
@@ -134,6 +135,23 @@ int cmsdk_ahb_gpio_config(const struct device *dev, uint32_t mask, gpio_flags_t
|
134 | 135 | return 0;
|
135 | 136 | }
|
136 | 137 |
|
| 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 | + |
137 | 155 | /**
|
138 | 156 | * @brief Configure pin or port
|
139 | 157 | *
|
@@ -217,6 +235,9 @@ static int gpio_cmsdk_ahb_manage_callback(const struct device *dev,
|
217 | 235 |
|
218 | 236 | static DEVICE_API(gpio, gpio_cmsdk_ahb_drv_api_funcs) = {
|
219 | 237 | .pin_configure = gpio_cmsdk_ahb_config,
|
| 238 | +#ifdef CONFIG_GPIO_GET_CONFIG |
| 239 | + .pin_get_config = gpio_cmsdk_ahb_get_config, |
| 240 | +#endif |
220 | 241 | .port_get_raw = gpio_cmsdk_ahb_port_get_raw,
|
221 | 242 | .port_set_masked_raw = gpio_cmsdk_ahb_port_set_masked_raw,
|
222 | 243 | .port_set_bits_raw = gpio_cmsdk_ahb_port_set_bits_raw,
|
|
0 commit comments