From: Florian Fainelli <f.fainelli@gmail.com>
To: Jaeden Amero <jaeden.amero@ni.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 3/3] net/phy: micrel: Center FLP timing at 16ms
Date: Fri, 05 Jun 2015 15:43:38 -0700 [thread overview]
Message-ID: <5572261A.1070801@gmail.com> (raw)
In-Reply-To: <1433544046-17595-4-git-send-email-jaeden.amero@ni.com>
On 05/06/15 15:40, Jaeden Amero wrote:
> Link failures have been observed when using the KSZ9031 with HP 1810-8G
> and HP 1910-8G network switches. Center the FLP timing at 16ms to help
> avoid intermittent link failures.
>
> From the KSZ9031RNX and KSZ9031MNX data sheets revision 2.2, section
> "Auto-Negotiation Timing":
> The KSZ9031[RNX or MNX] Fast Link Pulse (FLP) burst-to-burst
> transmit timing for Auto-Negotiation defaults to 8ms. IEEE 802.3
> Standard specifies this timing to be 16ms +/-8ms. Some PHY link
> partners need to receive the FLP with 16ms centered timing;
> otherwise, there can be intermittent link failures and long
> link-up times.
>
> After KSZ9031[RNX or MNX] power-up/reset, program the following
> register sequence to set the FLP timing to 16ms
>
> Write Register Dh = 0x0000 // Set up register address for MMD – Device Address 0h
> Write Register Eh = 0x0004 // Select Register 4h of MMD – Device Address 0h
> Write Register Dh = 0x4000 // Select register data for MMD – Device Address 0h, Register 4h
> Write Register Eh = 0x0006 // Write value 0x0006 to MMD – Device Address 0h, Register 4h
> Write Register Dh = 0x0000 // Set up register address for MMD – Device Address 0h
> Write Register Eh = 0x0003 // Select Register 3h of MMD – Device Address 0h
> Write Register Dh = 0x4000 // Select register data for MMD – Device Address 0h, Register 3h
> Write Register Eh = 0x1A80 // Write value 0x1A80 to MMD – Device Address 0h, Register 3h
> Write Register 0h, Bit [9] = 1 // Restart Auto-Negotiation
Quoting a portion of the data-sheet on how to do this programming is
very strange considering that the code is going to be the reference, not
the commit message.
Other than that, this looks reasonable.
>
> Signed-off-by: Jaeden Amero <jaeden.amero@ni.com>
> ---
> drivers/net/phy/micrel.c | 23 ++++++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
> index f23765e..499185e 100644
> --- a/drivers/net/phy/micrel.c
> +++ b/drivers/net/phy/micrel.c
> @@ -366,6 +366,10 @@ static int ksz9021_config_init(struct phy_device *phydev)
> #define KSZ9031_PS_TO_REG 60
>
> /* Extended registers */
> +/* MMD Address 0x0 */
> +#define MII_KSZ9031RN_FLP_BURST_TX_LO 3
> +#define MII_KSZ9031RN_FLP_BURST_TX_HI 4
> +
> /* MMD Address 0x2 */
> #define MII_KSZ9031RN_CONTROL_PAD_SKEW 4
> #define MII_KSZ9031RN_RX_DATA_PAD_SKEW 5
> @@ -427,6 +431,22 @@ static int ksz9031_of_load_skew_values(struct phy_device *phydev,
> return ksz9031_extended_write(phydev, OP_DATA, 2, reg, newval);
> }
>
> +static int ksz9031_center_flp_timing(struct phy_device *phydev)
> +{
> + int result;
> +
> + /* Center KSZ9031RNX FLP timing at 16ms. */
> + result = ksz9031_extended_write(phydev, OP_DATA, 0,
> + MII_KSZ9031RN_FLP_BURST_TX_HI, 0x0006);
> + result = ksz9031_extended_write(phydev, OP_DATA, 0,
> + MII_KSZ9031RN_FLP_BURST_TX_LO, 0x1A80);
> +
> + if (result)
> + return result;
> +
> + return genphy_restart_aneg(phydev);
> +}
> +
> static int ksz9031_config_init(struct phy_device *phydev)
> {
> const struct device *dev = &phydev->dev;
> @@ -462,7 +482,8 @@ static int ksz9031_config_init(struct phy_device *phydev)
> MII_KSZ9031RN_TX_DATA_PAD_SKEW, 4,
> tx_data_skews, 4);
> }
> - return 0;
> +
> + return ksz9031_center_flp_timing(phydev);
> }
>
> #define KSZ8873MLL_GLOBAL_CONTROL_4 0x06
>
--
Florian
next prev parent reply other threads:[~2015-06-05 22:44 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-05 22:40 [PATCH v3 0/3] net/phy: micrel: Center FLP timing at 16ms Jaeden Amero
2015-06-05 22:40 ` [PATCH v3 1/3] net/phy: micrel: Be more const correct Jaeden Amero
2015-06-05 22:40 ` [PATCH v3 2/3] net/phy: micrel: Comment MMD address of extended registers Jaeden Amero
2015-06-05 22:40 ` [PATCH v3 3/3] net/phy: micrel: Center FLP timing at 16ms Jaeden Amero
2015-06-05 22:40 ` Jaeden Amero
2015-06-05 22:43 ` Florian Fainelli [this message]
2015-06-05 22:50 ` Jaeden Amero
2015-06-05 22:44 ` [PATCH v3 0/3] " Florian Fainelli
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=5572261A.1070801@gmail.com \
--to=f.fainelli@gmail.com \
--cc=jaeden.amero@ni.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.