From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Calvin Johnson <calvin.johnson@oss.nxp.com>
Cc: Jeremy Linton <jeremy.linton@arm.com>, Jon <jon@solid-run.com>,
Cristi Sovaiala <cristian.sovaiala@nxp.com>,
Ioana Ciornei <ioana.ciornei@nxp.com>,
Andrew Lunn <andrew@lunn.ch>,
Andy Shevchenko <andy.shevchenko@gmail.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Madalin Bucur <madalin.bucur@oss.nxp.com>,
netdev@vger.kernel.org, linux.cj@gmail.com
Subject: Re: [PATCH v1 1/3] net: phy: Allow mdio buses to auto-probe c45 devices
Date: Wed, 17 Jun 2020 18:44:51 +0100 [thread overview]
Message-ID: <20200617174451.GT1551@shell.armlinux.org.uk> (raw)
In-Reply-To: <20200617171536.12014-2-calvin.johnson@oss.nxp.com>
On Wed, Jun 17, 2020 at 10:45:33PM +0530, Calvin Johnson wrote:
> From: Jeremy Linton <jeremy.linton@arm.com>
>
> The mdiobus_scan logic is currently hardcoded to only
> work with c22 devices. This works fairly well in most
> cases, but its possible a c45 device doesn't respond
> despite being a standard phy. If the parent hardware
> is capable, it makes sense to scan for c22 devices before
> falling back to c45.
>
> As we want this to reflect the capabilities of the STA,
> lets add a field to the mii_bus structure to represent
> the capability. That way devices can opt into the extended
> scanning. Existing users should continue to default to c22
> only scanning as long as they are zero'ing the structure
> before use.
>
> Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
> Signed-off-by: Calvin Johnson <calvin.johnson@oss.nxp.com>
I know that we've hashed this out quite a bit already, but I would like
to point out that include/linux/mdio.h contains:
* struct mdio_if_info - Ethernet controller MDIO interface
* @mode_support: MDIO modes supported. If %MDIO_SUPPORTS_C22 is set then
* MII register access will be passed through with @devad =
* %MDIO_DEVAD_NONE. If %MDIO_EMULATE_C22 is set then access to
* commonly used clause 22 registers will be translated into
* clause 45 registers.
#define MDIO_SUPPORTS_C22 1
#define MDIO_SUPPORTS_C45 2
#define MDIO_EMULATE_C22 4
While this structure is not applicable to phylib or mii_bus, it may be
worth considering that there already exist definitions for identifying
the properties of the underlying bus.
> ---
>
> drivers/net/phy/mdio_bus.c | 17 +++++++++++++++--
> include/linux/phy.h | 7 +++++++
> 2 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
> index 6ceee82b2839..e6c179b89907 100644
> --- a/drivers/net/phy/mdio_bus.c
> +++ b/drivers/net/phy/mdio_bus.c
> @@ -739,10 +739,23 @@ EXPORT_SYMBOL(mdiobus_free);
> */
> struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr)
> {
> - struct phy_device *phydev;
> + struct phy_device *phydev = ERR_PTR(-ENODEV);
> int err;
>
> - phydev = get_phy_device(bus, addr, false);
> + switch (bus->probe_capabilities) {
> + case MDIOBUS_C22:
> + phydev = get_phy_device(bus, addr, false);
> + break;
> + case MDIOBUS_C45:
> + phydev = get_phy_device(bus, addr, true);
> + break;
> + case MDIOBUS_C22_C45:
> + phydev = get_phy_device(bus, addr, false);
> + if (IS_ERR(phydev))
> + phydev = get_phy_device(bus, addr, true);
> + break;
> + }
> +
> if (IS_ERR(phydev))
> return phydev;
>
> diff --git a/include/linux/phy.h b/include/linux/phy.h
> index 9248dd2ce4ca..50e5312b2304 100644
> --- a/include/linux/phy.h
> +++ b/include/linux/phy.h
> @@ -298,6 +298,13 @@ struct mii_bus {
> /* RESET GPIO descriptor pointer */
> struct gpio_desc *reset_gpiod;
>
> + /* bus capabilities, used for probing */
> + enum {
> + MDIOBUS_C22 = 0,
> + MDIOBUS_C45,
> + MDIOBUS_C22_C45,
> + } probe_capabilities;
I think it would be better to reserve "0" to mean that no capabilities
have been declared. We hae the situation where we have mii_bus that
exist which do support C45, but as they stand, probe_capabilities will
be zero, and with your definitions above, that means MDIOBUS_C22.
It seems this could lock in some potential issues later down the line
if we want to use this elsewhere.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2020-06-17 17:44 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-17 17:15 [PATCH v1 0/3] ACPI support for xgmac_mdio drivers Calvin Johnson
2020-06-17 17:15 ` [PATCH v1 1/3] net: phy: Allow mdio buses to auto-probe c45 devices Calvin Johnson
2020-06-17 17:44 ` Russell King - ARM Linux admin [this message]
2020-06-17 18:51 ` Andrew Lunn
2020-06-17 18:57 ` Russell King - ARM Linux admin
2020-06-22 13:22 ` Calvin Johnson
2020-06-22 13:44 ` Russell King - ARM Linux admin
2020-06-18 14:00 ` Calvin Johnson
2020-06-17 17:15 ` [PATCH v1 2/3] net/fsl: acpize xgmac_mdio Calvin Johnson
2020-06-17 17:24 ` Andy Shevchenko
2020-06-17 17:34 ` Andrew Lunn
2020-06-18 15:43 ` Jeremy Linton
2020-06-18 16:00 ` Andy Shevchenko
2020-06-18 17:42 ` Calvin Johnson
2020-06-18 17:55 ` Andy Shevchenko
2020-06-17 17:49 ` Russell King - ARM Linux admin
2020-06-17 17:54 ` Andy Shevchenko
2020-06-17 18:56 ` Russell King - ARM Linux admin
2020-06-19 14:59 ` Calvin Johnson
2020-06-19 15:02 ` Russell King - ARM Linux admin
2020-06-17 17:15 ` [PATCH v1 3/3] net/fsl: enable extended scanning in xgmac_mdio Calvin Johnson
2020-06-18 22:49 ` Florian Fainelli
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=20200617174451.GT1551@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=andrew@lunn.ch \
--cc=andy.shevchenko@gmail.com \
--cc=calvin.johnson@oss.nxp.com \
--cc=cristian.sovaiala@nxp.com \
--cc=f.fainelli@gmail.com \
--cc=ioana.ciornei@nxp.com \
--cc=jeremy.linton@arm.com \
--cc=jon@solid-run.com \
--cc=linux.cj@gmail.com \
--cc=madalin.bucur@oss.nxp.com \
--cc=netdev@vger.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 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.