diff options
| author | Svyatoslav Ryhel <[email protected]> | 2025-04-11 08:49:12 +0300 |
|---|---|---|
| committer | Svyatoslav Ryhel <[email protected]> | 2025-05-08 08:30:53 +0300 |
| commit | a87b564018ac3a2beb460439ba002e4c0cb59998 (patch) | |
| tree | c17ad715c627366733acc74dd1eebda57c870de9 | |
| parent | 48db49b0977cc1c9c9abf82c0fb704238fcef4fd (diff) | |
gpio: tegra_gpio: implement rfree operation
Releasing a GPIO on Tegra necessitates changing its configuration to SFIO
to activate its special function. Without this reconfiguration, the special
function will be unavailable.
Signed-off-by: Svyatoslav Ryhel <[email protected]>
| -rw-r--r-- | drivers/gpio/tegra_gpio.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpio/tegra_gpio.c b/drivers/gpio/tegra_gpio.c index b83df351e74..3d1e18854f2 100644 --- a/drivers/gpio/tegra_gpio.c +++ b/drivers/gpio/tegra_gpio.c @@ -248,6 +248,16 @@ static int tegra_gpio_xlate(struct udevice *dev, struct gpio_desc *desc, return 0; } +static int tegra_gpio_rfree(struct udevice *dev, unsigned int offset) +{ + struct tegra_port_info *state = dev_get_priv(dev); + + /* Set the pin as a SFIO */ + set_config(state->base_gpio + offset, CFG_SFIO); + + return 0; +} + static const struct dm_gpio_ops gpio_tegra_ops = { .direction_input = tegra_gpio_direction_input, .direction_output = tegra_gpio_direction_output, @@ -255,6 +265,7 @@ static const struct dm_gpio_ops gpio_tegra_ops = { .set_value = tegra_gpio_set_value, .get_function = tegra_gpio_get_function, .xlate = tegra_gpio_xlate, + .rfree = tegra_gpio_rfree, }; /* |
