| From 45c9d966688e7fad7f24bfc450547d91e4304d0b Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> |
| Date: Sat, 2 Oct 2021 19:58:12 +0200 |
| Subject: [PATCH] net: bgmac: support MDIO described in DT |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| Check ethernet controller DT node for "mdio" subnode and use it with |
| of_mdiobus_register() when present. That allows specifying MDIO and its |
| PHY devices in a standard DT based way. |
| |
| This is required for BCM53573 SoC support. That family is sometimes |
| called Northstar (by marketing?) but is quite different from it. It uses |
| different CPU(s) and many different hw blocks. |
| |
| One of shared blocks in BCM53573 is Ethernet controller. Switch however |
| is not SRAB accessible (as it Northstar) but is MDIO attached. |
| |
| Signed-off-by: Rafał Miłecki <rafal@milecki.pl> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| --- |
| drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c | 6 +++++- |
| 1 file changed, 5 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c |
| +++ b/drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c |
| @@ -10,6 +10,7 @@ |
| |
| #include <linux/bcma/bcma.h> |
| #include <linux/brcmphy.h> |
| +#include <linux/of_mdio.h> |
| #include "bgmac.h" |
| |
| static bool bcma_mdio_wait_value(struct bcma_device *core, u16 reg, u32 mask, |
| @@ -211,6 +212,7 @@ struct mii_bus *bcma_mdio_mii_register(s |
| { |
| struct bcma_device *core = bgmac->bcma.core; |
| struct mii_bus *mii_bus; |
| + struct device_node *np; |
| int err; |
| |
| mii_bus = mdiobus_alloc(); |
| @@ -229,7 +231,9 @@ struct mii_bus *bcma_mdio_mii_register(s |
| mii_bus->parent = &core->dev; |
| mii_bus->phy_mask = ~(1 << bgmac->phyaddr); |
| |
| - err = mdiobus_register(mii_bus); |
| + np = of_get_child_by_name(core->dev.of_node, "mdio"); |
| + |
| + err = of_mdiobus_register(mii_bus, np); |
| if (err) { |
| dev_err(&core->dev, "Registration of mii bus failed\n"); |
| goto err_free_bus; |