netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Robert Hancock <hancock@sedsystems.ca>
To: netdev@vger.kernel.org
Cc: anirudh@xilinx.com, John.Linn@xilinx.com, andrew@lunn.ch,
	davem@davemloft.net, Robert Hancock <hancock@sedsystems.ca>
Subject: [PATCH net-next v5 03/20] net: axienet: fix MDIO bus naming
Date: Thu,  6 Jun 2019 16:28:07 -0600	[thread overview]
Message-ID: <1559860104-927-4-git-send-email-hancock@sedsystems.ca> (raw)
In-Reply-To: <1559860104-927-1-git-send-email-hancock@sedsystems.ca>

The MDIO bus for this driver was being named using the result of
of_address_to_resource on a node which may not have any resource on it,
but the return value of that call was not checked so it was using some
random value in the bus name. Change to name the MDIO bus based on the
resource start of the actual Ethernet register block.

Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
---
 drivers/net/ethernet/xilinx/xilinx_axienet.h      |  2 ++
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c |  1 +
 drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c | 11 +++++------
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet.h b/drivers/net/ethernet/xilinx/xilinx_axienet.h
index d82e3b6..f9078bd 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet.h
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet.h
@@ -380,6 +380,7 @@ struct axidma_bd {
  * @dev:	Pointer to device structure
  * @phy_node:	Pointer to device node structure
  * @mii_bus:	Pointer to MII bus structure
+ * @regs_start: Resource start for axienet device addresses
  * @regs:	Base address for the axienet_local device address space
  * @dma_regs:	Base address for the axidma device address space
  * @dma_err_tasklet: Tasklet structure to process Axi DMA errors
@@ -421,6 +422,7 @@ struct axienet_local {
 	struct mii_bus *mii_bus;	/* MII bus reference */
 
 	/* IO registers, dma functions and IRQs */
+	resource_size_t regs_start;
 	void __iomem *regs;
 	void __iomem *dma_regs;
 
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
index 55beca1..ffbd4d7 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
@@ -1480,6 +1480,7 @@ static int axienet_probe(struct platform_device *pdev)
 	lp->options = XAE_OPTION_DEFAULTS;
 	/* Map device registers */
 	ethres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	lp->regs_start = ethres->start;
 	lp->regs = devm_ioremap_resource(&pdev->dev, ethres);
 	if (IS_ERR(lp->regs)) {
 		dev_err(&pdev->dev, "could not map Axi Ethernet regs.\n");
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c b/drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c
index 704babd..665ae1d 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c
@@ -127,7 +127,7 @@ int axienet_mdio_setup(struct axienet_local *lp, struct device_node *np)
 	int ret;
 	u32 clk_div, host_clock;
 	struct mii_bus *bus;
-	struct resource res;
+	struct device_node *mdio_node;
 	struct device_node *np1;
 
 	/* clk_div can be calculated by deriving it from the equation:
@@ -199,10 +199,9 @@ int axienet_mdio_setup(struct axienet_local *lp, struct device_node *np)
 	if (!bus)
 		return -ENOMEM;
 
-	np1 = of_get_parent(lp->phy_node);
-	of_address_to_resource(np1, 0, &res);
-	snprintf(bus->id, MII_BUS_ID_SIZE, "%.8llx",
-		 (unsigned long long) res.start);
+	mdio_node = of_get_parent(lp->phy_node);
+	snprintf(bus->id, MII_BUS_ID_SIZE, "axienet-%.8llx",
+		 (unsigned long long)lp->regs_start);
 
 	bus->priv = lp;
 	bus->name = "Xilinx Axi Ethernet MDIO";
@@ -211,7 +210,7 @@ int axienet_mdio_setup(struct axienet_local *lp, struct device_node *np)
 	bus->parent = lp->dev;
 	lp->mii_bus = bus;
 
-	ret = of_mdiobus_register(bus, np1);
+	ret = of_mdiobus_register(bus, mdio_node);
 	if (ret) {
 		mdiobus_free(bus);
 		lp->mii_bus = NULL;
-- 
1.8.3.1


  parent reply	other threads:[~2019-06-06 22:29 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-06 22:28 [PATCH net-next v5 00/20] Xilinx axienet driver updates (v5) Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 01/20] net: axienet: Fix casting of pointers to u32 Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 02/20] net: axienet: Use standard IO accessors Robert Hancock
2019-06-06 22:28 ` Robert Hancock [this message]
2019-06-06 22:28 ` [PATCH net-next v5 04/20] net: axienet: add X86 and ARM as supported platforms Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 05/20] net: axienet: Use clock framework to get device clock rate Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 06/20] net: axienet: fix teardown order of MDIO bus Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 07/20] net: axienet: Re-initialize MDIO registers properly after reset Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 08/20] net: axienet: Cleanup DMA device reset and halt process Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 09/20] net: axienet: Make RX/TX ring sizes configurable Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 10/20] net: axienet: Add DMA registers to ethtool register dump Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 11/20] net: axienet: Support shared interrupts Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 12/20] net: axienet: Add optional support for Ethernet core interrupt Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 13/20] net: axienet: Fix race condition causing TX hang Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 14/20] net: axienet: Make missing MAC address non-fatal Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 15/20] net: axienet: stop interface during shutdown Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 16/20] net: axienet: document device tree mdio child node Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 17/20] net: axienet: Fix MDIO bus parent node detection Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 18/20] net: axienet: document axistream-connected attribute Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 19/20] net: axienet: make use of axistream-connected attribute optional Robert Hancock
2019-06-06 22:28 ` [PATCH net-next v5 20/20] net: axienet: convert to phylink API Robert Hancock
2019-06-06 23:24 ` [PATCH net-next v5 00/20] Xilinx axienet driver updates (v5) 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=1559860104-927-4-git-send-email-hancock@sedsystems.ca \
    --to=hancock@sedsystems.ca \
    --cc=John.Linn@xilinx.com \
    --cc=andrew@lunn.ch \
    --cc=anirudh@xilinx.com \
    --cc=davem@davemloft.net \
    --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 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).