From: Johan Hovold <johan@kernel.org>
To: Florian Fainelli <f.fainelli@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
Johan Hovold <johan@kernel.org>
Subject: [PATCH 4/9] net: phy: micrel: refactor broadcast disable
Date: Tue, 11 Nov 2014 20:00:10 +0100 [thread overview]
Message-ID: <1415732415-10363-5-git-send-email-johan@kernel.org> (raw)
In-Reply-To: <1415732415-10363-1-git-send-email-johan@kernel.org>
Refactor and clean up broadcast disable.
Some Micrel PHYs have a broadcast-off bit in the Operation Mode Strap
Override register which can be used to disable PHY address 0 as the
broadcast address, so that it can be used as a unique (non-broadcast)
address on a shared bus.
Note that the KSZPHY_OMSO_RMII_OVERRIDE bit is set by default on
KSZ8021/8031.
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/net/phy/micrel.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index d962a2866bba..21abe5ade3df 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -184,6 +184,25 @@ static int kszphy_setup_led(struct phy_device *phydev,
return rc < 0 ? rc : 0;
}
+/* Disable PHY address 0 as the broadcast address, so that it can be used as a
+ * unique (non-broadcast) address on a shared bus.
+ */
+static int kszphy_broadcast_disable(struct phy_device *phydev)
+{
+ int ret;
+
+ ret = phy_read(phydev, MII_KSZPHY_OMSO);
+ if (ret < 0)
+ goto out;
+
+ ret = phy_write(phydev, MII_KSZPHY_OMSO, ret | KSZPHY_OMSO_B_CAST_OFF);
+out:
+ if (ret)
+ dev_err(&phydev->dev, "failed to disable broadcast address\n");
+
+ return ret;
+}
+
static int kszphy_config_init(struct phy_device *phydev)
{
return 0;
@@ -197,7 +216,6 @@ static int kszphy_config_init_led8041(struct phy_device *phydev)
static int ksz8021_config_init(struct phy_device *phydev)
{
- const u16 val = KSZPHY_OMSO_B_CAST_OFF | KSZPHY_OMSO_RMII_OVERRIDE;
int rc;
rc = kszphy_setup_led(phydev, 0x1f, 4);
@@ -207,7 +225,9 @@ static int ksz8021_config_init(struct phy_device *phydev)
rc = ksz_config_flags(phydev);
if (rc < 0)
return rc;
- rc = phy_write(phydev, MII_KSZPHY_OMSO, val);
+
+ rc = kszphy_broadcast_disable(phydev);
+
return rc < 0 ? rc : 0;
}
--
2.0.4
next prev parent reply other threads:[~2014-11-11 19:03 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-11 19:00 [PATCH 0/9] net: phy: micrel: refactoring and KSZ8081/KSZ8091 features Johan Hovold
2014-11-11 19:00 ` [PATCH 1/9] dt/bindings: fix documentation of ethernet-phy compatible property Johan Hovold
2014-11-11 19:00 ` [PATCH 2/9] net: phy: micrel: fix config_intr error handling Johan Hovold
2014-11-11 19:00 ` [PATCH 3/9] net: phy: micrel: use BIT macro Johan Hovold
2014-11-11 19:00 ` Johan Hovold [this message]
2014-11-11 19:00 ` [PATCH 5/9] net: phy: micrel: disable broadcast for KSZ8081/KSZ8091 Johan Hovold
2014-11-11 19:00 ` [PATCH 6/9] net: phy: micrel: add led-mode sanity check Johan Hovold
2014-11-11 19:00 ` [PATCH 7/9] net: phy: micrel: refactor led-mode error handling Johan Hovold
2014-11-11 19:00 ` [PATCH 8/9] net: phy: micrel: clean up led-mode setup Johan Hovold
2014-11-11 21:41 ` Sergei Shtylyov
2014-11-11 21:43 ` Florian Fainelli
2014-11-12 9:29 ` Johan Hovold
2014-11-11 19:00 ` [PATCH 9/9] net: phy: micrel: enable led-mode for KSZ8081/KSZ8091 Johan Hovold
2014-11-12 18:56 ` [PATCH 0/9] net: phy: micrel: refactoring and KSZ8081/KSZ8091 features 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=1415732415-10363-5-git-send-email-johan@kernel.org \
--to=johan@kernel.org \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.