From: Calvin Johnson <calvin.johnson@oss.nxp.com> To: Grant Likely <grant.likely@arm.com>, "Rafael J . Wysocki" <rafael@kernel.org>, Jeremy Linton <jeremy.linton@arm.com>, Andrew Lunn <andrew@lunn.ch>, Andy Shevchenko <andy.shevchenko@gmail.com>, Florian Fainelli <f.fainelli@gmail.com>, Russell King - ARM Linux admin <linux@armlinux.org.uk>, Cristi Sovaiala <cristian.sovaiala@nxp.com>, Florin Laurentiu Chiculita <florinlaurentiu.chiculita@nxp.com>, Ioana Ciornei <ioana.ciornei@nxp.com>, Madalin Bucur <madalin.bucur@oss.nxp.com>, Heikki Krogerus <heikki.krogerus@linux.intel.com> Cc: linux-kernel@vger.kernel.org, linux.cj@gmail.com, netdev@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Diana Madalina Craciun <diana.craciun@nxp.com>, Laurentiu Tudor <laurentiu.tudor@nxp.com>, Calvin Johnson <calvin.johnson@oss.nxp.com>, "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org> Subject: [net-next PATCH v1 7/7] net/fsl: Use _ADR ACPI object to register PHYs Date: Wed, 30 Sep 2020 21:34:30 +0530 [thread overview] Message-ID: <20200930160430.7908-8-calvin.johnson@oss.nxp.com> (raw) In-Reply-To: <20200930160430.7908-1-calvin.johnson@oss.nxp.com> PHYs on an mdio bus has address which can be obtained from ACPI DSDT table using the _ADR object. DSDT Eg: PHYs connected to MDI0 bus. ------------------------- Scope(\_SB.MDI0) { Device(PHY1) { Name (_ADR, 0x1) } // end of PHY1 Device(PHY2) { Name (_ADR, 0x2) } // end of PHY2 } // end of MDI0 ------------------------- Signed-off-by: Calvin Johnson <calvin.johnson@oss.nxp.com> --- drivers/net/ethernet/freescale/xgmac_mdio.c | 48 +++++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/freescale/xgmac_mdio.c b/drivers/net/ethernet/freescale/xgmac_mdio.c index 98be51d8b08c..fb272564855e 100644 --- a/drivers/net/ethernet/freescale/xgmac_mdio.c +++ b/drivers/net/ethernet/freescale/xgmac_mdio.c @@ -2,6 +2,7 @@ * QorIQ 10G MDIO Controller * * Copyright 2012 Freescale Semiconductor, Inc. + * Copyright 2020 NXP * * Authors: Andy Fleming <afleming@freescale.com> * Timur Tabi <timur@freescale.com> @@ -11,6 +12,7 @@ * kind, whether express or implied. */ +#include <linux/acpi.h> #include <linux/kernel.h> #include <linux/slab.h> #include <linux/interrupt.h> @@ -248,6 +250,10 @@ static int xgmac_mdio_probe(struct platform_device *pdev) struct resource *res; struct mdio_fsl_priv *priv; int ret; + struct fwnode_handle *fwnode; + struct fwnode_handle *child; + unsigned long long addr; + acpi_status status; /* In DPAA-1, MDIO is one of the many FMan sub-devices. The FMan * defines a register space that spans a large area, covering all the @@ -284,10 +290,44 @@ static int xgmac_mdio_probe(struct platform_device *pdev) priv->has_a011043 = device_property_read_bool(&pdev->dev, "fsl,erratum-a011043"); - - ret = of_mdiobus_register(bus, np); - if (ret) { - dev_err(&pdev->dev, "cannot register MDIO bus\n"); + if (is_of_node(pdev->dev.fwnode)) { + ret = of_mdiobus_register(bus, np); + if (ret) { + dev_err(&pdev->dev, "cannot register MDIO bus\n"); + goto err_registration; + } + } else if (is_acpi_node(pdev->dev.fwnode)) { + priv->is_little_endian = true; + /* Mask out all PHYs from auto probing. */ + bus->phy_mask = ~0; + ret = mdiobus_register(bus); + if (ret) { + dev_err(&pdev->dev, "mdiobus register err(%d)\n", ret); + return ret; + } + + fwnode = pdev->dev.fwnode; + /* Loop over the child nodes and register a phy_device for each PHY */ + fwnode_for_each_child_node(fwnode, child) { + status = acpi_evaluate_integer(ACPI_HANDLE_FWNODE(child), + "_ADR", NULL, &addr); + if (ACPI_FAILURE(status)) { + pr_debug("_ADR returned %d\n", status); + continue; + } + + if (addr < 0 || addr >= PHY_MAX_ADDR) + continue; + + ret = fwnode_mdiobus_register_phy(bus, child, addr); + if (ret == -ENODEV) + dev_err(&bus->dev, + "MDIO device at address %lld is missing.\n", + addr); + } + } else { + dev_err(&pdev->dev, "Cannot get cfg data from DT or ACPI\n"); + ret = -ENXIO; goto err_registration; } -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Calvin Johnson <calvin.johnson@oss.nxp.com> To: Grant Likely <grant.likely@arm.com>, "Rafael J . Wysocki" <rafael@kernel.org>, Jeremy Linton <jeremy.linton@arm.com>, Andrew Lunn <andrew@lunn.ch>, Andy Shevchenko <andy.shevchenko@gmail.com>, Florian Fainelli <f.fainelli@gmail.com>, Russell King - ARM Linux admin <linux@armlinux.org.uk>, Cristi Sovaiala <cristian.sovaiala@nxp.com>, Florin Laurentiu Chiculita <florinlaurentiu.chiculita@nxp.com>, Ioana Ciornei <ioana.ciornei@nxp.com>, Madalin Bucur <madalin.bucur@oss.nxp.com>, Heikki Krogerus <heikki.krogerus@linux.intel.com> Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Calvin Johnson <calvin.johnson@oss.nxp.com>, Diana Madalina Craciun <diana.craciun@nxp.com>, linux-acpi@vger.kernel.org, linux.cj@gmail.com, Jakub Kicinski <kuba@kernel.org>, "David S. Miller" <davem@davemloft.net>, linux-arm-kernel@lists.infradead.org, Laurentiu Tudor <laurentiu.tudor@nxp.com> Subject: [net-next PATCH v1 7/7] net/fsl: Use _ADR ACPI object to register PHYs Date: Wed, 30 Sep 2020 21:34:30 +0530 [thread overview] Message-ID: <20200930160430.7908-8-calvin.johnson@oss.nxp.com> (raw) In-Reply-To: <20200930160430.7908-1-calvin.johnson@oss.nxp.com> PHYs on an mdio bus has address which can be obtained from ACPI DSDT table using the _ADR object. DSDT Eg: PHYs connected to MDI0 bus. ------------------------- Scope(\_SB.MDI0) { Device(PHY1) { Name (_ADR, 0x1) } // end of PHY1 Device(PHY2) { Name (_ADR, 0x2) } // end of PHY2 } // end of MDI0 ------------------------- Signed-off-by: Calvin Johnson <calvin.johnson@oss.nxp.com> --- drivers/net/ethernet/freescale/xgmac_mdio.c | 48 +++++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/freescale/xgmac_mdio.c b/drivers/net/ethernet/freescale/xgmac_mdio.c index 98be51d8b08c..fb272564855e 100644 --- a/drivers/net/ethernet/freescale/xgmac_mdio.c +++ b/drivers/net/ethernet/freescale/xgmac_mdio.c @@ -2,6 +2,7 @@ * QorIQ 10G MDIO Controller * * Copyright 2012 Freescale Semiconductor, Inc. + * Copyright 2020 NXP * * Authors: Andy Fleming <afleming@freescale.com> * Timur Tabi <timur@freescale.com> @@ -11,6 +12,7 @@ * kind, whether express or implied. */ +#include <linux/acpi.h> #include <linux/kernel.h> #include <linux/slab.h> #include <linux/interrupt.h> @@ -248,6 +250,10 @@ static int xgmac_mdio_probe(struct platform_device *pdev) struct resource *res; struct mdio_fsl_priv *priv; int ret; + struct fwnode_handle *fwnode; + struct fwnode_handle *child; + unsigned long long addr; + acpi_status status; /* In DPAA-1, MDIO is one of the many FMan sub-devices. The FMan * defines a register space that spans a large area, covering all the @@ -284,10 +290,44 @@ static int xgmac_mdio_probe(struct platform_device *pdev) priv->has_a011043 = device_property_read_bool(&pdev->dev, "fsl,erratum-a011043"); - - ret = of_mdiobus_register(bus, np); - if (ret) { - dev_err(&pdev->dev, "cannot register MDIO bus\n"); + if (is_of_node(pdev->dev.fwnode)) { + ret = of_mdiobus_register(bus, np); + if (ret) { + dev_err(&pdev->dev, "cannot register MDIO bus\n"); + goto err_registration; + } + } else if (is_acpi_node(pdev->dev.fwnode)) { + priv->is_little_endian = true; + /* Mask out all PHYs from auto probing. */ + bus->phy_mask = ~0; + ret = mdiobus_register(bus); + if (ret) { + dev_err(&pdev->dev, "mdiobus register err(%d)\n", ret); + return ret; + } + + fwnode = pdev->dev.fwnode; + /* Loop over the child nodes and register a phy_device for each PHY */ + fwnode_for_each_child_node(fwnode, child) { + status = acpi_evaluate_integer(ACPI_HANDLE_FWNODE(child), + "_ADR", NULL, &addr); + if (ACPI_FAILURE(status)) { + pr_debug("_ADR returned %d\n", status); + continue; + } + + if (addr < 0 || addr >= PHY_MAX_ADDR) + continue; + + ret = fwnode_mdiobus_register_phy(bus, child, addr); + if (ret == -ENODEV) + dev_err(&bus->dev, + "MDIO device at address %lld is missing.\n", + addr); + } + } else { + dev_err(&pdev->dev, "Cannot get cfg data from DT or ACPI\n"); + ret = -ENXIO; goto err_registration; } -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-09-30 16:06 UTC|newest] Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-30 16:04 [net-next PATCH v1 0/7] ACPI support for dpaa2 driver Calvin Johnson 2020-09-30 16:04 ` Calvin Johnson 2020-09-30 16:04 ` [net-next PATCH v1 1/7] Documentation: ACPI: DSD: Document MDIO PHY Calvin Johnson 2020-09-30 16:04 ` Calvin Johnson 2020-09-30 16:37 ` Rafael J. Wysocki 2020-09-30 16:37 ` Rafael J. Wysocki 2020-10-01 13:26 ` Calvin Johnson 2020-10-01 13:26 ` Calvin Johnson 2020-10-02 11:08 ` Grant Likely 2020-10-02 11:08 ` Grant Likely 2020-10-02 14:13 ` Rafael J. Wysocki 2020-10-02 14:13 ` Rafael J. Wysocki 2020-09-30 16:04 ` [net-next PATCH v1 2/7] net: phy: Introduce phy related fwnode functions Calvin Johnson 2020-09-30 16:04 ` Calvin Johnson 2020-09-30 22:03 ` David Miller 2020-09-30 22:03 ` David Miller 2020-10-01 3:58 ` Calvin Johnson 2020-10-01 3:58 ` Calvin Johnson 2020-09-30 16:04 ` [net-next PATCH v1 3/7] net: phy: Introduce fwnode_get_phy_id() Calvin Johnson 2020-09-30 16:04 ` Calvin Johnson 2020-09-30 16:34 ` Andrew Lunn 2020-09-30 16:34 ` Andrew Lunn 2020-09-30 18:07 ` Russell King - ARM Linux admin 2020-09-30 18:07 ` Russell King - ARM Linux admin 2020-09-30 18:19 ` Andrew Lunn 2020-09-30 18:19 ` Andrew Lunn 2020-10-01 4:00 ` Calvin Johnson 2020-10-01 4:00 ` Calvin Johnson 2020-10-02 10:48 ` Grant Likely 2020-10-02 10:48 ` Grant Likely 2020-10-02 11:05 ` Grant Likely 2020-10-02 11:05 ` Grant Likely 2020-10-02 15:14 ` Florian Fainelli 2020-10-02 15:14 ` Florian Fainelli 2020-10-02 15:50 ` Russell King - ARM Linux admin 2020-10-02 15:50 ` Russell King - ARM Linux admin 2020-10-03 18:03 ` Calvin Johnson 2020-10-03 18:03 ` Calvin Johnson 2020-10-03 18:00 ` Calvin Johnson 2020-10-03 18:00 ` Calvin Johnson 2020-09-30 16:04 ` [net-next PATCH v1 4/7] net: mdiobus: Introduce fwnode_mdiobus_register_phy() Calvin Johnson 2020-09-30 16:04 ` Calvin Johnson 2020-09-30 22:04 ` David Miller 2020-09-30 22:04 ` David Miller 2020-10-01 3:07 ` kernel test robot 2020-09-30 16:04 ` [net-next PATCH v1 5/7] phylink: introduce phylink_fwnode_phy_connect() Calvin Johnson 2020-09-30 16:04 ` Calvin Johnson 2020-09-30 16:04 ` [net-next PATCH v1 6/7] net: dpaa2-mac: Add ACPI support for DPAA2 MAC driver Calvin Johnson 2020-09-30 16:04 ` Calvin Johnson 2020-10-01 15:36 ` Andy Shevchenko 2020-10-01 15:36 ` Andy Shevchenko 2020-10-03 16:30 ` Calvin Johnson 2020-10-03 16:30 ` Calvin Johnson 2020-10-02 11:22 ` Grant Likely 2020-10-02 11:22 ` Grant Likely 2020-10-03 17:39 ` Calvin Johnson 2020-10-03 17:39 ` Calvin Johnson 2020-10-07 15:50 ` Calvin Johnson 2020-10-07 15:50 ` Calvin Johnson 2020-09-30 16:04 ` Calvin Johnson [this message] 2020-09-30 16:04 ` [net-next PATCH v1 7/7] net/fsl: Use _ADR ACPI object to register PHYs Calvin Johnson 2020-09-30 16:27 ` Andrew Lunn 2020-09-30 16:27 ` Andrew Lunn 2020-09-30 22:04 ` David Miller 2020-09-30 22:04 ` David Miller
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=20200930160430.7908-8-calvin.johnson@oss.nxp.com \ --to=calvin.johnson@oss.nxp.com \ --cc=andrew@lunn.ch \ --cc=andy.shevchenko@gmail.com \ --cc=cristian.sovaiala@nxp.com \ --cc=davem@davemloft.net \ --cc=diana.craciun@nxp.com \ --cc=f.fainelli@gmail.com \ --cc=florinlaurentiu.chiculita@nxp.com \ --cc=grant.likely@arm.com \ --cc=heikki.krogerus@linux.intel.com \ --cc=ioana.ciornei@nxp.com \ --cc=jeremy.linton@arm.com \ --cc=kuba@kernel.org \ --cc=laurentiu.tudor@nxp.com \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux.cj@gmail.com \ --cc=linux@armlinux.org.uk \ --cc=madalin.bucur@oss.nxp.com \ --cc=netdev@vger.kernel.org \ --cc=rafael@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: linkBe 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.