diff mbox series

[v3,2/2] net: fec: do not double-parse 'phy-reset-active-high' property

Message ID 20230201215320.528319-2-dmitry.torokhov@gmail.com (mailing list archive)
State Accepted
Commit 0719bc3a5c77091192c57e440896a969cd1cf885
Delegated to: Netdev Maintainers
Headers show
Series [v3,1/2] net: fec: restore handling of PHY reset line as optional | expand

Checks

Context Check Description
netdev/tree_selection success Guessed tree name to be net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/subject_prefix warning Target tree name not specified in the subject
netdev/cover_letter success Single patches do not need cover letters
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/cc_maintainers success CCed 11 of 11 maintainers
netdev/build_clang success Errors and warnings before: 0 this patch: 0
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 26 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Dmitry Torokhov Feb. 1, 2023, 9:53 p.m. UTC
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(-)

Comments

Andrew Lunn Feb. 1, 2023, 10:54 p.m. UTC | #1
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
Dmitry Torokhov Feb. 1, 2023, 11:21 p.m. UTC | #2
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 Torokhov Feb. 2, 2023, 1:08 a.m. UTC | #3
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
Andrew Lunn Feb. 2, 2023, 1:21 p.m. UTC | #4
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
diff mbox series

Patch

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;