diff mbox series

gpio: regmap: fix direction register check

Message ID 20210302180621.12301-1-noltari@gmail.com
State New
Headers show
Series gpio: regmap: fix direction register check | expand

Commit Message

Álvaro Fernández Rojas March 2, 2021, 6:06 p.m. UTC
If there's a direction register, we should also have dat or set registers.
However, we only need one of them, not both.

Fixes: ebe363197e52 ("gpio: add a reusable generic gpio_chip using regmap")
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 drivers/gpio/gpio-regmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Michael Walle March 2, 2021, 6:16 p.m. UTC | #1
Am 2021-03-02 19:06, schrieb Álvaro Fernández Rojas:
> If there's a direction register, we should also have dat or set 
> registers.
> However, we only need one of them, not both.

Can you give some more context or an example? If there is a direction
register, we'd need to set and get the value, no?

-michael

> Fixes: ebe363197e52 ("gpio: add a reusable generic gpio_chip using 
> regmap")
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
>  drivers/gpio/gpio-regmap.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c
> index 23b0a8572f53..5a9fca00b5e8 100644
> --- a/drivers/gpio/gpio-regmap.c
> +++ b/drivers/gpio/gpio-regmap.c
> @@ -194,7 +194,7 @@ struct gpio_regmap *gpio_regmap_register(const
> struct gpio_regmap_config *config
> 
>  	/* if we have a direction register we need both input and output */
>  	if ((config->reg_dir_out_base || config->reg_dir_in_base) &&
> -	    (!config->reg_dat_base || !config->reg_set_base))
> +	    (!config->reg_dat_base && !config->reg_set_base))
>  		return ERR_PTR(-EINVAL);
> 
>  	/* we don't support having both registers simultaneously for now */
Álvaro Fernández Rojas March 2, 2021, 6:21 p.m. UTC | #2
Hi Michael,

El 02/03/2021 a las 19:16, Michael Walle escribió:
> Am 2021-03-02 19:06, schrieb Álvaro Fernández Rojas:
>> If there's a direction register, we should also have dat or set 
>> registers.
>> However, we only need one of them, not both.
> 
> Can you give some more context or an example? If there is a direction
> register, we'd need to set and get the value, no?

I've just realized that I need to set reg_set_base to the same value as 
reg_dat_base in my case.
Please, ignore this patch and excuse me :$.

> 
> -michael
> 
>> Fixes: ebe363197e52 ("gpio: add a reusable generic gpio_chip using 
>> regmap")
>> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
>> ---
>>  drivers/gpio/gpio-regmap.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c
>> index 23b0a8572f53..5a9fca00b5e8 100644
>> --- a/drivers/gpio/gpio-regmap.c
>> +++ b/drivers/gpio/gpio-regmap.c
>> @@ -194,7 +194,7 @@ struct gpio_regmap *gpio_regmap_register(const
>> struct gpio_regmap_config *config
>>
>>      /* if we have a direction register we need both input and output */
>>      if ((config->reg_dir_out_base || config->reg_dir_in_base) &&
>> -        (!config->reg_dat_base || !config->reg_set_base))
>> +        (!config->reg_dat_base && !config->reg_set_base))
>>          return ERR_PTR(-EINVAL);
>>
>>      /* we don't support having both registers simultaneously for now */
diff mbox series

Patch

diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c
index 23b0a8572f53..5a9fca00b5e8 100644
--- a/drivers/gpio/gpio-regmap.c
+++ b/drivers/gpio/gpio-regmap.c
@@ -194,7 +194,7 @@  struct gpio_regmap *gpio_regmap_register(const struct gpio_regmap_config *config
 
 	/* if we have a direction register we need both input and output */
 	if ((config->reg_dir_out_base || config->reg_dir_in_base) &&
-	    (!config->reg_dat_base || !config->reg_set_base))
+	    (!config->reg_dat_base && !config->reg_set_base))
 		return ERR_PTR(-EINVAL);
 
 	/* we don't support having both registers simultaneously for now */