All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional
@ 2023-02-01 21:53 Dmitry Torokhov
  2023-02-01 21:53 ` [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property Dmitry Torokhov
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Dmitry Torokhov @ 2023-02-01 21:53 UTC (permalink / raw)
  To: Wei Fang, Jakub Kicinski, Andrew Lunn
  Cc: Arnd Bergmann, Shenwei Wang, Clark Wang, NXP Linux Team,
	David S. Miller, Eric Dumazet, Paolo Abeni, Marc Kleine-Budde,
	netdev, linux-kernel

Conversion of the driver to gpiod API done in 468ba54bd616 ("fec:
convert to gpio descriptor") incorrectly made reset line mandatory and
resulted in aborting driver probe in cases where reset line was not
specified (note: this way of specifying PHY reset line is actually
deprecated).

Switch to using devm_gpiod_get_optional() and skip manipulating reset
line if it can not be located.

Fixes: 468ba54bd616 ("fec: convert to gpio descriptor")
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---

v3: removed handling of 'phy-reset-active-high', it was moved to patch #2
v2: dropped conversion to generic device properties from the patch

 drivers/net/ethernet/freescale/fec_main.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 2716898e0b9b..00115b55d0ff 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -4056,12 +4056,15 @@ static int fec_reset_phy(struct platform_device *pdev)
 
 	active_high = of_property_read_bool(np, "phy-reset-active-high");
 
-	phy_reset = devm_gpiod_get(&pdev->dev, "phy-reset",
+	phy_reset = devm_gpiod_get_optional(&pdev->dev, "phy-reset",
 			active_high ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW);
 	if (IS_ERR(phy_reset))
 		return dev_err_probe(&pdev->dev, PTR_ERR(phy_reset),
 				     "failed to get phy-reset-gpios\n");
 
+	if (!phy_reset)
+		return 0;
+
 	if (msec > 20)
 		msleep(msec);
 	else
-- 
2.39.1.456.gfc5497dd1b-goog


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property
  2023-02-01 21:53 [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional Dmitry Torokhov
@ 2023-02-01 21:53 ` Dmitry Torokhov
  2023-02-01 22:54   ` Andrew Lunn
  2023-02-01 21:58 ` [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional Andrew Lunn
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Dmitry Torokhov @ 2023-02-01 21:53 UTC (permalink / raw)
  To: Wei Fang, Jakub Kicinski, Andrew Lunn
  Cc: Arnd Bergmann, Shenwei Wang, Clark Wang, NXP Linux Team,
	David S. Miller, Eric Dumazet, Paolo Abeni, Marc Kleine-Budde,
	netdev, linux-kernel

Conversion to gpiod API done in commit 468ba54bd616 ("fec: convert
to gpio descriptor") clashed with gpiolib applying the same quirk to the
reset GPIO polarity (introduced in commit b02c85c9458c). This results in
the reset line being left active/device being left in reset state when
reset line is "active low".

Remove handling of 'phy-reset-active-high' property from the driver and
rely on gpiolib to apply needed adjustments to avoid ending up with the
double inversion/flipped logic.

Fixes: 468ba54bd616 ("fec: convert to gpio descriptor")
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---

v3: new patch, split from the original one

 drivers/net/ethernet/freescale/fec_main.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 00115b55d0ff..c73e25f8995e 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -4036,7 +4036,6 @@ static int fec_enet_init(struct net_device *ndev)
 static int fec_reset_phy(struct platform_device *pdev)
 {
 	struct gpio_desc *phy_reset;
-	bool active_high = false;
 	int msec = 1, phy_post_delay = 0;
 	struct device_node *np = pdev->dev.of_node;
 	int err;
@@ -4054,10 +4053,8 @@ static int fec_reset_phy(struct platform_device *pdev)
 	if (!err && phy_post_delay > 1000)
 		return -EINVAL;
 
-	active_high = of_property_read_bool(np, "phy-reset-active-high");
-
 	phy_reset = devm_gpiod_get_optional(&pdev->dev, "phy-reset",
-			active_high ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW);
+					    GPIOD_OUT_HIGH);
 	if (IS_ERR(phy_reset))
 		return dev_err_probe(&pdev->dev, PTR_ERR(phy_reset),
 				     "failed to get phy-reset-gpios\n");
@@ -4070,7 +4067,7 @@ static int fec_reset_phy(struct platform_device *pdev)
 	else
 		usleep_range(msec * 1000, msec * 1000 + 1000);
 
-	gpiod_set_value_cansleep(phy_reset, !active_high);
+	gpiod_set_value_cansleep(phy_reset, 0);
 
 	if (!phy_post_delay)
 		return 0;
-- 
2.39.1.456.gfc5497dd1b-goog


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional
  2023-02-01 21:53 [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional Dmitry Torokhov
  2023-02-01 21:53 ` [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property Dmitry Torokhov
@ 2023-02-01 21:58 ` Andrew Lunn
  2023-02-02  9:45 ` Marc Kleine-Budde
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Andrew Lunn @ 2023-02-01 21:58 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Wei Fang, Jakub Kicinski, Arnd Bergmann, Shenwei Wang,
	Clark Wang, NXP Linux Team, David S. Miller, Eric Dumazet,
	Paolo Abeni, Marc Kleine-Budde, netdev, linux-kernel

On Wed, Feb 01, 2023 at 01:53:19PM -0800, Dmitry Torokhov wrote:
> Conversion of the driver to gpiod API done in 468ba54bd616 ("fec:
> convert to gpio descriptor") incorrectly made reset line mandatory and
> resulted in aborting driver probe in cases where reset line was not
> specified (note: this way of specifying PHY reset line is actually
> deprecated).
> 
> Switch to using devm_gpiod_get_optional() and skip manipulating reset
> line if it can not be located.
> 
> Fixes: 468ba54bd616 ("fec: convert to gpio descriptor")
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property
  2023-02-01 21:53 ` [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property Dmitry Torokhov
@ 2023-02-01 22:54   ` Andrew Lunn
  2023-02-01 23:21     ` Dmitry Torokhov
  0 siblings, 1 reply; 10+ messages in thread
From: Andrew Lunn @ 2023-02-01 22:54 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Wei Fang, Jakub Kicinski, Arnd Bergmann, Shenwei Wang,
	Clark Wang, NXP Linux Team, David S. Miller, Eric Dumazet,
	Paolo Abeni, Marc Kleine-Budde, netdev, linux-kernel

On Wed, Feb 01, 2023 at 01:53:20PM -0800, Dmitry Torokhov wrote:
> Conversion to gpiod API done in commit 468ba54bd616 ("fec: convert
> to gpio descriptor") clashed with gpiolib applying the same quirk to the
> reset GPIO polarity (introduced in commit b02c85c9458c). This results in
> the reset line being left active/device being left in reset state when
> reset line is "active low".
> 
> Remove handling of 'phy-reset-active-high' property from the driver and
> rely on gpiolib to apply needed adjustments to avoid ending up with the
> double inversion/flipped logic.

I searched the in tree DT files from 4.7 to 6.0. None use
phy-reset-active-high. I'm don't think it has ever had an in tree
user.

This property was marked deprecated Jul 18 2019. So i suggest we
completely drop it.

	   Andrew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property
  2023-02-01 22:54   ` Andrew Lunn
@ 2023-02-01 23:21     ` Dmitry Torokhov
  2023-02-02  1:08       ` Dmitry Torokhov
  0 siblings, 1 reply; 10+ messages in thread
From: Dmitry Torokhov @ 2023-02-01 23:21 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Wei Fang, Jakub Kicinski, Arnd Bergmann, Shenwei Wang,
	Clark Wang, NXP Linux Team, David S. Miller, Eric Dumazet,
	Paolo Abeni, Marc Kleine-Budde, netdev, linux-kernel

On Wed, Feb 01, 2023 at 11:54:02PM +0100, Andrew Lunn wrote:
> On Wed, Feb 01, 2023 at 01:53:20PM -0800, Dmitry Torokhov wrote:
> > Conversion to gpiod API done in commit 468ba54bd616 ("fec: convert
> > to gpio descriptor") clashed with gpiolib applying the same quirk to the
> > reset GPIO polarity (introduced in commit b02c85c9458c). This results in
> > the reset line being left active/device being left in reset state when
> > reset line is "active low".
> > 
> > Remove handling of 'phy-reset-active-high' property from the driver and
> > rely on gpiolib to apply needed adjustments to avoid ending up with the
> > double inversion/flipped logic.
> 
> I searched the in tree DT files from 4.7 to 6.0. None use
> phy-reset-active-high. I'm don't think it has ever had an in tree
> user.
> 
> This property was marked deprecated Jul 18 2019. So i suggest we
> completely drop it.

I'd be happy kill the quirk in gpiolibi-of.c if that is what we want to
do, although DT people sometimes are pretty touchy about keeping
backward compatibility.

I believe this should not stop us from merging this patch though, as the
code is currently broken when this deprecated property is not present.

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property
  2023-02-01 23:21     ` Dmitry Torokhov
@ 2023-02-02  1:08       ` Dmitry Torokhov
  2023-02-02 13:21         ` Andrew Lunn
  0 siblings, 1 reply; 10+ messages in thread
From: Dmitry Torokhov @ 2023-02-02  1:08 UTC (permalink / raw)
  To: Andrew Lunn, Bernhard Walle
  Cc: Wei Fang, Jakub Kicinski, Arnd Bergmann, Shenwei Wang,
	Clark Wang, NXP Linux Team, David S. Miller, Eric Dumazet,
	Paolo Abeni, Marc Kleine-Budde, netdev, linux-kernel

On Wed, Feb 01, 2023 at 03:21:53PM -0800, Dmitry Torokhov wrote:
> On Wed, Feb 01, 2023 at 11:54:02PM +0100, Andrew Lunn wrote:
> > On Wed, Feb 01, 2023 at 01:53:20PM -0800, Dmitry Torokhov wrote:
> > > Conversion to gpiod API done in commit 468ba54bd616 ("fec: convert
> > > to gpio descriptor") clashed with gpiolib applying the same quirk to the
> > > reset GPIO polarity (introduced in commit b02c85c9458c). This results in
> > > the reset line being left active/device being left in reset state when
> > > reset line is "active low".
> > > 
> > > Remove handling of 'phy-reset-active-high' property from the driver and
> > > rely on gpiolib to apply needed adjustments to avoid ending up with the
> > > double inversion/flipped logic.
> > 
> > I searched the in tree DT files from 4.7 to 6.0. None use
> > phy-reset-active-high. I'm don't think it has ever had an in tree
> > user.

FTR I believe this was added in 4.6-rc1 (as 'phy-reset-active-low' in
first iteration by Bernhard Walle (CCed), so maybe he can tell us a bit
more about hardware and where it is still in service and whether this
quirk is still relevant.

> > 
> > This property was marked deprecated Jul 18 2019. So i suggest we
> > completely drop it.
> 
> I'd be happy kill the quirk in gpiolibi-of.c if that is what we want to
> do, although DT people sometimes are pretty touchy about keeping
> backward compatibility.
> 
> I believe this should not stop us from merging this patch though, as the
> code is currently broken when this deprecated property is not present.
> 
> Thanks.
> 
> -- 
> Dmitry

-- 
Dmitry

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional
  2023-02-01 21:53 [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional Dmitry Torokhov
  2023-02-01 21:53 ` [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property Dmitry Torokhov
  2023-02-01 21:58 ` [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional Andrew Lunn
@ 2023-02-02  9:45 ` Marc Kleine-Budde
  2023-02-02  9:47 ` Arnd Bergmann
  2023-02-03  5:30 ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 10+ messages in thread
From: Marc Kleine-Budde @ 2023-02-02  9:45 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Wei Fang, Jakub Kicinski, Andrew Lunn, Arnd Bergmann,
	Shenwei Wang, Clark Wang, NXP Linux Team, David S. Miller,
	Eric Dumazet, Paolo Abeni, netdev, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 969 bytes --]

On 01.02.2023 13:53:19, Dmitry Torokhov wrote:
> Conversion of the driver to gpiod API done in 468ba54bd616 ("fec:
> convert to gpio descriptor") incorrectly made reset line mandatory and
> resulted in aborting driver probe in cases where reset line was not
> specified (note: this way of specifying PHY reset line is actually
> deprecated).
> 
> Switch to using devm_gpiod_get_optional() and skip manipulating reset
> line if it can not be located.
> 
> Fixes: 468ba54bd616 ("fec: convert to gpio descriptor")
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Reported-by: Marc Kleine-Budde <mkl@pengutronix.de>
Tested-by: Marc Kleine-Budde <mkl@pengutronix.de>

Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde           |
Embedded Linux                   | https://www.pengutronix.de  |
Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional
  2023-02-01 21:53 [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional Dmitry Torokhov
                   ` (2 preceding siblings ...)
  2023-02-02  9:45 ` Marc Kleine-Budde
@ 2023-02-02  9:47 ` Arnd Bergmann
  2023-02-03  5:30 ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 10+ messages in thread
From: Arnd Bergmann @ 2023-02-02  9:47 UTC (permalink / raw)
  To: Dmitry Torokhov, Wei Fang, Jakub Kicinski, Andrew Lunn
  Cc: Shenwei Wang, Clark Wang, NXP Linux Team, David S . Miller,
	Eric Dumazet, Paolo Abeni, Marc Kleine-Budde, Netdev,
	linux-kernel

On Wed, Feb 1, 2023, at 22:53, Dmitry Torokhov wrote:
> Conversion of the driver to gpiod API done in 468ba54bd616 ("fec:
> convert to gpio descriptor") incorrectly made reset line mandatory and
> resulted in aborting driver probe in cases where reset line was not
> specified (note: this way of specifying PHY reset line is actually
> deprecated).
>
> Switch to using devm_gpiod_get_optional() and skip manipulating reset
> line if it can not be located.
>
> Fixes: 468ba54bd616 ("fec: convert to gpio descriptor")
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
>
> v3: removed handling of 'phy-reset-active-high', it was moved to patch #2
> v2: dropped conversion to generic device properties from the patch

Thanks for fixing it,

Reviewed-by: Arnd Bergmann <arnd@arndb.de>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property
  2023-02-02  1:08       ` Dmitry Torokhov
@ 2023-02-02 13:21         ` Andrew Lunn
  0 siblings, 0 replies; 10+ messages in thread
From: Andrew Lunn @ 2023-02-02 13:21 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Bernhard Walle, Wei Fang, Jakub Kicinski, Arnd Bergmann,
	Shenwei Wang, Clark Wang, NXP Linux Team, David S. Miller,
	Eric Dumazet, Paolo Abeni, Marc Kleine-Budde, netdev,
	linux-kernel

On Wed, Feb 01, 2023 at 05:08:05PM -0800, Dmitry Torokhov wrote:
> On Wed, Feb 01, 2023 at 03:21:53PM -0800, Dmitry Torokhov wrote:
> > On Wed, Feb 01, 2023 at 11:54:02PM +0100, Andrew Lunn wrote:
> > > On Wed, Feb 01, 2023 at 01:53:20PM -0800, Dmitry Torokhov wrote:
> > > > Conversion to gpiod API done in commit 468ba54bd616 ("fec: convert
> > > > to gpio descriptor") clashed with gpiolib applying the same quirk to the
> > > > reset GPIO polarity (introduced in commit b02c85c9458c). This results in
> > > > the reset line being left active/device being left in reset state when
> > > > reset line is "active low".
> > > > 
> > > > Remove handling of 'phy-reset-active-high' property from the driver and
> > > > rely on gpiolib to apply needed adjustments to avoid ending up with the
> > > > double inversion/flipped logic.
> > > 
> > > I searched the in tree DT files from 4.7 to 6.0. None use
> > > phy-reset-active-high. I'm don't think it has ever had an in tree
> > > user.
> 
> FTR I believe this was added in 4.6-rc1 (as 'phy-reset-active-low' in
> first iteration by Bernhard Walle (CCed), so maybe he can tell us a bit
> more about hardware and where it is still in service and whether this
> quirk is still relevant.
> 
> > > 
> > > This property was marked deprecated Jul 18 2019. So i suggest we
> > > completely drop it.
> > 
> > I'd be happy kill the quirk in gpiolibi-of.c if that is what we want to
> > do, although DT people sometimes are pretty touchy about keeping
> > backward compatibility.

Generally, that is for in kernel users. When a new feature is added,
you are also supposed to add an in kernel user. I could of missed it
in my search, but i didn't find an in-kernel user. If there is one,
then we should keep it. Otherwise, i would remove it.

> > I believe this should not stop us from merging this patch though, as the
> > code is currently broken when this deprecated property is not present.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional
  2023-02-01 21:53 [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional Dmitry Torokhov
                   ` (3 preceding siblings ...)
  2023-02-02  9:47 ` Arnd Bergmann
@ 2023-02-03  5:30 ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 10+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-02-03  5:30 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: wei.fang, kuba, andrew, arnd, shenwei.wang, xiaoning.wang,
	linux-imx, davem, edumazet, pabeni, mkl, netdev, linux-kernel

Hello:

This series was applied to netdev/net-next.git (master)
by Jakub Kicinski <kuba@kernel.org>:

On Wed,  1 Feb 2023 13:53:19 -0800 you wrote:
> Conversion of the driver to gpiod API done in 468ba54bd616 ("fec:
> convert to gpio descriptor") incorrectly made reset line mandatory and
> resulted in aborting driver probe in cases where reset line was not
> specified (note: this way of specifying PHY reset line is actually
> deprecated).
> 
> Switch to using devm_gpiod_get_optional() and skip manipulating reset
> line if it can not be located.
> 
> [...]

Here is the summary with links:
  - [v3,1/2] net: fec: restore handling of PHY reset line as optional
    https://git.kernel.org/netdev/net-next/c/d7b5e5dd6694
  - [v3,2/2] net: fec: do not double-parse 'phy-reset-active-high' property
    https://git.kernel.org/netdev/net-next/c/0719bc3a5c77

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-02-03  5:30 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-01 21:53 [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional Dmitry Torokhov
2023-02-01 21:53 ` [PATCH v3 2/2] net: fec: do not double-parse 'phy-reset-active-high' property Dmitry Torokhov
2023-02-01 22:54   ` Andrew Lunn
2023-02-01 23:21     ` Dmitry Torokhov
2023-02-02  1:08       ` Dmitry Torokhov
2023-02-02 13:21         ` Andrew Lunn
2023-02-01 21:58 ` [PATCH v3 1/2] net: fec: restore handling of PHY reset line as optional Andrew Lunn
2023-02-02  9:45 ` Marc Kleine-Budde
2023-02-02  9:47 ` Arnd Bergmann
2023-02-03  5:30 ` patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.