From: Florian Fainelli <f.fainelli@gmail.com>
To: David Wu <david.wu@rock-chips.com>,
davem@davemloft.net, heiko@sntech.de, robh+dt@kernel.org,
mark.rutland@arm.com, catalin.marinas@arm.com,
will.deacon@arm.com, olof@lixom.net, linux@armlinux.org.uk,
arnd@arndb.de
Cc: andrew@lunn.ch, peppe.cavallaro@st.com, alexandre.torgue@st.com,
huangtao@rock-chips.com, hwg@rock-chips.com,
netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 01/11] net: phy: Add rockchip phy driver support
Date: Fri, 23 Jun 2017 09:18:24 -0700 [thread overview]
Message-ID: <52e9b0d3-0db4-cc03-91a6-774d16115f0f@gmail.com> (raw)
In-Reply-To: <1498192929-7519-2-git-send-email-david.wu@rock-chips.com>
On 06/22/2017 09:41 PM, David Wu wrote:
> Support internal ephy currently.
>
> Signed-off-by: David Wu <david.wu@rock-chips.com>
> ---
> drivers/net/phy/Kconfig | 4 ++
> drivers/net/phy/Makefile | 1 +
> drivers/net/phy/rockchip.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 99 insertions(+)
> create mode 100644 drivers/net/phy/rockchip.c
>
> diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
> index c360dd6..86010d4 100644
> --- a/drivers/net/phy/Kconfig
> +++ b/drivers/net/phy/Kconfig
> @@ -350,6 +350,10 @@ config XILINX_GMII2RGMII
> the Reduced Gigabit Media Independent Interface(RGMII) between
> Ethernet physical media devices and the Gigabit Ethernet controller.
>
> +config ROCKCHIP_MAC_PHY
> + tristate "Drivers for ROCKCHIP MAC PHY"
> + ---help---
> + Currently supports the mac internal ephy.
> endif # PHYLIB
>
> config MICREL_KS8995MA
> diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
> index e36db9a..6d96779 100644
> --- a/drivers/net/phy/Makefile
> +++ b/drivers/net/phy/Makefile
> @@ -69,3 +69,4 @@ obj-$(CONFIG_STE10XP) += ste10Xp.o
> obj-$(CONFIG_TERANETICS_PHY) += teranetics.o
> obj-$(CONFIG_VITESSE_PHY) += vitesse.o
> obj-$(CONFIG_XILINX_GMII2RGMII) += xilinx_gmii2rgmii.o
> +obj-$(CONFIG_ROCKCHIP_MAC_PHY) += rockchip.o
> diff --git a/drivers/net/phy/rockchip.c b/drivers/net/phy/rockchip.c
> new file mode 100644
> index 0000000..69e96ec
> --- /dev/null
> +++ b/drivers/net/phy/rockchip.c
> @@ -0,0 +1,94 @@
> +/**
> + * Rockchip mac phy driver
MAC and PHY, capitalized.
> + *
> + * Copyright (c) 2017, Fuzhou Rockchip Electronics Co., Ltd
> + *
> + * David Wu<david.wu@rock-chips.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + */
> +
> +
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/mii.h>
> +#include <linux/ethtool.h>
> +#include <linux/phy.h>
> +#include <linux/netdevice.h>
> +
> +static int internal_config_init(struct phy_device *phydev)
> +{
> + int val;
> + u32 features;
> +
> + /*enable auto mdix*/
> + phy_write(phydev, 0x11, 0x0080);
That is probably the only meaningful change needed by this driver, and
even that is not quite correct because auto MDI-X can be changed from
user-space through ethtool, see
drivers/net/phy/marvell.c::marvell_config_aneg()
> +
> + features = (SUPPORTED_TP | SUPPORTED_MII
> + | SUPPORTED_AUI | SUPPORTED_FIBRE |
> + SUPPORTED_BNC);
This is not necessary, using driver::features set to PHY_GBIT_FEATURES
> +
> + /* Do we support autonegotiation? */
> + val = phy_read(phydev, MII_BMSR);
> + if (val < 0)
> + return val;
> +
> + if (val & BMSR_ANEGCAPABLE)
> + features |= SUPPORTED_Autoneg;
If we have disabled auto-negotiation prior to probing this driver, and
somehow the PHY is not reset, then you are falsely not advertising
support for auto-negotiation just because it *currently is* disabled.
> +
> + if (val & BMSR_100FULL)
> + features |= SUPPORTED_100baseT_Full;
> + if (val & BMSR_100HALF)
> + features |= SUPPORTED_100baseT_Half;
> + if (val & BMSR_10FULL)
> + features |= SUPPORTED_10baseT_Full;
> + if (val & BMSR_10HALF)
> + features |= SUPPORTED_10baseT_Half;
> +
> + if (val & BMSR_ESTATEN) {
> + val = phy_read(phydev, MII_ESTATUS);
> + if (val < 0)
> + return val;
> +
> + if (val & ESTATUS_1000_TFULL)
> + features |= SUPPORTED_1000baseT_Full;
> + if (val & ESTATUS_1000_THALF)
> + features |= SUPPORTED_1000baseT_Half;
> + }
> +
> + phydev->supported = features;
> + phydev->advertising = features;
> +
> + return 0;
> +}
> +
> +static struct phy_driver rockchip_phy_driver[] = {
> +{
> + .phy_id = 0x1234d400,
> + .phy_id_mask = 0xffffffff,
Last 4 digits are supposed to hold the revision, do you really need to
have such a strict mask here?
> + .name = "rockchip internal ephy",
> + .features = 0,
features shoul dbe set to what you support: PHY_GBIT_FEAUTERS
> + .config_init = internal_config_init,
> + .config_aneg = genphy_config_aneg,
> + .read_status = genphy_read_status,
> + .suspend = genphy_suspend,
> + .resume = genphy_resume,
> +},
> +};
> +
> +module_phy_driver(rockchip_phy_driver);
> +
> +static struct mdio_device_id __maybe_unused rockchip_phy_tbl[] = {
> + { 0x1234d400, 0xffffffff },
> + { }
> +};
> +
> +MODULE_DEVICE_TABLE(mdio, rockchip_phy_tbl);
> +
> +MODULE_AUTHOR("David Wu<david.wu@rock-chips.com>");
> +MODULE_DESCRIPTION("Rockchip mac phy driver");
> +MODULE_LICENSE("GPL v2");
>
--
Florian
next prev parent reply other threads:[~2017-06-23 16:18 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-23 4:41 [PATCH 00/11] Add the mac internal ephy support David Wu
2017-06-23 4:41 ` [PATCH 01/11] net: phy: Add rockchip phy driver support David Wu
2017-06-23 13:55 ` Andrew Lunn
2017-06-23 16:18 ` Florian Fainelli [this message]
2017-06-24 2:10 ` Andrew Lunn
[not found] ` <1498192929-7519-2-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2017-06-24 2:19 ` Andrew Lunn
[not found] ` <20170624021910.GB4875-g2DYL2Zd6BY@public.gmane.org>
2017-06-24 8:38 ` Heiko Stuebner
2017-06-24 14:04 ` Andrew Lunn
[not found] ` <20170624140406.GL4875-g2DYL2Zd6BY@public.gmane.org>
2017-06-24 16:05 ` Heiko Stuebner
2017-06-27 14:44 ` David.Wu
2017-06-27 14:46 ` Andrew Lunn
2017-06-27 15:07 ` David.Wu
2017-06-23 4:42 ` [PATCH 02/11] multi_v7_defconfig: Make rockchip mac phy built-in David Wu
2017-06-23 4:42 ` [PATCH 03/11] arm64: defconfig: Enable CONFIG_ROCKCHIP_MAC_PHY David Wu
2017-06-23 5:02 ` [PATCH 08/11] ARM: dts: rk322x: Add support internal phy for gmac David Wu
2017-06-23 5:03 ` [PATCH 10/11] ARM64: dts: rockchip: Add gmac2phy node support for rk3328 David Wu
[not found] ` <1498192929-7519-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2017-06-23 4:42 ` [PATCH 04/11] net: stmmac: dwmac-rk: Remove unwanted code for rk3328_set_to_rmii() David Wu
[not found] ` <1498192929-7519-5-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2017-06-24 2:22 ` Andrew Lunn
2017-06-23 4:59 ` [PATCH 05/11] net: stmmac: dwmac-rk: Add internal phy support David Wu
[not found] ` <1498193947-8011-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2017-06-23 16:22 ` Florian Fainelli
2017-06-27 14:21 ` David.Wu
2017-06-27 14:52 ` Andrew Lunn
2017-06-24 2:29 ` Andrew Lunn
2017-07-27 12:44 ` David.Wu
2017-06-23 17:19 ` Heiko Stuebner
2017-06-27 14:33 ` David.Wu
[not found] ` <924d248f-f1c0-7fa2-4b97-c4f753ffe35b-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2017-06-27 15:40 ` Heiko Stuebner
2017-06-23 4:59 ` [PATCH 06/11] net: stmmac: dwmac-rk: Add internal phy support for rk3228 David Wu
2017-06-23 5:01 ` [PATCH 07/11] net: stmmac: dwmac-rk: Add internal phy supprot for rk3328 David Wu
2017-06-23 5:02 ` [PATCH 09/11] ARM: dts: rk3228-evb: Enable the internal phy for gmac David Wu
2017-06-23 5:04 ` [PATCH 11/11] ARM64: dts: rockchip: Enable gmac2phy for rk3328-evb David Wu
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=52e9b0d3-0db4-cc03-91a6-774d16115f0f@gmail.com \
--to=f.fainelli@gmail.com \
--cc=alexandre.torgue@st.com \
--cc=andrew@lunn.ch \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=davem@davemloft.net \
--cc=david.wu@rock-chips.com \
--cc=devicetree@vger.kernel.org \
--cc=heiko@sntech.de \
--cc=huangtao@rock-chips.com \
--cc=hwg@rock-chips.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=mark.rutland@arm.com \
--cc=netdev@vger.kernel.org \
--cc=olof@lixom.net \
--cc=peppe.cavallaro@st.com \
--cc=robh+dt@kernel.org \
--cc=will.deacon@arm.com \
/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).