netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Alexandru Ardelean <alexandru.ardelean@analog.com>
Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, davem@davemloft.net,
	robh+dt@kernel.org, mark.rutland@arm.com, f.fainelli@gmail.com,
	hkallweit1@gmail.com
Subject: Re: [PATCH v4 10/14] net: phy: adin: implement PHY subsystem software reset
Date: Mon, 12 Aug 2019 16:19:54 +0200	[thread overview]
Message-ID: <20190812141954.GP14290@lunn.ch> (raw)
In-Reply-To: <20190812112350.15242-11-alexandru.ardelean@analog.com>

> +static int adin_reset(struct phy_device *phydev)
> +{
> +	/* If there is a reset GPIO just exit */
> +	if (!IS_ERR_OR_NULL(phydev->mdio.reset_gpio))
> +		return 0;

I'm not so happy with this.

First off, there are two possible GPIO configurations. The GPIO can be
applied to all PHYs on the MDIO bus. That GPIO is used when the bus is
probed. There can also be a per PHY GPIO, which is what you are
looking at here.

The idea of putting the GPIO handling in the core is that PHYs don't
need to worry about it. How much of a difference does it make if the
PHY is both reset via GPIO and then again in software? How slow is the
software reset? Maybe just unconditionally do the reset, if it is not
too slow.

> +
> +	/* Reset PHY core regs & subsystem regs */
> +	return adin_subsytem_soft_reset(phydev);
> +}
> +
> +static int adin_probe(struct phy_device *phydev)
> +{
> +	return adin_reset(phydev);
> +}

Why did you decide to do this as part of probe, and not use the
.soft_reset member of phy_driver?

> +
>  static struct phy_driver adin_driver[] = {
>  	{
>  		PHY_ID_MATCH_MODEL(PHY_ID_ADIN1200),
>  		.name		= "ADIN1200",
>  		.config_init	= adin_config_init,
> +		.probe		= adin_probe,
>  		.config_aneg	= adin_config_aneg,
>  		.read_status	= adin_read_status,
>  		.ack_interrupt	= adin_phy_ack_intr,
> @@ -461,6 +503,7 @@ static struct phy_driver adin_driver[] = {
>  		PHY_ID_MATCH_MODEL(PHY_ID_ADIN1300),
>  		.name		= "ADIN1300",
>  		.config_init	= adin_config_init,
> +		.probe		= adin_probe,
>  		.config_aneg	= adin_config_aneg,
>  		.read_status	= adin_read_status,
>  		.ack_interrupt	= adin_phy_ack_intr,

Thanks
	Andrew

  reply	other threads:[~2019-08-12 14:20 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-12 11:23 [PATCH v4 00/14] net: phy: adin: add support for Analog Devices PHYs Alexandru Ardelean
2019-08-12 11:23 ` [PATCH v4 01/14] " Alexandru Ardelean
2019-08-14 17:47   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 02/14] net: phy: adin: hook genphy_{suspend,resume} into the driver Alexandru Ardelean
2019-08-14 17:47   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 03/14] net: phy: adin: add support for interrupts Alexandru Ardelean
2019-08-14 17:48   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 04/14] net: phy: adin: add {write,read}_mmd hooks Alexandru Ardelean
2019-08-12 14:06   ` Andrew Lunn
2019-08-14 17:49   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 05/14] net: phy: adin: configure RGMII/RMII/MII modes on config Alexandru Ardelean
2019-08-14 17:50   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 06/14] net: phy: adin: make RGMII internal delays configurable Alexandru Ardelean
2019-08-14 17:52   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 07/14] net: phy: adin: make RMII fifo depth configurable Alexandru Ardelean
2019-08-14 17:53   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 08/14] net: phy: adin: add support MDI/MDIX/Auto-MDI selection Alexandru Ardelean
2019-08-14 17:54   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 09/14] net: phy: adin: add EEE translation layer from Clause 45 to Clause 22 Alexandru Ardelean
2019-08-12 14:08   ` Andrew Lunn
2019-08-14 17:55   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 10/14] net: phy: adin: implement PHY subsystem software reset Alexandru Ardelean
2019-08-12 14:19   ` Andrew Lunn [this message]
2019-08-13  5:42     ` Ardelean, Alexandru
2019-08-12 11:23 ` [PATCH v4 11/14] net: phy: adin: implement Energy Detect Powerdown mode Alexandru Ardelean
2019-08-14 17:57   ` Florian Fainelli
2019-08-16  6:09     ` Ardelean, Alexandru
2019-08-12 11:23 ` [PATCH v4 12/14] net: phy: adin: implement downshift configuration via phy-tunable Alexandru Ardelean
2019-08-12 14:21   ` Andrew Lunn
2019-08-14 17:58   ` Florian Fainelli
2019-08-12 11:23 ` [PATCH v4 13/14] net: phy: adin: add ethtool get_stats support Alexandru Ardelean
2019-08-12 14:26   ` Andrew Lunn
2019-08-13  6:07     ` Ardelean, Alexandru
2019-08-12 14:33   ` Andrew Lunn
2019-08-13  5:48     ` Ardelean, Alexandru
2019-08-14  9:08       ` Ardelean, Alexandru
2019-08-14 14:04         ` Andrew Lunn
2019-08-12 11:23 ` [PATCH v4 14/14] dt-bindings: net: add bindings for ADIN PHY driver Alexandru Ardelean
2019-08-12 14:34   ` Andrew Lunn
2019-08-12 19:02   ` Rob Herring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190812141954.GP14290@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=alexandru.ardelean@analog.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=f.fainelli@gmail.com \
    --cc=hkallweit1@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=netdev@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).