mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 18:19:02 +00:00
55 lines
1.9 KiB
Diff
55 lines
1.9 KiB
Diff
|
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;
|