mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 07:00:48 +00:00
gpio: regmap: Always set gpio_chip get_direction
If you only have reg_dat_base set, then it is input-only; if you only have reg_set_base set, then it is output-only. Thus, we can always set gpio_chip get_direction to gpio_regmap_get_direction and return GPIO_LINE_DIRECTION_IN/GPIO_LINE_DIRECTION_OUT given the respective register base addresses configuration. Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Michael Walle <michael@walle.cc> Signed-off-by: William Breathitt Gray <william.gray@linaro.org> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
parent
9eeaa60ead
commit
8978277c22
@ -111,6 +111,11 @@ static int gpio_regmap_get_direction(struct gpio_chip *chip,
|
||||
unsigned int base, val, reg, mask;
|
||||
int invert, ret;
|
||||
|
||||
if (gpio->reg_dat_base && !gpio->reg_set_base)
|
||||
return GPIO_LINE_DIRECTION_IN;
|
||||
if (gpio->reg_set_base && !gpio->reg_dat_base)
|
||||
return GPIO_LINE_DIRECTION_OUT;
|
||||
|
||||
if (gpio->reg_dir_out_base) {
|
||||
base = gpio_regmap_addr(gpio->reg_dir_out_base);
|
||||
invert = 0;
|
||||
@ -265,8 +270,8 @@ struct gpio_regmap *gpio_regmap_register(const struct gpio_regmap_config *config
|
||||
else if (gpio->reg_set_base)
|
||||
chip->set = gpio_regmap_set;
|
||||
|
||||
chip->get_direction = gpio_regmap_get_direction;
|
||||
if (gpio->reg_dir_in_base || gpio->reg_dir_out_base) {
|
||||
chip->get_direction = gpio_regmap_get_direction;
|
||||
chip->direction_input = gpio_regmap_direction_input;
|
||||
chip->direction_output = gpio_regmap_direction_output;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user