From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Philippe Schenker <philippe.schenker@toradex.com>
Cc: "kstewart@linuxfoundation.org" <kstewart@linuxfoundation.org>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"s.hauer@pengutronix.de" <s.hauer@pengutronix.de>,
"allison@lohutok.net" <allison@lohutok.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-imx@nxp.com" <linux-imx@nxp.com>,
"kernel@pengutronix.de" <kernel@pengutronix.de>,
"shawnguo@kernel.org" <shawnguo@kernel.org>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"festevam@gmail.com" <festevam@gmail.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH] ARM: mach-imx6q: add ksz9131rn_phy_fixup
Date: Fri, 6 Mar 2020 10:52:08 +0000 [thread overview]
Message-ID: <20200306105208.GG25745@shell.armlinux.org.uk> (raw)
In-Reply-To: <98f5901a121b83d4f7d75f9a9056bd3719e2ee89.camel@toradex.com>
On Fri, Mar 06, 2020 at 09:57:15AM +0000, Philippe Schenker wrote:
> On Thu, 2020-03-05 at 13:53 +0000, Russell King - ARM Linux admin wrote:
> > On Thu, Mar 05, 2020 at 02:49:28PM +0100, Philippe Schenker wrote:
> > > The MAC of the i.MX6 SoC is compliant with RGMII v1.3. The KSZ9131
> > > PHY
> > > is like KSZ9031 adhering to RGMII v2.0 specification. This means the
> > > MAC should provide a delay to the TXC line. Because the i.MX6 MAC
> > > does
> > > not provide this delay this has to be done in the PHY.
> > >
> > > This patch adds by default ~1.6ns delay to the TXC line. This should
> > > be good for all boards that have the RGMII signals routed with the
> > > same length.
> > >
> > > The KSZ9131 has relatively high tolerances on skew registers from
> > > MMD 2.4 to MMD 2.8. Therefore the new DLL-based delay of 2ns is used
> > > and then as little as possibly subtracted from that so we get more
> > > accurate delay. This is actually needed because the i.MX6 SoC has
> > > an asynchron skew on TXC from -100ps to 900ps, to get all RGMII
> > > values within spec.
> > >
> > > Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> > >
> > > ---
> > >
> > > arch/arm/mach-imx/mach-imx6q.c | 37
> > > ++++++++++++++++++++++++++++++++++
> > > 1 file changed, 37 insertions(+)
> > >
> > > diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-
> > > imx/mach-imx6q.c
> > > index edd26e0ffeec..8ae5f2fa33e2 100644
> > > --- a/arch/arm/mach-imx/mach-imx6q.c
> > > +++ b/arch/arm/mach-imx/mach-imx6q.c
> > > @@ -61,6 +61,14 @@ static void mmd_write_reg(struct phy_device *dev,
> > > int device, int reg, int val)
> > > phy_write(dev, 0x0e, val);
> > > }
> > >
> > > +static int mmd_read_reg(struct phy_device *dev, int device, int
> > > reg)
> > > +{
> > > + phy_write(dev, 0x0d, device);
> > > + phy_write(dev, 0x0e, reg);
> > > + phy_write(dev, 0x0d, (1 << 14) | device);
> > > + return phy_read(dev, 0x0e);
> > > +}
> >
> > These look like the standard MII MMD registers, and it also looks like
> > you're reinventing phy_read_mmd() - but badly due to lack of locking.
> >
> > I guess you need this because phy_read_mmd() may be modular - maybe
> > we should arrange for the accessors to be separately buildable into
> > the kernel, so that such fixups can stop badly reinventing the wheel?
>
> Yes, I did that because of two reasons:
> 1. I tried phy_read_mmd() and phy_write_mmd() but this panic'd
That is because phydev->drv->read_mmd and phydev->drv is NULL at this
point. There has been a patch around to solve that though.
> 2. There is already mmd_write_reg in that code so I thought it would be
> no big deal to also have a read in there.
>
> But yeah, you're right that mmd_write_reg is from 2013...
>
> How do you suggest to implement that?
>
> Philippe
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Philippe Schenker <philippe.schenker@toradex.com>
Cc: "linux-imx@nxp.com" <linux-imx@nxp.com>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"festevam@gmail.com" <festevam@gmail.com>,
"kernel@pengutronix.de" <kernel@pengutronix.de>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"kstewart@linuxfoundation.org" <kstewart@linuxfoundation.org>,
"allison@lohutok.net" <allison@lohutok.net>,
"shawnguo@kernel.org" <shawnguo@kernel.org>,
"s.hauer@pengutronix.de" <s.hauer@pengutronix.de>
Subject: Re: [PATCH] ARM: mach-imx6q: add ksz9131rn_phy_fixup
Date: Fri, 6 Mar 2020 10:52:08 +0000 [thread overview]
Message-ID: <20200306105208.GG25745@shell.armlinux.org.uk> (raw)
In-Reply-To: <98f5901a121b83d4f7d75f9a9056bd3719e2ee89.camel@toradex.com>
On Fri, Mar 06, 2020 at 09:57:15AM +0000, Philippe Schenker wrote:
> On Thu, 2020-03-05 at 13:53 +0000, Russell King - ARM Linux admin wrote:
> > On Thu, Mar 05, 2020 at 02:49:28PM +0100, Philippe Schenker wrote:
> > > The MAC of the i.MX6 SoC is compliant with RGMII v1.3. The KSZ9131
> > > PHY
> > > is like KSZ9031 adhering to RGMII v2.0 specification. This means the
> > > MAC should provide a delay to the TXC line. Because the i.MX6 MAC
> > > does
> > > not provide this delay this has to be done in the PHY.
> > >
> > > This patch adds by default ~1.6ns delay to the TXC line. This should
> > > be good for all boards that have the RGMII signals routed with the
> > > same length.
> > >
> > > The KSZ9131 has relatively high tolerances on skew registers from
> > > MMD 2.4 to MMD 2.8. Therefore the new DLL-based delay of 2ns is used
> > > and then as little as possibly subtracted from that so we get more
> > > accurate delay. This is actually needed because the i.MX6 SoC has
> > > an asynchron skew on TXC from -100ps to 900ps, to get all RGMII
> > > values within spec.
> > >
> > > Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> > >
> > > ---
> > >
> > > arch/arm/mach-imx/mach-imx6q.c | 37
> > > ++++++++++++++++++++++++++++++++++
> > > 1 file changed, 37 insertions(+)
> > >
> > > diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-
> > > imx/mach-imx6q.c
> > > index edd26e0ffeec..8ae5f2fa33e2 100644
> > > --- a/arch/arm/mach-imx/mach-imx6q.c
> > > +++ b/arch/arm/mach-imx/mach-imx6q.c
> > > @@ -61,6 +61,14 @@ static void mmd_write_reg(struct phy_device *dev,
> > > int device, int reg, int val)
> > > phy_write(dev, 0x0e, val);
> > > }
> > >
> > > +static int mmd_read_reg(struct phy_device *dev, int device, int
> > > reg)
> > > +{
> > > + phy_write(dev, 0x0d, device);
> > > + phy_write(dev, 0x0e, reg);
> > > + phy_write(dev, 0x0d, (1 << 14) | device);
> > > + return phy_read(dev, 0x0e);
> > > +}
> >
> > These look like the standard MII MMD registers, and it also looks like
> > you're reinventing phy_read_mmd() - but badly due to lack of locking.
> >
> > I guess you need this because phy_read_mmd() may be modular - maybe
> > we should arrange for the accessors to be separately buildable into
> > the kernel, so that such fixups can stop badly reinventing the wheel?
>
> Yes, I did that because of two reasons:
> 1. I tried phy_read_mmd() and phy_write_mmd() but this panic'd
That is because phydev->drv->read_mmd and phydev->drv is NULL at this
point. There has been a patch around to solve that though.
> 2. There is already mmd_write_reg in that code so I thought it would be
> no big deal to also have a read in there.
>
> But yeah, you're right that mmd_write_reg is from 2013...
>
> How do you suggest to implement that?
>
> Philippe
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up
next prev parent reply other threads:[~2020-03-06 10:52 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-05 13:49 [PATCH] ARM: mach-imx6q: add ksz9131rn_phy_fixup Philippe Schenker
2020-03-05 13:49 ` Philippe Schenker
2020-03-05 13:53 ` Russell King - ARM Linux admin
2020-03-05 13:53 ` Russell King - ARM Linux admin
2020-03-06 9:57 ` Philippe Schenker
2020-03-06 9:57 ` Philippe Schenker
2020-03-06 10:52 ` Russell King - ARM Linux admin [this message]
2020-03-06 10:52 ` Russell King - ARM Linux admin
2020-03-05 14:38 ` Oleksij Rempel
2020-03-05 14:38 ` Oleksij Rempel
2020-03-05 16:51 ` Andrew Lunn
2020-03-05 16:51 ` Andrew Lunn
2020-03-06 7:42 ` Ahmad Fatoum
2020-03-06 7:42 ` Ahmad Fatoum
2020-03-06 9:46 ` Philippe Schenker
2020-03-06 9:46 ` Philippe Schenker
2020-03-06 11:14 ` Ahmad Fatoum
2020-03-06 11:14 ` Ahmad Fatoum
2020-03-06 12:16 ` Philippe Schenker
2020-03-06 12:16 ` Philippe Schenker
2020-03-06 13:38 ` Andrew Lunn
2020-03-06 13:38 ` Andrew Lunn
2020-03-06 16:30 ` Philippe Schenker
2020-03-06 16:30 ` Philippe Schenker
2020-03-06 9:55 ` Philippe Schenker
2020-03-06 9:55 ` Philippe Schenker
2020-03-06 10:38 ` Oleksij Rempel
2020-03-06 10:38 ` Oleksij Rempel
2020-03-06 12:36 ` Philippe Schenker
2020-03-06 12:36 ` Philippe Schenker
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=20200306105208.GG25745@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=allison@lohutok.net \
--cc=festevam@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=kernel@pengutronix.de \
--cc=kstewart@linuxfoundation.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=philippe.schenker@toradex.com \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=tglx@linutronix.de \
/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.