diff mbox series

[v2,3/3] gpio: intel_gpio: Fix register/bit offsets intel_gpio_get_value()

Message ID 20200203103806.29445-4-wolfgang.wallner@br-automation.com
State Superseded
Headers show
Series gpio: intel_gpio: Fix Intel gpio driver | expand

Commit Message

Wolfgang Wallner Feb. 3, 2020, 10:38 a.m. UTC
Fix the following in intel_gpio_get_value():

 * The value of the register is contained in the variable 'reg', not in
   'mode'. The variable 'mode' contains only the configuration whether
   the gpio is currently an input or an output.

 * The correct bitmasks for the input and output value are
   PAD_CFG0_RX_STATE and PAD_CFG0_TX_STATE.
   Use them instead of the currently used PAD_CFG0_RX_STATE_BIT and
   PAD_CFG0_TX_STATE_BIT.

Signed-off-by: Wolfgang Wallner <wolfgang.wallner at br-automation.com>
Reviewed-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>

---

Changes in v2: None

 drivers/gpio/intel_gpio.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Andy Shevchenko Feb. 3, 2020, 12:34 p.m. UTC | #1
On Mon, Feb 3, 2020 at 12:38 PM Wolfgang Wallner
<wolfgang.wallner at br-automation.com> wrote:
>
> Fix the following in intel_gpio_get_value():
>
>  * The value of the register is contained in the variable 'reg', not in
>    'mode'. The variable 'mode' contains only the configuration whether
>    the gpio is currently an input or an output.
>
>  * The correct bitmasks for the input and output value are
>    PAD_CFG0_RX_STATE and PAD_CFG0_TX_STATE.
>    Use them instead of the currently used PAD_CFG0_RX_STATE_BIT and
>    PAD_CFG0_TX_STATE_BIT.

...

>         if (!mode) {
>                 rx_tx = reg & (PAD_CFG0_TX_DISABLE | PAD_CFG0_RX_DISABLE);
>                 if (rx_tx == PAD_CFG0_TX_DISABLE)
> -                       return mode & PAD_CFG0_RX_STATE_BIT ? 1 : 0;
> +                       return reg & PAD_CFG0_RX_STATE ? 1 : 0;

Is it style of U-Boot? Because
return !!(...); will have same effect while consuming less characters.

>                 else if (rx_tx == PAD_CFG0_RX_DISABLE)

'else' is redundant here

> -                       return mode & PAD_CFG0_TX_STATE_BIT ? 1 : 0;
> +                       return reg & PAD_CFG0_TX_STATE ? 1 : 0;
>         }
Bin Meng Feb. 4, 2020, 2:58 a.m. UTC | #2
Hi Andy,

On Mon, Feb 3, 2020 at 8:34 PM Andy Shevchenko
<andy.shevchenko at gmail.com> wrote:
>
> On Mon, Feb 3, 2020 at 12:38 PM Wolfgang Wallner
> <wolfgang.wallner at br-automation.com> wrote:
> >
> > Fix the following in intel_gpio_get_value():
> >
> >  * The value of the register is contained in the variable 'reg', not in
> >    'mode'. The variable 'mode' contains only the configuration whether
> >    the gpio is currently an input or an output.
> >
> >  * The correct bitmasks for the input and output value are
> >    PAD_CFG0_RX_STATE and PAD_CFG0_TX_STATE.
> >    Use them instead of the currently used PAD_CFG0_RX_STATE_BIT and
> >    PAD_CFG0_TX_STATE_BIT.
>
> ...
>
> >         if (!mode) {
> >                 rx_tx = reg & (PAD_CFG0_TX_DISABLE | PAD_CFG0_RX_DISABLE);
> >                 if (rx_tx == PAD_CFG0_TX_DISABLE)
> > -                       return mode & PAD_CFG0_RX_STATE_BIT ? 1 : 0;
> > +                       return reg & PAD_CFG0_RX_STATE ? 1 : 0;
>
> Is it style of U-Boot? Because
> return !!(...); will have same effect while consuming less characters.

checkpatch does not complain, so I assume it is okay for U-Boot.

>
> >                 else if (rx_tx == PAD_CFG0_RX_DISABLE)
>
> 'else' is redundant here
>
> > -                       return mode & PAD_CFG0_TX_STATE_BIT ? 1 : 0;
> > +                       return reg & PAD_CFG0_TX_STATE ? 1 : 0;
> >         }
>
>
> --

Regards,
Bin
Bin Meng Feb. 4, 2020, 2:59 a.m. UTC | #3
On Mon, Feb 3, 2020 at 6:38 PM Wolfgang Wallner
<wolfgang.wallner at br-automation.com> wrote:
>
> Fix the following in intel_gpio_get_value():
>
>  * The value of the register is contained in the variable 'reg', not in
>    'mode'. The variable 'mode' contains only the configuration whether
>    the gpio is currently an input or an output.
>
>  * The correct bitmasks for the input and output value are
>    PAD_CFG0_RX_STATE and PAD_CFG0_TX_STATE.
>    Use them instead of the currently used PAD_CFG0_RX_STATE_BIT and
>    PAD_CFG0_TX_STATE_BIT.
>
> Signed-off-by: Wolfgang Wallner <wolfgang.wallner at br-automation.com>
> Reviewed-by: Simon Glass <sjg at chromium.org>
> Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
>
> ---
>
> Changes in v2: None
>
>  drivers/gpio/intel_gpio.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>

applied to u-boot-x86, thanks!
diff mbox series

Patch

diff --git a/drivers/gpio/intel_gpio.c b/drivers/gpio/intel_gpio.c
index be91626cc5..67b8b80b9d 100644
--- a/drivers/gpio/intel_gpio.c
+++ b/drivers/gpio/intel_gpio.c
@@ -59,9 +59,9 @@  static int intel_gpio_get_value(struct udevice *dev, uint offset)
 	if (!mode) {
 		rx_tx = reg & (PAD_CFG0_TX_DISABLE | PAD_CFG0_RX_DISABLE);
 		if (rx_tx == PAD_CFG0_TX_DISABLE)
-			return mode & PAD_CFG0_RX_STATE_BIT ? 1 : 0;
+			return reg & PAD_CFG0_RX_STATE ? 1 : 0;
 		else if (rx_tx == PAD_CFG0_RX_DISABLE)
-			return mode & PAD_CFG0_TX_STATE_BIT ? 1 : 0;
+			return reg & PAD_CFG0_TX_STATE ? 1 : 0;
 	}
 
 	return 0;