forked from Openwrt/openwrt
9a038e7fd1
Copy config and patches from kernel 5.10 to kernel 5.15 Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
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;
|