mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-15 19:51:37 +00:00
pinctrl: starfive: Add .get_function ops for the gpio driver
Support getting direction of gpio. Signed-off-by: Hal Feng <hal.feng@starfivetech.com>
This commit is contained in:
parent
bf37dcc538
commit
e403bfb4a2
1 changed files with 16 additions and 0 deletions
|
@ -275,6 +275,21 @@ const struct pinctrl_ops starfive_pinctrl_ops = {
|
|||
.pinconf_set = starfive_pinconf_set,
|
||||
};
|
||||
|
||||
static int starfive_gpio_get_direction(struct udevice *dev, unsigned int off)
|
||||
{
|
||||
struct udevice *pdev = dev->parent;
|
||||
struct starfive_pinctrl_priv *priv = dev_get_priv(pdev);
|
||||
struct starfive_pinctrl_soc_info *info = priv->info;
|
||||
|
||||
unsigned int offset = 4 * (off / 4);
|
||||
unsigned int shift = 8 * (off % 4);
|
||||
u32 doen = readl(priv->base + info->doen_reg_base + offset);
|
||||
|
||||
doen = (doen >> shift) & info->doen_mask;
|
||||
|
||||
return doen == GPOEN_ENABLE ? GPIOF_OUTPUT : GPIOF_INPUT;
|
||||
}
|
||||
|
||||
static int starfive_gpio_direction_input(struct udevice *dev, unsigned int off)
|
||||
{
|
||||
struct udevice *pdev = dev->parent;
|
||||
|
@ -365,6 +380,7 @@ static int starfive_gpio_probe(struct udevice *dev)
|
|||
}
|
||||
|
||||
static const struct dm_gpio_ops starfive_gpio_ops = {
|
||||
.get_function = starfive_gpio_get_direction,
|
||||
.direction_input = starfive_gpio_direction_input,
|
||||
.direction_output = starfive_gpio_direction_output,
|
||||
.get_value = starfive_gpio_get_value,
|
||||
|
|
Loading…
Add table
Reference in a new issue