2023-10-30 15:54:29

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

iWhen ->pin_config_set() is called from the GPIO library (assumed
GpioIo() ACPI resource), the argument can be 1, when, for example,
PullDefault is provided. In such case we supply sane default in
the driver. Move that default assingment to a switch-case, so
it will be consolidated in one place.

Signed-off-by: Andy Shevchenko <[email protected]>
---
drivers/pinctrl/intel/pinctrl-tangier.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/drivers/pinctrl/intel/pinctrl-tangier.c b/drivers/pinctrl/intel/pinctrl-tangier.c
index 007bca1cf224..26e34ec0a972 100644
--- a/drivers/pinctrl/intel/pinctrl-tangier.c
+++ b/drivers/pinctrl/intel/pinctrl-tangier.c
@@ -368,14 +368,11 @@ static int tng_config_set_pin(struct tng_pinctrl *tp, unsigned int pin,
break;

case PIN_CONFIG_BIAS_PULL_UP:
- /* Set default strength value in case none is given */
- if (arg == 1)
- arg = 20000;
-
switch (arg) {
case 50000:
term = BUFCFG_PUPD_VAL_50K;
break;
+ case 1: /* Set default strength value in case none is given */
case 20000:
term = BUFCFG_PUPD_VAL_20K;
break;
@@ -394,14 +391,11 @@ static int tng_config_set_pin(struct tng_pinctrl *tp, unsigned int pin,
break;

case PIN_CONFIG_BIAS_PULL_DOWN:
- /* Set default strength value in case none is given */
- if (arg == 1)
- arg = 20000;
-
switch (arg) {
case 50000:
term = BUFCFG_PUPD_VAL_50K;
break;
+ case 1: /* Set default strength value in case none is given */
case 20000:
term = BUFCFG_PUPD_VAL_20K;
break;
--
2.40.0.1.gaa8946217a0b


2023-10-30 21:14:31

by Raag Jadav

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Mon, Oct 30, 2023 at 05:53:40PM +0200, Andy Shevchenko wrote:
> iWhen ->pin_config_set() is called from the GPIO library (assumed
> GpioIo() ACPI resource), the argument can be 1, when, for example,
> PullDefault is provided. In such case we supply sane default in
> the driver. Move that default assingment to a switch-case, so
> it will be consolidated in one place.

Looks good.

iWhen -> When

Raag

2023-10-31 10:22:59

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Mon, Oct 30, 2023 at 11:14:11PM +0200, Raag Jadav wrote:
> On Mon, Oct 30, 2023 at 05:53:40PM +0200, Andy Shevchenko wrote:
> > iWhen ->pin_config_set() is called from the GPIO library (assumed
> > GpioIo() ACPI resource), the argument can be 1, when, for example,
> > PullDefault is provided. In such case we supply sane default in
> > the driver. Move that default assingment to a switch-case, so
> > it will be consolidated in one place.
>
> Looks good.

Thank you for review. Can you give your Rb tag then?

> iWhen -> When

I'll fix it locally.

--
With Best Regards,
Andy Shevchenko


2023-10-31 13:58:03

by Raag Jadav

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Tue, Oct 31, 2023 at 12:22:47PM +0200, Andy Shevchenko wrote:
> On Mon, Oct 30, 2023 at 11:14:11PM +0200, Raag Jadav wrote:
> > On Mon, Oct 30, 2023 at 05:53:40PM +0200, Andy Shevchenko wrote:
> > > iWhen ->pin_config_set() is called from the GPIO library (assumed
> > > GpioIo() ACPI resource), the argument can be 1, when, for example,
> > > PullDefault is provided. In such case we supply sane default in
> > > the driver. Move that default assingment to a switch-case, so
> > > it will be consolidated in one place.
> >
> > Looks good.
>
> Thank you for review. Can you give your Rb tag then?

Since I'm not a maintainer, I'm not sure if I qualify.
But anyway, here you go.

Reviewed-by: Raag Jadav <[email protected]>

2023-11-01 06:36:14

by Mika Westerberg

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Mon, Oct 30, 2023 at 05:53:40PM +0200, Andy Shevchenko wrote:
> iWhen ->pin_config_set() is called from the GPIO library (assumed
> GpioIo() ACPI resource), the argument can be 1, when, for example,
> PullDefault is provided. In such case we supply sane default in
> the driver. Move that default assingment to a switch-case, so
> it will be consolidated in one place.
>
> Signed-off-by: Andy Shevchenko <[email protected]>
> ---
> drivers/pinctrl/intel/pinctrl-tangier.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/pinctrl/intel/pinctrl-tangier.c b/drivers/pinctrl/intel/pinctrl-tangier.c
> index 007bca1cf224..26e34ec0a972 100644
> --- a/drivers/pinctrl/intel/pinctrl-tangier.c
> +++ b/drivers/pinctrl/intel/pinctrl-tangier.c
> @@ -368,14 +368,11 @@ static int tng_config_set_pin(struct tng_pinctrl *tp, unsigned int pin,
> break;
>
> case PIN_CONFIG_BIAS_PULL_UP:
> - /* Set default strength value in case none is given */
> - if (arg == 1)
> - arg = 20000;
> -
> switch (arg) {
> case 50000:
> term = BUFCFG_PUPD_VAL_50K;
> break;
> + case 1: /* Set default strength value in case none is given */

The comment is good but I think would it make sense to have constant for
this instead?

> case 20000:
> term = BUFCFG_PUPD_VAL_20K;
> break;
> @@ -394,14 +391,11 @@ static int tng_config_set_pin(struct tng_pinctrl *tp, unsigned int pin,
> break;
>
> case PIN_CONFIG_BIAS_PULL_DOWN:
> - /* Set default strength value in case none is given */
> - if (arg == 1)
> - arg = 20000;
> -
> switch (arg) {
> case 50000:
> term = BUFCFG_PUPD_VAL_50K;
> break;
> + case 1: /* Set default strength value in case none is given */
> case 20000:
> term = BUFCFG_PUPD_VAL_20K;
> break;
> --
> 2.40.0.1.gaa8946217a0b

2023-11-01 09:35:31

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Wed, Nov 01, 2023 at 08:35:20AM +0200, Mika Westerberg wrote:
> On Mon, Oct 30, 2023 at 05:53:40PM +0200, Andy Shevchenko wrote:

...

> > + case 1: /* Set default strength value in case none is given */
>
> The comment is good but I think would it make sense to have constant for
> this instead?

If so, it makes sense to get it via entire GPIO library, and not locally for
Intel stuff. That said, I prefer to do that separately. Do you agree?

--
With Best Regards,
Andy Shevchenko


2023-11-01 11:04:20

by Mika Westerberg

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Wed, Nov 01, 2023 at 11:34:58AM +0200, Andy Shevchenko wrote:
> On Wed, Nov 01, 2023 at 08:35:20AM +0200, Mika Westerberg wrote:
> > On Mon, Oct 30, 2023 at 05:53:40PM +0200, Andy Shevchenko wrote:
>
> ...
>
> > > + case 1: /* Set default strength value in case none is given */
> >
> > The comment is good but I think would it make sense to have constant for
> > this instead?
>
> If so, it makes sense to get it via entire GPIO library, and not locally for
> Intel stuff. That said, I prefer to do that separately. Do you agree?

Yes, agree.

2023-11-02 07:37:34

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Mon, Oct 30, 2023 at 4:54 PM Andy Shevchenko
<[email protected]> wrote:

> iWhen ->pin_config_set() is called from the GPIO library (assumed
> GpioIo() ACPI resource), the argument can be 1, when, for example,
> PullDefault is provided. In such case we supply sane default in
> the driver. Move that default assingment to a switch-case, so
> it will be consolidated in one place.
(...)
> + case 1: /* Set default strength value in case none is given */

So where does this 1 come from in the end? That's the piece I
am missing in this explanation. Somewhere, someone decided
to pass 1 to indicate "pull to default resistance".

Is it coming from ACPI firmware?

Then a comment such as "the firmware author chose to pass 1
for default pull" should be added to the constant definition in the
code.

Other than that it looks good!

Yours,
Linus Walleij

2023-11-02 12:39:07

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Thu, Nov 02, 2023 at 02:34:30PM +0200, Andy Shevchenko wrote:
> On Thu, Nov 02, 2023 at 08:36:11AM +0100, Linus Walleij wrote:
> > On Mon, Oct 30, 2023 at 4:54 PM Andy Shevchenko
> > <[email protected]> wrote:

(...)

> > > + case 1: /* Set default strength value in case none is given */
> >
> > So where does this 1 come from in the end? That's the piece I
> > am missing in this explanation. Somewhere, someone decided
> > to pass 1 to indicate "pull to default resistance".
> >
> > Is it coming from ACPI firmware?
>
> No, it's pure Linux kernel decision.
> gpio_set_bias() is who made that. That's why it needs to be chosen on global
> level.
>
> We may even document somewhere that arguments let's say up to 10 do not make
> any sense in real life, as even for 1.2 v it will give 120 mA current on a single
> pin. Yet, theoretically that's possible for discrete industrial GPIOs, so we
> can choose "very big number" if such case appears in the future. I don't want

Just realized that "very big number" is limited to 16-bit value right now and
65 kOhm is quite reasonable value for the pull bias (yet we can use exact
0xffff for the "special" case).

> to change 1 to something else right now as it may break things.
>
> > for default pull" should be added to the constant definition in the
> > code.

--
With Best Regards,
Andy Shevchenko


2023-11-02 12:39:44

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Thu, Nov 02, 2023 at 08:36:11AM +0100, Linus Walleij wrote:
> On Mon, Oct 30, 2023 at 4:54 PM Andy Shevchenko
> <[email protected]> wrote:

(...)

> > + case 1: /* Set default strength value in case none is given */
>
> So where does this 1 come from in the end? That's the piece I
> am missing in this explanation. Somewhere, someone decided
> to pass 1 to indicate "pull to default resistance".
>
> Is it coming from ACPI firmware?

No, it's pure Linux kernel decision.
gpio_set_bias() is who made that. That's why it needs to be chosen on global
level.

We may even document somewhere that arguments let's say up to 10 do not make
any sense in real life, as even for 1.2 v it will give 120 mA current on a single
pin. Yet, theoretically that's possible for discrete industrial GPIOs, so we
can choose "very big number" if such case appears in the future. I don't want
to change 1 to something else right now as it may break things.

> for default pull" should be added to the constant definition in the
> code.

--
With Best Regards,
Andy Shevchenko


2023-11-02 12:57:16

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] pinctrl: tangier: Move default strength assignment to a switch-case

On Thu, Nov 2, 2023 at 1:34 PM Andy Shevchenko
<[email protected]> wrote:
> On Thu, Nov 02, 2023 at 08:36:11AM +0100, Linus Walleij wrote:

> > So where does this 1 come from in the end? That's the piece I
> > am missing in this explanation. Somewhere, someone decided
> > to pass 1 to indicate "pull to default resistance".
> >
> > Is it coming from ACPI firmware?
>
> No, it's pure Linux kernel decision.
> gpio_set_bias() is who made that. That's why it needs to be chosen on global
> level.

Aha I see, that makes sense.
Reviewed-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij