mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
74 lines
2.2 KiB
Diff
74 lines
2.2 KiB
Diff
|
From 01488a0ccd9abe15565bed50a45afcddbb0fe199 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||
|
Date: Fri, 12 Mar 2021 11:41:07 +0100
|
||
|
Subject: [PATCH] net: dsa: bcm_sf2: store PHY interface/mode in port structure
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
It's needed later for proper switch / crossbar setup.
|
||
|
|
||
|
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||
|
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
|
||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||
|
---
|
||
|
drivers/net/dsa/bcm_sf2.c | 16 ++++++++++++----
|
||
|
drivers/net/dsa/bcm_sf2.h | 1 +
|
||
|
2 files changed, 13 insertions(+), 4 deletions(-)
|
||
|
|
||
|
--- a/drivers/net/dsa/bcm_sf2.c
|
||
|
+++ b/drivers/net/dsa/bcm_sf2.c
|
||
|
@@ -446,10 +446,11 @@ static void bcm_sf2_intr_disable(struct
|
||
|
static void bcm_sf2_identify_ports(struct bcm_sf2_priv *priv,
|
||
|
struct device_node *dn)
|
||
|
{
|
||
|
+ struct device *dev = priv->dev->ds->dev;
|
||
|
+ struct bcm_sf2_port_status *port_st;
|
||
|
struct device_node *port;
|
||
|
unsigned int port_num;
|
||
|
struct property *prop;
|
||
|
- phy_interface_t mode;
|
||
|
int err;
|
||
|
|
||
|
priv->moca_port = -1;
|
||
|
@@ -458,19 +459,26 @@ static void bcm_sf2_identify_ports(struc
|
||
|
if (of_property_read_u32(port, "reg", &port_num))
|
||
|
continue;
|
||
|
|
||
|
+ if (port_num >= DSA_MAX_PORTS) {
|
||
|
+ dev_err(dev, "Invalid port number %d\n", port_num);
|
||
|
+ continue;
|
||
|
+ }
|
||
|
+
|
||
|
+ port_st = &priv->port_sts[port_num];
|
||
|
+
|
||
|
/* Internal PHYs get assigned a specific 'phy-mode' property
|
||
|
* value: "internal" to help flag them before MDIO probing
|
||
|
* has completed, since they might be turned off at that
|
||
|
* time
|
||
|
*/
|
||
|
- err = of_get_phy_mode(port, &mode);
|
||
|
+ err = of_get_phy_mode(port, &port_st->mode);
|
||
|
if (err)
|
||
|
continue;
|
||
|
|
||
|
- if (mode == PHY_INTERFACE_MODE_INTERNAL)
|
||
|
+ if (port_st->mode == PHY_INTERFACE_MODE_INTERNAL)
|
||
|
priv->int_phy_mask |= 1 << port_num;
|
||
|
|
||
|
- if (mode == PHY_INTERFACE_MODE_MOCA)
|
||
|
+ if (port_st->mode == PHY_INTERFACE_MODE_MOCA)
|
||
|
priv->moca_port = port_num;
|
||
|
|
||
|
if (of_property_read_bool(port, "brcm,use-bcm-hdr"))
|
||
|
--- a/drivers/net/dsa/bcm_sf2.h
|
||
|
+++ b/drivers/net/dsa/bcm_sf2.h
|
||
|
@@ -44,6 +44,7 @@ struct bcm_sf2_hw_params {
|
||
|
#define BCM_SF2_REGS_NUM 6
|
||
|
|
||
|
struct bcm_sf2_port_status {
|
||
|
+ phy_interface_t mode;
|
||
|
unsigned int link;
|
||
|
bool enabled;
|
||
|
};
|