From: "René van Dorst" <opensource@vdorst.com>
To: DENG Qingfang <dqfext@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
Heiner Kallweit <hkallweit1@gmail.com>,
Jakub Kicinski <kuba@kernel.org>,
Landen Chao <Landen.Chao@mediatek.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
Russell King <linux@armlinux.org.uk>,
Sean Wang <sean.wang@mediatek.com>,
Vivien Didelot <vivien.didelot@gmail.com>,
Vladimir Oltean <olteanv@gmail.com>,
Rob Herring <robh+dt@kernel.org>,
Linus Walleij <linus.walleij@linaro.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Sergio Paracuellos <sergio.paracuellos@gmail.com>,
linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
linux-staging@lists.linux.dev, devicetree@vger.kernel.org,
netdev@vger.kernel.org, Weijie Gao <weijie.gao@mediatek.com>,
Chuanhong Guo <gch981213@gmail.com>,
Frank Wunderlich <frank-w@public-files.de>,
Thomas Gleixner <tglx@linutronix.de>,
Marc Zyngier <maz@kernel.org>
Subject: Re: [RFC v4 net-next 1/4] net: phy: add MediaTek PHY driver
Date: Mon, 12 Apr 2021 07:04:49 +0000 [thread overview]
Message-ID: <20210412070449.Horde.wg9CWXW8V9o0P-heKYtQpVh@www.vdorst.com> (raw)
In-Reply-To: <20210412034237.2473017-2-dqfext@gmail.com>
Hi Qingfang,
Quoting DENG Qingfang <dqfext@gmail.com>:
> Add support for MediaTek PHYs found in MT7530 and MT7531 switches.
> The initialization procedure is from the vendor driver, but due to lack
> of documentation, the function of some register values remains unknown.
>
> Signed-off-by: DENG Qingfang <dqfext@gmail.com>
> ---
> RFC v3 -> RFC v4:
> - Remove unused include.
>
> drivers/net/phy/Kconfig | 5 ++
> drivers/net/phy/Makefile | 1 +
> drivers/net/phy/mediatek.c | 111 +++++++++++++++++++++++++++++++++++++
> 3 files changed, 117 insertions(+)
> create mode 100644 drivers/net/phy/mediatek.c
>
> diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
> index a615b3660b05..edd858cec9ec 100644
> --- a/drivers/net/phy/Kconfig
> +++ b/drivers/net/phy/Kconfig
> @@ -207,6 +207,11 @@ config MARVELL_88X2222_PHY
> Support for the Marvell 88X2222 Dual-port Multi-speed Ethernet
> Transceiver.
>
> +config MEDIATEK_PHY
> + tristate "MediaTek PHYs"
> + help
> + Supports the MediaTek switch integrated PHYs.
> +
> config MICREL_PHY
> tristate "Micrel PHYs"
> help
> diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
> index de683e3abe63..9ed7dbab7770 100644
> --- a/drivers/net/phy/Makefile
> +++ b/drivers/net/phy/Makefile
> @@ -64,6 +64,7 @@ obj-$(CONFIG_LXT_PHY) += lxt.o
> obj-$(CONFIG_MARVELL_10G_PHY) += marvell10g.o
> obj-$(CONFIG_MARVELL_PHY) += marvell.o
> obj-$(CONFIG_MARVELL_88X2222_PHY) += marvell-88x2222.o
> +obj-$(CONFIG_MEDIATEK_PHY) += mediatek.o
> obj-$(CONFIG_MESON_GXL_PHY) += meson-gxl.o
> obj-$(CONFIG_MICREL_KS8995MA) += spi_ks8995.o
> obj-$(CONFIG_MICREL_PHY) += micrel.o
> diff --git a/drivers/net/phy/mediatek.c b/drivers/net/phy/mediatek.c
> new file mode 100644
> index 000000000000..1627b7c04345
> --- /dev/null
> +++ b/drivers/net/phy/mediatek.c
> @@ -0,0 +1,111 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +#include <linux/module.h>
> +#include <linux/phy.h>
> +
> +#define MTK_EXT_PAGE_ACCESS 0x1f
> +#define MTK_PHY_PAGE_STANDARD 0x0000
> +#define MTK_PHY_PAGE_EXTENDED 0x0001
> +#define MTK_PHY_PAGE_EXTENDED_2 0x0002
> +#define MTK_PHY_PAGE_EXTENDED_3 0x0003
> +#define MTK_PHY_PAGE_EXTENDED_2A30 0x2a30
> +#define MTK_PHY_PAGE_EXTENDED_52B5 0x52b5
> +
> +static int mtk_phy_read_page(struct phy_device *phydev)
> +{
> + return __phy_read(phydev, MTK_EXT_PAGE_ACCESS);
> +}
> +
> +static int mtk_phy_write_page(struct phy_device *phydev, int page)
> +{
> + return __phy_write(phydev, MTK_EXT_PAGE_ACCESS, page);
> +}
> +
> +static void mtk_phy_config_init(struct phy_device *phydev)
> +{
> + /* Disable EEE */
> + phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, 0);
For my EEE patch I changed this line to:
genphy_config_eee_advert(phydev);
So PHY EEE part is setup properly at boot, instead enable it manual
via ethtool.
This function also takes the DTS parameters "eee-broken-xxxx" in to
account while
setting-up the PHY.
> +
> + /* Enable HW auto downshift */
> + phy_modify_paged(phydev, MTK_PHY_PAGE_EXTENDED, 0x14, 0, BIT(4));
> +
> + /* Increase SlvDPSready time */
> + phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
> + __phy_write(phydev, 0x10, 0xafae);
> + __phy_write(phydev, 0x12, 0x2f);
> + __phy_write(phydev, 0x10, 0x8fae);
> + phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
> +
> + /* Adjust 100_mse_threshold */
> + phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x123, 0xffff);
> +
> + /* Disable mcc */
> + phy_write_mmd(phydev, MDIO_MMD_VEND1, 0xa6, 0x300);
> +}
> +
Greats,
René
next prev parent reply other threads:[~2021-04-12 7:04 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-12 3:42 [RFC v4 net-next 0/4] MT7530 interrupt support DENG Qingfang
2021-04-12 3:42 ` [RFC v4 net-next 1/4] net: phy: add MediaTek PHY driver DENG Qingfang
2021-04-12 7:04 ` René van Dorst [this message]
2021-04-12 15:08 ` DENG Qingfang
2021-04-13 3:59 ` DENG Qingfang
2021-04-13 9:55 ` René van Dorst
2021-04-13 13:12 ` Russell King - ARM Linux admin
2021-04-15 9:49 ` DENG Qingfang
2021-04-12 3:42 ` [RFC v4 net-next 2/4] net: dsa: mt7530: add interrupt support DENG Qingfang
2021-04-12 8:21 ` Marc Zyngier
2021-04-12 15:22 ` DENG Qingfang
2021-04-13 0:07 ` Andrew Lunn
2021-04-13 8:06 ` Marc Zyngier
2021-04-13 12:52 ` Andrew Lunn
2021-04-13 15:29 ` DENG Qingfang
2021-04-12 3:42 ` [RFC v4 net-next 3/4] dt-bindings: net: dsa: add MT7530 interrupt controller binding DENG Qingfang
2021-04-12 10:33 ` Kurt Kanzenbach
2021-04-12 3:42 ` [RFC v4 net-next 4/4] staging: mt7621-dts: enable MT7530 interrupt controller DENG Qingfang
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=20210412070449.Horde.wg9CWXW8V9o0P-heKYtQpVh@www.vdorst.com \
--to=opensource@vdorst.com \
--cc=Landen.Chao@mediatek.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=dqfext@gmail.com \
--cc=f.fainelli@gmail.com \
--cc=frank-w@public-files.de \
--cc=gch981213@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-staging@lists.linux.dev \
--cc=linux@armlinux.org.uk \
--cc=matthias.bgg@gmail.com \
--cc=maz@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=robh+dt@kernel.org \
--cc=sean.wang@mediatek.com \
--cc=sergio.paracuellos@gmail.com \
--cc=tglx@linutronix.de \
--cc=vivien.didelot@gmail.com \
--cc=weijie.gao@mediatek.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).