diff mbox series

gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input

Message ID 20190309151853.3140-1-axel.lin@ingics.com
State New
Headers show
Series gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input | expand

Commit Message

Axel Lin March 9, 2019, 3:18 p.m. UTC
Current code test wrong value so it does not verify if the written
data is correctly read back. Fix it.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
BTW, I'm wondering why it needs to read back the written vlaue for double
checking if write is success or not.
Without any comment, it looks like a leftover of testing code.
Does it make sense to remove the read after write?

 drivers/gpio/gpio-adnp.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Thierry Reding March 11, 2019, 10:28 a.m. UTC | #1
On Sat, Mar 09, 2019 at 11:18:53PM +0800, Axel Lin wrote:
> Current code test wrong value so it does not verify if the written
> data is correctly read back. Fix it.
> 
> Signed-off-by: Axel Lin <axel.lin@ingics.com>
> ---
> BTW, I'm wondering why it needs to read back the written vlaue for double
> checking if write is success or not.
> Without any comment, it looks like a leftover of testing code.
> Does it make sense to remove the read after write?

The purpose of this was to support read-only and write-only pins in the
controller. The controller would not allow a bit to be set (or cleared)
if the pin was read- or write-only. And yes, that would've probably
deserved a comment.

>  drivers/gpio/gpio-adnp.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpio/gpio-adnp.c b/drivers/gpio/gpio-adnp.c
> index 91b90c0cea73..d334dc302dac 100644
> --- a/drivers/gpio/gpio-adnp.c
> +++ b/drivers/gpio/gpio-adnp.c
> @@ -132,8 +132,10 @@ static int adnp_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
>  	if (err < 0)
>  		goto out;
>  
> -	if (err & BIT(pos))
> +	if (value & BIT(pos)) {
>  		err = -EACCES;
> +		goto out;
> +	}

Perhaps while at it also make this return -EPERM just like it done for
adnp_gpio_direction_output()?

With that:

Reviewed-by: Thierry Reding <thierry.reding@gmail.com>
diff mbox series

Patch

diff --git a/drivers/gpio/gpio-adnp.c b/drivers/gpio/gpio-adnp.c
index 91b90c0cea73..d334dc302dac 100644
--- a/drivers/gpio/gpio-adnp.c
+++ b/drivers/gpio/gpio-adnp.c
@@ -132,8 +132,10 @@  static int adnp_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
 	if (err < 0)
 		goto out;
 
-	if (err & BIT(pos))
+	if (value & BIT(pos)) {
 		err = -EACCES;
+		goto out;
+	}
 
 	err = 0;