Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp4342133pxu; Mon, 12 Oct 2020 16:53:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzUGr9Wu3Kg9Ez6q+p15IdrlnY0Yb3UZ3u1+qZ30lzb6SUuhuKCa+1dS7iIdI57NyXDuAwH X-Received: by 2002:a17:906:3ada:: with SMTP id z26mr8478535ejd.151.1602546798361; Mon, 12 Oct 2020 16:53:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602546798; cv=none; d=google.com; s=arc-20160816; b=bD3tEBu3xOxTWdHWYtMM/WFSEgOjoDa84EFYD5/pwSHzOt8egHwVwJRmSTexO0OAf/ A6L1CMWLgv4JEE2Nu0zblum40KDwvKfuP33tLvMde9VJvrdH/o47Rm0sM8p/jYyrN3qW rSqv5QgYfMQxJwa60IZ5/tdPHRZ079PGOHy6eog8okF/EJWbBHqLQpgzo8K88io6IU7J CX8hxgaaSCaAG13SMOqlRebCRU/6rSm1/08GKmW5Qsvv3xjcQC7VGcrg0ClBksrPDYnn vHhHN89Zr+x0l3SDBKfBwVmlXxmNi6zMTrkWHmdojE9Tebyi+PkEOJSCfKOoA4KckPXO hkRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=q1o/T7YM5Cwb1K5tAoRfkFNcYSeNHk50phe/6YrVLdY=; b=u+J7O0+Pb6AHp9QhBCJjEqJQy5tbaDAuryxUMB3nzGxcbLPuAspIdlpTbnQCxKej/k ttPHaKocsVd574VD3DomTi5ixgWdOF4g47948KzPF5ZyVyhG0CGmfHbxZLKbS8jVjJ/Z L42AFOt+AkJAFZPajk3CXJGrOIt+jQV50CtbgUtEY8CVK1aKFGC+SqiPCaMJ4j8C6Y0e FWurCwlM+iaBc08+b7o/p1fG7V2/3lTO4fyHDf9wjvuJ5fz8EFypiMcdECIpL9MY5tW/ Q6mFKiRbM8DANPEpWXJ7UJPUglDeGtjuD8U3VXib8LPOyOxxk+tT1tbTi7UIF4iq/aQp om4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=QHuucRSA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gu3si14174774ejb.617.2020.10.12.16.52.55; Mon, 12 Oct 2020 16:53:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=QHuucRSA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390206AbgJLNxj (ORCPT + 99 others); Mon, 12 Oct 2020 09:53:39 -0400 Received: from mail.kernel.org ([198.145.29.99]:53874 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731429AbgJLNq5 (ORCPT ); Mon, 12 Oct 2020 09:46:57 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6AD52208B8; Mon, 12 Oct 2020 13:46:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1602510389; bh=YQmTHEgQK45UWR8Zv7twbvN/rtpSMcm8CB9CAec1tiU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QHuucRSA/J+xLpqi+s7Jfg2PaGJfVYeF1YWT71UHwi420c5ZLQ5PH2RaoDiGPZLKa eRZvSi8tRi2qyGSJp9dRGb+mBPbZ8SQIae9UOnIemO/Y8QysAT6cJpw335qSefVR30 8QSi0B/rcQNqSrTN3pEHBg9vokcVVXp6ZG4m21S0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Willy Liu , "David S. Miller" , Sasha Levin Subject: [PATCH 5.8 078/124] net: phy: realtek: fix rtl8211e rx/tx delay config Date: Mon, 12 Oct 2020 15:31:22 +0200 Message-Id: <20201012133150.635550581@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201012133146.834528783@linuxfoundation.org> References: <20201012133146.834528783@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Willy Liu [ Upstream commit bbc4d71d63549bcd003a430de18a72a742d8c91e ] There are two chip pins named TXDLY and RXDLY which actually adds the 2ns delays to TXC and RXC for TXD/RXD latching. These two pins can config via 4.7k-ohm resistor to 3.3V hw setting, but also config via software setting (extension page 0xa4 register 0x1c bit13 12 and 11). The configuration register definitions from table 13 official PHY datasheet: PHYAD[2:0] = PHY Address AN[1:0] = Auto-Negotiation Mode = Interface Mode Select RX Delay = RX Delay TX Delay = TX Delay SELRGV = RGMII/GMII Selection This table describes how to config these hw pins via external pull-high or pull- low resistor. It is a misunderstanding that mapping it as register bits below: 8:6 = PHY Address 5:4 = Auto-Negotiation 3 = Interface Mode Select 2 = RX Delay 1 = TX Delay 0 = SELRGV So I removed these descriptions above and add related settings as below: 14 = reserved 13 = force Tx RX Delay controlled by bit12 bit11 12 = Tx Delay 11 = Rx Delay 10:0 = Test && debug settings reserved by realtek Test && debug settings are not recommend to modify by default. Fixes: f81dadbcf7fd ("net: phy: realtek: Add rtl8211e rx/tx delays config") Signed-off-by: Willy Liu Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/phy/realtek.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c index c7229d022a27b..48ba757046cea 100644 --- a/drivers/net/phy/realtek.c +++ b/drivers/net/phy/realtek.c @@ -1,6 +1,5 @@ // SPDX-License-Identifier: GPL-2.0+ -/* - * drivers/net/phy/realtek.c +/* drivers/net/phy/realtek.c * * Driver for Realtek PHYs * @@ -32,9 +31,9 @@ #define RTL8211F_TX_DELAY BIT(8) #define RTL8211F_RX_DELAY BIT(3) -#define RTL8211E_TX_DELAY BIT(1) -#define RTL8211E_RX_DELAY BIT(2) -#define RTL8211E_MODE_MII_GMII BIT(3) +#define RTL8211E_CTRL_DELAY BIT(13) +#define RTL8211E_TX_DELAY BIT(12) +#define RTL8211E_RX_DELAY BIT(11) #define RTL8201F_ISR 0x1e #define RTL8201F_IER 0x13 @@ -246,16 +245,16 @@ static int rtl8211e_config_init(struct phy_device *phydev) /* enable TX/RX delay for rgmii-* modes, and disable them for rgmii. */ switch (phydev->interface) { case PHY_INTERFACE_MODE_RGMII: - val = 0; + val = RTL8211E_CTRL_DELAY | 0; break; case PHY_INTERFACE_MODE_RGMII_ID: - val = RTL8211E_TX_DELAY | RTL8211E_RX_DELAY; + val = RTL8211E_CTRL_DELAY | RTL8211E_TX_DELAY | RTL8211E_RX_DELAY; break; case PHY_INTERFACE_MODE_RGMII_RXID: - val = RTL8211E_RX_DELAY; + val = RTL8211E_CTRL_DELAY | RTL8211E_RX_DELAY; break; case PHY_INTERFACE_MODE_RGMII_TXID: - val = RTL8211E_TX_DELAY; + val = RTL8211E_CTRL_DELAY | RTL8211E_TX_DELAY; break; default: /* the rest of the modes imply leaving delays as is. */ return 0; @@ -263,11 +262,12 @@ static int rtl8211e_config_init(struct phy_device *phydev) /* According to a sample driver there is a 0x1c config register on the * 0xa4 extension page (0x7) layout. It can be used to disable/enable - * the RX/TX delays otherwise controlled by RXDLY/TXDLY pins. It can - * also be used to customize the whole configuration register: - * 8:6 = PHY Address, 5:4 = Auto-Negotiation, 3 = Interface Mode Select, - * 2 = RX Delay, 1 = TX Delay, 0 = SELRGV (see original PHY datasheet - * for details). + * the RX/TX delays otherwise controlled by RXDLY/TXDLY pins. + * The configuration register definition: + * 14 = reserved + * 13 = Force Tx RX Delay controlled by bit12 bit11, + * 12 = RX Delay, 11 = TX Delay + * 10:0 = Test && debug settings reserved by realtek */ oldpage = phy_select_page(phydev, 0x7); if (oldpage < 0) @@ -277,7 +277,8 @@ static int rtl8211e_config_init(struct phy_device *phydev) if (ret) goto err_restore_page; - ret = __phy_modify(phydev, 0x1c, RTL8211E_TX_DELAY | RTL8211E_RX_DELAY, + ret = __phy_modify(phydev, 0x1c, RTL8211E_CTRL_DELAY + | RTL8211E_TX_DELAY | RTL8211E_RX_DELAY, val); err_restore_page: -- 2.25.1