mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
Merge branch 'ib-armada-for-v6.16' into devel
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
commit
8cefeddf9a
|
|
@ -358,9 +358,7 @@ static int armada_37xx_pmx_set_by_name(struct pinctrl_dev *pctldev,
|
|||
|
||||
val = grp->val[func];
|
||||
|
||||
regmap_update_bits(info->regmap, reg, mask, val);
|
||||
|
||||
return 0;
|
||||
return regmap_update_bits(info->regmap, reg, mask, val);
|
||||
}
|
||||
|
||||
static int armada_37xx_pmx_set(struct pinctrl_dev *pctldev,
|
||||
|
|
@ -402,10 +400,13 @@ static int armada_37xx_gpio_get_direction(struct gpio_chip *chip,
|
|||
struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
|
||||
unsigned int reg = OUTPUT_EN;
|
||||
unsigned int val, mask;
|
||||
int ret;
|
||||
|
||||
armada_37xx_update_reg(®, &offset);
|
||||
mask = BIT(offset);
|
||||
regmap_read(info->regmap, reg, &val);
|
||||
ret = regmap_read(info->regmap, reg, &val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (val & mask)
|
||||
return GPIO_LINE_DIRECTION_OUT;
|
||||
|
|
@ -417,19 +418,22 @@ static int armada_37xx_gpio_direction_output(struct gpio_chip *chip,
|
|||
unsigned int offset, int value)
|
||||
{
|
||||
struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
|
||||
unsigned int reg = OUTPUT_EN;
|
||||
unsigned int en_offset = offset;
|
||||
unsigned int reg = OUTPUT_VAL;
|
||||
unsigned int mask, val, ret;
|
||||
|
||||
armada_37xx_update_reg(®, &offset);
|
||||
mask = BIT(offset);
|
||||
val = value ? mask : 0;
|
||||
|
||||
ret = regmap_update_bits(info->regmap, reg, mask, mask);
|
||||
ret = regmap_update_bits(info->regmap, reg, mask, val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
reg = OUTPUT_VAL;
|
||||
val = value ? mask : 0;
|
||||
return regmap_update_bits(info->regmap, reg, mask, val);
|
||||
reg = OUTPUT_EN;
|
||||
armada_37xx_update_reg(®, &en_offset);
|
||||
|
||||
return regmap_update_bits(info->regmap, reg, mask, mask);
|
||||
}
|
||||
|
||||
static int armada_37xx_gpio_get(struct gpio_chip *chip, unsigned int offset)
|
||||
|
|
@ -437,11 +441,14 @@ static int armada_37xx_gpio_get(struct gpio_chip *chip, unsigned int offset)
|
|||
struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
|
||||
unsigned int reg = INPUT_VAL;
|
||||
unsigned int val, mask;
|
||||
int ret;
|
||||
|
||||
armada_37xx_update_reg(®, &offset);
|
||||
mask = BIT(offset);
|
||||
|
||||
regmap_read(info->regmap, reg, &val);
|
||||
ret = regmap_read(info->regmap, reg, &val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return (val & mask) != 0;
|
||||
}
|
||||
|
|
@ -466,16 +473,17 @@ static int armada_37xx_pmx_gpio_set_direction(struct pinctrl_dev *pctldev,
|
|||
{
|
||||
struct armada_37xx_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
|
||||
struct gpio_chip *chip = range->gc;
|
||||
int ret;
|
||||
|
||||
dev_dbg(info->dev, "gpio_direction for pin %u as %s-%d to %s\n",
|
||||
offset, range->name, offset, input ? "input" : "output");
|
||||
|
||||
if (input)
|
||||
armada_37xx_gpio_direction_input(chip, offset);
|
||||
ret = armada_37xx_gpio_direction_input(chip, offset);
|
||||
else
|
||||
armada_37xx_gpio_direction_output(chip, offset, 0);
|
||||
ret = armada_37xx_gpio_direction_output(chip, offset, 0);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int armada_37xx_gpio_request_enable(struct pinctrl_dev *pctldev,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user