From: Florian Fainelli <f.fainelli@gmail.com>
To: Heiko Schocher <hs@denx.de>, linux-kernel@vger.kernel.org
Cc: devicetree@vger.kernel.org, netdev@vger.kernel.org,
Georg.Soffel@bosch-si.com
Subject: Re: [PATCH] net: phy: smsc: disable energy detect mode
Date: Tue, 13 Oct 2015 12:26:00 -0700 [thread overview]
Message-ID: <561D5AC8.7040801@gmail.com> (raw)
In-Reply-To: <1444713189-23063-1-git-send-email-hs@denx.de>
On 12/10/15 22:13, Heiko Schocher wrote:
> On some boards the energy enable detect mode leads in
> trouble with some switches, so make the enabling of
> this mode configurable through DT.
>
> Signed-off-by: Heiko Schocher <hs@denx.de>
> ---
>
> .../devicetree/bindings/net/smsc-lan87xx.txt | 19 +++++++++++++++++
> drivers/net/phy/smsc.c | 24 +++++++++++++++++-----
> 2 files changed, 38 insertions(+), 5 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/net/smsc-lan87xx.txt
>
> diff --git a/Documentation/devicetree/bindings/net/smsc-lan87xx.txt b/Documentation/devicetree/bindings/net/smsc-lan87xx.txt
> new file mode 100644
> index 0000000..39aa1dc
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/smsc-lan87xx.txt
> @@ -0,0 +1,19 @@
> +SMSC LAN87xx Ethernet PHY
> +
> +Some boards require special tuning values. Configure them
> +through an Ethernet OF device node.
> +
> +Optional properties:
> +
> +- disable-energy-detect:
> + If set, do not enable energy detect mode for the SMSC phy.
> + default: enable energy detect mode
Although energy detection is something that is implemented by many PHYs,
I am not sure a generic property is suitable here, I would prefix that
with the SMSC vendor prefix here to make it clear this only applies to
this PHY.
Would not you want to make it a reverse property here though, something
like this:
smsc,energy-detect: boolean, when present indicates the PHY reliably
supports energy detection
> +
> +Examples:
> +
> + /* Attach to an Ethernet device with autodetected PHY */
> + &cpsw_emac0 {
> + phy_id = <&davinci_mdio>, <0>;
> + phy-mode = "mii";
> + disable-energy-detect;
> + };
> diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
> index 70b0895..f90fbf3 100644
> --- a/drivers/net/phy/smsc.c
> +++ b/drivers/net/phy/smsc.c
> @@ -43,16 +43,30 @@ static int smsc_phy_ack_interrupt(struct phy_device *phydev)
>
> static int smsc_phy_config_init(struct phy_device *phydev)
> {
> +#ifdef CONFIG_OF
> + int len;
> + struct device *dev = &phydev->dev;
> + struct device_node *of_node = dev->of_node;
That does not need to be ifdefd out, at best annontate with __maybe_unused?
> +#endif
> int rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
> + int enable_energy = 1;
>
> if (rc < 0)
> return rc;
>
> - /* Enable energy detect mode for this SMSC Transceivers */
> - rc = phy_write(phydev, MII_LAN83C185_CTRL_STATUS,
> - rc | MII_LAN83C185_EDPWRDOWN);
> - if (rc < 0)
> - return rc;
> +#ifdef CONFIG_OF
> + if (!of_node && dev->parent->of_node)
> + of_node = dev->parent->of_node;
That looks strange, why would the property be placed at the parent level
when this is a PHY device tree node property?
> + if (of_find_property(of_node, "disable-energy-detect", &len))
> + enable_energy = 0;
> +#endif
> + if (enable_energy) {
> + /* Enable energy detect mode for this SMSC Transceivers */
> + rc = phy_write(phydev, MII_LAN83C185_CTRL_STATUS,
> + rc | MII_LAN83C185_EDPWRDOWN);
> + if (rc < 0)
> + return rc;
> + }
>
> return smsc_phy_ack_interrupt(phydev);
> }
>
--
Florian
next prev parent reply other threads:[~2015-10-13 19:26 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-13 5:13 [PATCH] net: phy: smsc: disable energy detect mode Heiko Schocher
2015-10-13 19:26 ` Florian Fainelli [this message]
2015-10-14 4:17 ` Heiko Schocher
[not found] ` <561DD749.9000802-ynQEQJNshbs@public.gmane.org>
2015-10-16 5:37 ` Heiko Schocher
2015-10-16 16:27 ` Florian Fainelli
[not found] ` <CAGVrzcZLTg_2tUCTyMkEF7y-Esh5ByZsputO6u41RLPizCcz+Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-10-17 3:42 ` Heiko Schocher
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=561D5AC8.7040801@gmail.com \
--to=f.fainelli@gmail.com \
--cc=Georg.Soffel@bosch-si.com \
--cc=devicetree@vger.kernel.org \
--cc=hs@denx.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).