From nobody Sun Feb 8 05:08:36 2026 Received: from mo4-p01-ob.smtp.rzone.de (mo4-p01-ob.smtp.rzone.de [81.169.146.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11CEC230BE5; Mon, 7 Apr 2025 18:22:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.164 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744050149; cv=pass; b=NamjCACoUWV1JFsyGL1w3bJz4U2pJjuq1KQOaBFT/t6FmumNCClNhcf7NgJ2hdjKRdGvupbV0q4EPpQ/CE+vTk2DLY0K/w+RalEXUPj7xnHHDG8voniQBl6+Z1Be08cndphF+Tm7qpFPa7gtljvnOpF2i1F3D4WNCauHpEe0V+Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744050149; c=relaxed/simple; bh=pWwN1fHpqKDNb8P33HMUlglgT5oRXv79Ga1dRUm3KX0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=sATMnGsOnDAFNrZiu2KodCLU5y/jWIii8uY2+NtWD8yH/1f5eyKMTS3pbZ45xmlSbpZp4/kITMJ1BgIew/oeg3WAS+WoXcuT4/nWpLWCQRWdyt+r2uQ6xWweZxqj5PB7O70qli6HhBxkbxPiC9TAlmnMuAJW5MaSv1CUxbHSXJc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fossekall.de; spf=pass smtp.mailfrom=a98shuttle.de; dkim=pass (2048-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=VPPzyJxC; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=mH0hK0/h; arc=pass smtp.client-ip=81.169.146.164 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fossekall.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=a98shuttle.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="VPPzyJxC"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="mH0hK0/h" ARC-Seal: i=1; a=rsa-sha256; t=1744050142; cv=none; d=strato.com; s=strato-dkim-0002; b=J3nZn0/ssvGT2rb4ODirIya8Hh87hXPua+MSamVJqb5TUX0E8EGLG2VQMXSicogNUY 3WnYq+zAbntuaGsON3P8y5x7M6S9hg8zm0UEScq6ceWv8dF0jEABExVgJOOfomVfYg2Q +4kWuy/C7Zlf9kqC5Q+qauFwOpZkKpXBTW+oKkIpP5CI3I3I62juIbiLt1ZYe/y0gTPQ OA4Xwr7czxKMb+tYcfBidjmHYAjuQ+jLEtg27wFRTlsfQmTi1a+jGIxIJJbmP2aj3PX8 O1Q2bgxtwDsW7c56+7l00oj4h3TQAHhFFxG6ZcZlc5GkyZH3VrT6rBm+PrL5bl0IfhDU FUHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1744050142; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=DRQWVNflVTSKFHFB9UYyJnOIp+l42TmftpYogCcmRdw=; b=HBegFbrtBL2Zth/bUEi3Cg4GPRZFJL/3J4WTXfWZTSrwpM93YSxoMqgrppDkwPvBQD 76vU+ibJio8LzagzHAR+9fTwc/1VUg5GDwSAVx2giELtW2ZJVjC1J2ZlUnYxqRxtegXb pNnL+JDDW2eemoJkR2vqvLq/tk6LD2GyEmIdYmvS1MaTrrhri3S6CwyckU1ffQGQY+MD M6NZ/DRlEeX0PqzYHGS18z0yT16pl+ibt02zqoNzGkyopuB9uFF95nNp5nseMgrZRGOA /hSZMd9ZuCYPWVhbvoS1DM/ZtUn8Xdx7HQI7r3h7QbRMM5j340H49NR769AvoQAY5JaM /t/g== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo01 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1744050142; s=strato-dkim-0002; d=fossekall.de; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=DRQWVNflVTSKFHFB9UYyJnOIp+l42TmftpYogCcmRdw=; b=VPPzyJxCbwj3qt6R9AKL1OHfNAi0T65pGaebY0lGC8iEjNFE2ezByJUxvO98md8z8R XGZqsjRkaJ3uBCfQgI/Ytq61EsDHgpaWE//5AYNJkH3nIgdUvZ6W+ahmW9azvZXLqYWF cDuSTTKmr2rjCF7l00Br4EnIDkljDla/4jNYMmK2Oj6jSDq1/wKS9/ggTaUbvsS+5k5H YQj/Zd7Cd1PY9Tdyq2NFxpANad2nm47E7DkzyDNCKWVd3MkWqZUglUY1m4mALVISyOJE 4VXFQ431DPvdMsWXQT5mEjtKpVqd9YjYvZOIvvBaKIfXlHDYLU1X1Dp16CLI2JdTkzQ2 qsoQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1744050142; s=strato-dkim-0003; d=fossekall.de; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=DRQWVNflVTSKFHFB9UYyJnOIp+l42TmftpYogCcmRdw=; b=mH0hK0/h0xoYAHdUZzGE0V7m+gxE10u/KwiuMBaXBCY2g2vYUl+lDPab6/0yNAjVEL 6OCSK+1gLAt9vHec41Dg== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35137IMMyOo (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 7 Apr 2025 20:22:22 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1u1r6z-0003xq-2Q; Mon, 07 Apr 2025 20:22:21 +0200 Received: (nullmailer pid 15036 invoked by uid 502); Mon, 07 Apr 2025 18:22:21 -0000 From: Michael Klein To: Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Michael Klein , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RESEND net-next v5 1/4] net: phy: realtek: Group RTL82* macro definitions Date: Mon, 7 Apr 2025 20:21:40 +0200 Message-Id: <20250407182155.14925-2-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250407182155.14925-1-michael@fossekall.de> References: <20250407182155.14925-1-michael@fossekall.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Group macro definitions by chip number in lexicographic order. Signed-off-by: Michael Klein --- drivers/net/phy/realtek/realtek_main.c | 30 +++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index 893c82479671..b27c0f995e56 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -17,6 +17,15 @@ =20 #include "realtek.h" =20 +#define RTL8201F_ISR 0x1e +#define RTL8201F_ISR_ANERR BIT(15) +#define RTL8201F_ISR_DUPLEX BIT(13) +#define RTL8201F_ISR_LINK BIT(11) +#define RTL8201F_ISR_MASK (RTL8201F_ISR_ANERR | \ + RTL8201F_ISR_DUPLEX | \ + RTL8201F_ISR_LINK) +#define RTL8201F_IER 0x13 + #define RTL821x_PHYSR 0x11 #define RTL821x_PHYSR_DUPLEX BIT(13) #define RTL821x_PHYSR_SPEED GENMASK(15, 14) @@ -31,6 +40,10 @@ #define RTL821x_EXT_PAGE_SELECT 0x1e #define RTL821x_PAGE_SELECT 0x1f =20 +#define RTL8211E_CTRL_DELAY BIT(13) +#define RTL8211E_TX_DELAY BIT(12) +#define RTL8211E_RX_DELAY BIT(11) + #define RTL8211F_PHYCR1 0x18 #define RTL8211F_PHYCR2 0x19 #define RTL8211F_CLKOUT_EN BIT(0) @@ -47,6 +60,8 @@ #define RTL8211F_LEDCR_MASK GENMASK(4, 0) #define RTL8211F_LEDCR_SHIFT 5 =20 +#define RTL8211F_LED_COUNT 3 + #define RTL8211F_TX_DELAY BIT(8) #define RTL8211F_RX_DELAY BIT(3) =20 @@ -54,19 +69,6 @@ #define RTL8211F_ALDPS_ENABLE BIT(2) #define RTL8211F_ALDPS_XTAL_OFF BIT(12) =20 -#define RTL8211E_CTRL_DELAY BIT(13) -#define RTL8211E_TX_DELAY BIT(12) -#define RTL8211E_RX_DELAY BIT(11) - -#define RTL8201F_ISR 0x1e -#define RTL8201F_ISR_ANERR BIT(15) -#define RTL8201F_ISR_DUPLEX BIT(13) -#define RTL8201F_ISR_LINK BIT(11) -#define RTL8201F_ISR_MASK (RTL8201F_ISR_ANERR | \ - RTL8201F_ISR_DUPLEX | \ - RTL8201F_ISR_LINK) -#define RTL8201F_IER 0x13 - #define RTL822X_VND1_SERDES_OPTION 0x697a #define RTL822X_VND1_SERDES_OPTION_MODE_MASK GENMASK(5, 0) #define RTL822X_VND1_SERDES_OPTION_MODE_2500BASEX_SGMII 0 @@ -112,8 +114,6 @@ #define RTL_8221B_VN_CG 0x001cc84a #define RTL_8251B 0x001cc862 =20 -#define RTL8211F_LED_COUNT 3 - MODULE_DESCRIPTION("Realtek PHY driver"); MODULE_AUTHOR("Johnson Leung"); MODULE_LICENSE("GPL"); --=20 2.39.5 From nobody Sun Feb 8 05:08:36 2026 Received: from mo4-p02-ob.smtp.rzone.de (mo4-p02-ob.smtp.rzone.de [85.215.255.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 78827257D; Mon, 7 Apr 2025 18:28:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744050512; cv=pass; b=R7rFcFe2C6zxQka8+IbVN9QF+Qo2cOvcLSgZvmJwneHtZ0ZRSVQ3V/zVnEoXhvt64k0WPHdM+BniAhsRUaJELyB/kQl3H33TGGzmzaFk5DnWW/2xhpK8jxYrfc9QHcNbxwlZ0bZo0KYsZagq79IWz+9tRkewMflqxt/AJDKz6mU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744050512; c=relaxed/simple; bh=U/3mjJa7+vRHonlRAAZfA88e/j7vMnEK9dHvRxvTqMw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=PwzvNry88lI3G0BDnI8o4DpExLE4J1pI7XFrrlqNTf/FYchs7Sy36P2hVec/czHKjc+GLDbx7xY2Umw4mGoHQFIvTA+eOXDQ2CJ6k/NNitUAswik9eA5GgJfgWMVze3U6DuH5zjdpSy1Fx3xJl5NipzXuCEk0rbig3XXrrs9ccc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fossekall.de; spf=pass smtp.mailfrom=a98shuttle.de; dkim=pass (2048-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=RQu2kvlx; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=dXCj3elT; arc=pass smtp.client-ip=85.215.255.80 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fossekall.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=a98shuttle.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="RQu2kvlx"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="dXCj3elT" ARC-Seal: i=1; a=rsa-sha256; t=1744050144; cv=none; d=strato.com; s=strato-dkim-0002; b=Wv4Xiy4oMg6Lgcd/bbuQKd5EdE/tTxrLqRiJWua6iu3lok0RMzO8xemCGp8d3x5D7H EgV72M5f7sCHqj2SU8wv31sD8iESFyDzpyjFzo17VP2wnQ8QyVi2sBHaPa84ayw3bcby bVvVqp//YRGgrWbzFkxDRSK3Q1faGBUjLNaJDyEu7wyGNC83BvBYVAtuoYf+pCNRaKEy ZWNBb2c90l9nLgDci7yTK/8hmobbmulygf/NMOzwRURs4C8pHTfG5ohtEH1pQNAmpEfs by70YfOE6ljgTqz3FailwMTZtSPAQorlNKXsLPG3QHN9jgf50Wctx8oqo+Me2o+G13Zx 6dGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1744050144; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=4WusYsCr3PnM/I7INx3XdhXuW9evRki5Ti1YpCs2K0Y=; b=CrKfY5ZVABxKLyOKnchmOergPPZIMNUMCkfOmxY/a1rSAB3SyIXsjuPSfTZMti1ZCm AgM8dSTKmQYByFEV5k089bLIHKNtVkLSLHLxXyGJKfIgHVX4C4+Jk/pAwBs8YMTY3Sib rOUpL6GGXO/4X77KaZV3TEs3XFC+Z+kViThfmQUBCKOJPBI08byF3lrjOu4xmiRmM3OK a/MuHoV5x7pVVuos2zkiFLUFb9/8xzMz0+4e8Pc5kwCHZsd9oKI76gbVfPqdppspXHyG buTdWV64nQMehHWzZOAzWtVQerxMrjNSX3zRLDK3DK9OCPyOxAq/yE55rwg4Gd9LKSHx siVQ== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo02 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1744050144; s=strato-dkim-0002; d=fossekall.de; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=4WusYsCr3PnM/I7INx3XdhXuW9evRki5Ti1YpCs2K0Y=; b=RQu2kvlxcPguqO2mk2waw54WMS3k1Kaq0aYIq+pvjcpzmwUpHmKYsT/PcNOs/KGKrQ i6H8G2ewlZJyxkHyzSRA+UAYPMmZQBm9K1SCAkRMC4n3lCzanFKFebR37nZJVGGNoqG/ WGm5xlCdaJuJKnWHQQSNlwLNQzlsSoip3PAneGxqU2J6I3GsSjS8zZ6aIv5JylF2J8pD ylxFbLHaYs8YLMWnR62MlVQ51HJavZSSB3G3aZee/J+pR3E5jnAhV4LrJVJHWhYtyfdr CtVXLThq2qsPdkK8OZPWPbObeKne2LsSXVE5NsG1l0+aDNeK1v5L1iMYj4uiIaKZm4OL TcDw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1744050144; s=strato-dkim-0003; d=fossekall.de; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=4WusYsCr3PnM/I7INx3XdhXuW9evRki5Ti1YpCs2K0Y=; b=dXCj3elTgekOpOyn+6yUAQQDElbGVaDjyLe0a+E6EZ7aR6SByifnadlaWkZC4SkhGh c70/6HTzrF5lk33NZkCg== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35137IMOyOq (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 7 Apr 2025 20:22:24 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1u1r71-0003y8-1a; Mon, 07 Apr 2025 20:22:23 +0200 Received: (nullmailer pid 15050 invoked by uid 502); Mon, 07 Apr 2025 18:22:23 -0000 From: Michael Klein To: Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Michael Klein , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RESEND net-next v5 2/4] net: phy: realtek: Clean up RTL8211E ExtPage access Date: Mon, 7 Apr 2025 20:21:41 +0200 Message-Id: <20250407182155.14925-3-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250407182155.14925-1-michael@fossekall.de> References: <20250407182155.14925-1-michael@fossekall.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" - Factor out RTL8211E extension page access code to rtl8211e_modify_ext_page() and clean up rtl8211e_config_init() Signed-off-by: Michael Klein --- drivers/net/phy/realtek/realtek_main.c | 38 +++++++++++++++----------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index b27c0f995e56..e60c18551a4e 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -37,9 +37,11 @@ =20 #define RTL821x_INSR 0x13 =20 -#define RTL821x_EXT_PAGE_SELECT 0x1e #define RTL821x_PAGE_SELECT 0x1f =20 +#define RTL8211E_EXT_PAGE_SELECT 0x1e +#define RTL8211E_SET_EXT_PAGE 0x07 + #define RTL8211E_CTRL_DELAY BIT(13) #define RTL8211E_TX_DELAY BIT(12) #define RTL8211E_RX_DELAY BIT(11) @@ -135,6 +137,21 @@ static int rtl821x_write_page(struct phy_device *phyde= v, int page) return __phy_write(phydev, RTL821x_PAGE_SELECT, page); } =20 +static int rtl8211e_modify_ext_page(struct phy_device *phydev, u16 ext_pag= e, + u32 regnum, u16 mask, u16 set) +{ + int oldpage, ret =3D 0; + + oldpage =3D phy_select_page(phydev, RTL8211E_SET_EXT_PAGE); + if (oldpage >=3D 0) { + ret =3D __phy_write(phydev, RTL8211E_EXT_PAGE_SELECT, ext_page); + if (ret =3D=3D 0) + ret =3D __phy_modify(phydev, regnum, mask, set); + } + + return phy_restore_page(phydev, oldpage, ret); +} + static int rtl821x_probe(struct phy_device *phydev) { struct device *dev =3D &phydev->mdio.dev; @@ -607,7 +624,9 @@ static int rtl8211f_led_hw_control_set(struct phy_devic= e *phydev, u8 index, =20 static int rtl8211e_config_init(struct phy_device *phydev) { - int ret =3D 0, oldpage; + const u16 delay_mask =3D RTL8211E_CTRL_DELAY | + RTL8211E_TX_DELAY | + RTL8211E_RX_DELAY; u16 val; =20 /* enable TX/RX delay for rgmii-* modes, and disable them for rgmii. */ @@ -637,20 +656,7 @@ static int rtl8211e_config_init(struct phy_device *phy= dev) * 12 =3D RX Delay, 11 =3D TX Delay * 10:0 =3D Test && debug settings reserved by realtek */ - oldpage =3D phy_select_page(phydev, 0x7); - if (oldpage < 0) - goto err_restore_page; - - ret =3D __phy_write(phydev, RTL821x_EXT_PAGE_SELECT, 0xa4); - if (ret) - goto err_restore_page; - - ret =3D __phy_modify(phydev, 0x1c, RTL8211E_CTRL_DELAY - | RTL8211E_TX_DELAY | RTL8211E_RX_DELAY, - val); - -err_restore_page: - return phy_restore_page(phydev, oldpage, ret); + return rtl8211e_modify_ext_page(phydev, 0xa4, 0x1c, delay_mask, val); } =20 static int rtl8211b_suspend(struct phy_device *phydev) --=20 2.39.5 From nobody Sun Feb 8 05:08:36 2026 Received: from mo4-p02-ob.smtp.rzone.de (mo4-p02-ob.smtp.rzone.de [85.215.255.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 38B3F21ADC7; Mon, 7 Apr 2025 18:28:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.83 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744050514; cv=pass; b=k6jB1rQlyzJmnvxaej8eBHxNaVE4mp6awlDbXCqDW8IqHCVfsLz2eyg6yfLauHgINOJpefm8B8nNwivogLf7rJkfXydQcVvX3MO8Y0M9OsfYSxwXO5wqdfwdzJwcaRtCFQBU7dovNVKnUK+Viq/nlzWt5XAAZfcsNlOUFbtq/Nc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744050514; c=relaxed/simple; bh=EZzj8GfhRs6Y/tesFsPnu/VT+y24dgG6LsFxA2u6yE4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=WWnlSb0Oy/614u+Rpx3Ab15EY3Cfo5QqcpFm7DdZyqArO2AFCuhaueDlZKpZPM6GL6gBJYCIFl0pw1degqOaWetv1ZIdIImiNCZ6S3ECoPWTBe3GLnZEKNXI7SDiaucQ0jjbu7kVVt6kialtiPcLSgGbIU9XLJpefriF0OMKZf8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fossekall.de; spf=pass smtp.mailfrom=a98shuttle.de; dkim=pass (2048-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=mzIasaPF; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=iFnOqnCz; arc=pass smtp.client-ip=85.215.255.83 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fossekall.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=a98shuttle.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="mzIasaPF"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="iFnOqnCz" ARC-Seal: i=1; a=rsa-sha256; t=1744050146; cv=none; d=strato.com; s=strato-dkim-0002; b=LwjfKUrCTR/Fcjo/lU1bbGqOwEwlC5AV15VUnae6+42bhL9TvkRH8CJ7JsFYA3/FWf LGYeNLx6SjPL1LMJJO1Qse/FApn3aeo/YVoZ9pkpQFamWRVtUouOneAbe7fML+XTGdHn HqYiUxggL+UC+PdT9ufC1JSlG2xKOODDweK656DU7sjcQ57X+zmmeon8Lpk8Ah8osXIh PhZkDxpfkLslVJTAD0GLrmYo0tTTBfjQevtM9eNrMoypYkyqVg6MPfyq90lAvF/Crz1f /5e1fdF27wTDD9fqb2XsrOhlTFSmw28D/Bqjj5oLQcLsNYPA1ZAtQukuCJOrSfPx1koH v1hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1744050146; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=pFmcDmSQKkM+CI9mfKoKWcBh+gkKTmyRWMx+39HmNqk=; b=hokXuCPCOtSP5fQ1XMPh4SiGxtEBhijJzvC4WG0jilTqD4Bfzq2u38guB0Tbn+SpNf JzVZSL/XY3US+K61QMA/zHAl+mzxA1307eLtpJqj93P3HaHR7M4c9znqi5YrJnQ1Zsj3 1n9d0hbR2fxO5PQcKVwav1JZQ1gJqGklk6jk4Ra9sUPe7hfaOQ3L9pVfSf8DPCeY/wDs gHrq6LPk0iArcIs3G3aLJ1y+ky5oQELig1dGovP3yr8iFZuvoukFdDTVEr9DcUTwi7/N YDbT0ikw1qhohcl3Y0ZEz/et/8r1PiIA9E2Xrk9twGTAZHj+O3YKrYDbbcw9/KbRpCAk tJxg== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo02 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1744050146; s=strato-dkim-0002; d=fossekall.de; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=pFmcDmSQKkM+CI9mfKoKWcBh+gkKTmyRWMx+39HmNqk=; b=mzIasaPFbqz86bcyWDskLkYhzrEhmww6nELJcxxE7vnwDa8Za5aJBHwTkyNQw0N0nn EHOQUYCQWZtYL5uNFuGIScSjuqRsQY84BYTI9Ce+5YElORujJjP7Su22QR8Mw+WMaVVR JXc5XtYCVUofgGjArUjOQad3qbsqJHCrKxB1L86eR98sapLec1ban9rnGmQtq54AfHO4 XFzMN0hNcQJJm0cEBJPC71KCy9qyFRI+dyYsQkeFI3accVoax3gQcVUSv0EevKHxXlRZ jBqcmSITMXrKwfcP72NpWveZmi4S50S0RuBYmerjGgN0hN9S/2tkeRzg9xtN4WTP+gop 1rZg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1744050146; s=strato-dkim-0003; d=fossekall.de; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=pFmcDmSQKkM+CI9mfKoKWcBh+gkKTmyRWMx+39HmNqk=; b=iFnOqnCzgFJYkqRFYF2Hajo3SaNW07a6LniQLxxDUUsSYhlJVQvpCtmZvD+3xZPtJS dzmBhvGjf+P8ZSLoMvDA== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35137IMQyOr (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 7 Apr 2025 20:22:26 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1u1r73-0003yQ-05; Mon, 07 Apr 2025 20:22:25 +0200 Received: (nullmailer pid 15065 invoked by uid 502); Mon, 07 Apr 2025 18:22:24 -0000 From: Michael Klein To: Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Michael Klein , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RESEND net-next v5 3/4] net: phy: realtek: use __set_bit() in rtl8211f_led_hw_control_get() Date: Mon, 7 Apr 2025 20:21:42 +0200 Message-Id: <20250407182155.14925-4-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250407182155.14925-1-michael@fossekall.de> References: <20250407182155.14925-1-michael@fossekall.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" rtl8211f_led_hw_control_get() does not need atomic bit operations, replace set_bit() by __set_bit(). Signed-off-by: Michael Klein Reviewed-by: Andrew Lunn --- drivers/net/phy/realtek/realtek_main.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index e60c18551a4e..0fcc57ad777f 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -577,17 +577,17 @@ static int rtl8211f_led_hw_control_get(struct phy_dev= ice *phydev, u8 index, val &=3D RTL8211F_LEDCR_MASK; =20 if (val & RTL8211F_LEDCR_LINK_10) - set_bit(TRIGGER_NETDEV_LINK_10, rules); + __set_bit(TRIGGER_NETDEV_LINK_10, rules); =20 if (val & RTL8211F_LEDCR_LINK_100) - set_bit(TRIGGER_NETDEV_LINK_100, rules); + __set_bit(TRIGGER_NETDEV_LINK_100, rules); =20 if (val & RTL8211F_LEDCR_LINK_1000) - set_bit(TRIGGER_NETDEV_LINK_1000, rules); + __set_bit(TRIGGER_NETDEV_LINK_1000, rules); =20 if (val & RTL8211F_LEDCR_ACT_TXRX) { - set_bit(TRIGGER_NETDEV_RX, rules); - set_bit(TRIGGER_NETDEV_TX, rules); + __set_bit(TRIGGER_NETDEV_RX, rules); + __set_bit(TRIGGER_NETDEV_TX, rules); } =20 return 0; --=20 2.39.5 From nobody Sun Feb 8 05:08:36 2026 Received: from mo4-p02-ob.smtp.rzone.de (mo4-p02-ob.smtp.rzone.de [81.169.146.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF9A325B660; Mon, 7 Apr 2025 18:25:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.171 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744050336; cv=pass; b=A+VaqsQkVjLTz7NcQ064wQxuhz8/oLWm/wwxG5DTq40OBjV5mSos69A0XzKjRLi8fo93q/cqoCPJO92lbM/oCthbG2pYtPNeFpZpeVqgBkDCzrE1b9n6CY/EImWSjJ4temYwNsDq2BH9E2aqVDqDy0a+PsGj/MmXmIoTjGagUjg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744050336; c=relaxed/simple; bh=JsBPV+BoVZZ8mHe+BMDN7NZXxxagZRvpszOxyvlpkrY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=s0BuiKULXCYFDNeHgw4prewgiyQ8CE6E9xXiPtLZMs+n6PfxIFV3NMH5HB8R8Mk+yRv6oba46cHxcIxEkg2J/dKm2G9quLRKIpuHLNmgt4b+xngVqBq98i3lmCxzLNyhIZ1Cu/F4ctTrcZF0isRCwBlBqxSSN1esbcRdS4HYP5U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fossekall.de; spf=pass smtp.mailfrom=a98shuttle.de; dkim=pass (2048-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=tYtTduCg; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=s3+ojI8q; arc=pass smtp.client-ip=81.169.146.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fossekall.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=a98shuttle.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="tYtTduCg"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="s3+ojI8q" ARC-Seal: i=1; a=rsa-sha256; t=1744050147; cv=none; d=strato.com; s=strato-dkim-0002; b=ksILdzYkuBYyyK5uaanNXg4ZuD7VubwPsg2Q28Xz078fM3Jzqz9x2jf0e5tKesR9rb j9bBGo+XgiqLSxchFPDaHjii72ivzVV8sCBzsKfpbGgBuGV3OICNmRvPgaoZL5re0V05 0B3CWLIZhyuCRKk4N0g/ju+8tp0VBOkatdywT0TnBri9RzQ3YWIktv4+d0i3oZC3q2Rl sptmaVEnG5dEtvp7V0/Le+J+djkMXOY6ioXnsPRPUUANyh+KlEMqet9Q85a5hpbeCC6x B9qxRUxS1NVGVr11vz8rB5W6mkGwOvLvAEY8pOHKPYPjvasD8TWHtNeRzmIUpBbCxO18 a+Aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1744050147; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=P/McivwteINBEBUe5y6izhPA6joYrRsVsjumRXRwJUU=; b=XsLE62MAzeBRaX5yvcLnH1dD3MmhpNEyHbxZYUCjic91Jhu75XV1rnbR8Ann6AYYz5 EbAJa3GAwkPLg2ERDpg03ZrJMBcCTDTD60nvKzn8gDf4wEF6w3XBw+GRZeqnc7H6LsvM isapTmod7zXqNsqWWaJht1w1bQvmnwAsKPALiL1Fg2pk+6X8XKI1qF8kK3MwAEeVN2KS Slj8fcON7MwlUQY0VX6dP/1rBhmHGWkZuF3TKK1d4ChsnX7QmJ71HMqvX9/CFdwpOthL zMJ2ST/wGJTcxYr3mLZY8nROGWHlSotdi1Jg52G4/vidgy726kaXdqlJYBL5l53ii+PS cFhw== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo02 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1744050147; s=strato-dkim-0002; d=fossekall.de; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=P/McivwteINBEBUe5y6izhPA6joYrRsVsjumRXRwJUU=; b=tYtTduCgENLp/+Vn1oHa+4A8NrhB96mOJzK8zmI4O3dZ47lVFnp8Mh5h3c2Okhe8S5 0g2yLurypFB8BUqVWfZVjFZSMKL0xmfMVJmztw1jPhm8QGlCTgwwOTfgpaPJp3qzzIEg +gw5qI6JJ5XFIy/CuwTfn0tZgPSyOSi8plTTUwq+kF2yn5MAsyyOsjgNrWC+psnXUExw IJg6MUn+TKjtGFvWz0u0vZaLtWDXUUU8TSN2x0Mthy+XqjHWiSLDGkt6guq1XLdEF7Mo 6uJ6jCyZm+eBPuqZ5LSBt7ls74LnVXlzIB37G18BzJ9kImNAfm9q2qzIRbkCGVfuwy2u ICNA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1744050147; s=strato-dkim-0003; d=fossekall.de; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=P/McivwteINBEBUe5y6izhPA6joYrRsVsjumRXRwJUU=; b=s3+ojI8qL3F8XxiJ+mjT0V2jYX8ZPiSdeLsB4BR0zAlILqx5lbj90LecD0TMg3DJ0s WBKdWABfSFuEJnEIxBBA== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35137IMRyOs (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 7 Apr 2025 20:22:27 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1u1r74-0003yk-1g; Mon, 07 Apr 2025 20:22:26 +0200 Received: (nullmailer pid 15079 invoked by uid 502); Mon, 07 Apr 2025 18:22:26 -0000 From: Michael Klein To: Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Michael Klein , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RESEND net-next v5 4/4] net: phy: realtek: Add support for PHY LEDs on RTL8211E Date: Mon, 7 Apr 2025 20:21:43 +0200 Message-Id: <20250407182155.14925-5-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250407182155.14925-1-michael@fossekall.de> References: <20250407182155.14925-1-michael@fossekall.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Like the RTL8211F, the RTL8211E PHY supports up to three LEDs. Add netdev trigger support for them, too. Signed-off-by: Michael Klein Reviewed-by: Andrew Lunn --- drivers/net/phy/realtek/realtek_main.c | 125 +++++++++++++++++++++++-- 1 file changed, 119 insertions(+), 6 deletions(-) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index 0fcc57ad777f..9c3727a646f2 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -46,6 +46,20 @@ #define RTL8211E_TX_DELAY BIT(12) #define RTL8211E_RX_DELAY BIT(11) =20 +#define RTL8211E_LEDCR_EXT_PAGE 0x2c + +#define RTL8211E_LEDCR1 0x1a +#define RTL8211E_LEDCR1_ACT_TXRX BIT(4) +#define RTL8211E_LEDCR1_MASK BIT(4) +#define RTL8211E_LEDCR1_SHIFT 1 + +#define RTL8211E_LEDCR2 0x1c +#define RTL8211E_LEDCR2_LINK_1000 BIT(2) +#define RTL8211E_LEDCR2_LINK_100 BIT(1) +#define RTL8211E_LEDCR2_LINK_10 BIT(0) +#define RTL8211E_LEDCR2_MASK GENMASK(2, 0) +#define RTL8211E_LEDCR2_SHIFT 4 + #define RTL8211F_PHYCR1 0x18 #define RTL8211F_PHYCR2 0x19 #define RTL8211F_CLKOUT_EN BIT(0) @@ -62,7 +76,8 @@ #define RTL8211F_LEDCR_MASK GENMASK(4, 0) #define RTL8211F_LEDCR_SHIFT 5 =20 -#define RTL8211F_LED_COUNT 3 +/* RTL8211E and RTL8211F support up to three LEDs */ +#define RTL8211x_LED_COUNT 3 =20 #define RTL8211F_TX_DELAY BIT(8) #define RTL8211F_RX_DELAY BIT(3) @@ -137,6 +152,21 @@ static int rtl821x_write_page(struct phy_device *phyde= v, int page) return __phy_write(phydev, RTL821x_PAGE_SELECT, page); } =20 +static int rtl8211e_read_ext_page(struct phy_device *phydev, u16 ext_page, + u32 regnum) +{ + int oldpage, ret =3D 0; + + oldpage =3D phy_select_page(phydev, RTL8211E_SET_EXT_PAGE); + if (oldpage >=3D 0) { + ret =3D __phy_write(phydev, RTL8211E_EXT_PAGE_SELECT, ext_page); + if (ret =3D=3D 0) + ret =3D __phy_read(phydev, regnum); + } + + return phy_restore_page(phydev, oldpage, ret); +} + static int rtl8211e_modify_ext_page(struct phy_device *phydev, u16 ext_pag= e, u32 regnum, u16 mask, u16 set) { @@ -526,7 +556,7 @@ static int rtl821x_resume(struct phy_device *phydev) return 0; } =20 -static int rtl8211f_led_hw_is_supported(struct phy_device *phydev, u8 inde= x, +static int rtl8211x_led_hw_is_supported(struct phy_device *phydev, u8 inde= x, unsigned long rules) { const unsigned long mask =3D BIT(TRIGGER_NETDEV_LINK_10) | @@ -545,9 +575,11 @@ static int rtl8211f_led_hw_is_supported(struct phy_dev= ice *phydev, u8 index, * rates and Active indication always at all three 10+100+1000 * link rates. * This code currently uses mode B only. + * + * RTL8211E PHY LED has one mode, which works like RTL8211F mode B. */ =20 - if (index >=3D RTL8211F_LED_COUNT) + if (index >=3D RTL8211x_LED_COUNT) return -EINVAL; =20 /* Filter out any other unsupported triggers. */ @@ -566,7 +598,7 @@ static int rtl8211f_led_hw_control_get(struct phy_devic= e *phydev, u8 index, { int val; =20 - if (index >=3D RTL8211F_LED_COUNT) + if (index >=3D RTL8211x_LED_COUNT) return -EINVAL; =20 val =3D phy_read_paged(phydev, 0xd04, RTL8211F_LEDCR); @@ -599,7 +631,7 @@ static int rtl8211f_led_hw_control_set(struct phy_devic= e *phydev, u8 index, const u16 mask =3D RTL8211F_LEDCR_MASK << (RTL8211F_LEDCR_SHIFT * index); u16 reg =3D 0; =20 - if (index >=3D RTL8211F_LED_COUNT) + if (index >=3D RTL8211x_LED_COUNT) return -EINVAL; =20 if (test_bit(TRIGGER_NETDEV_LINK_10, &rules)) @@ -622,6 +654,84 @@ static int rtl8211f_led_hw_control_set(struct phy_devi= ce *phydev, u8 index, return phy_modify_paged(phydev, 0xd04, RTL8211F_LEDCR, mask, reg); } =20 +static int rtl8211e_led_hw_control_get(struct phy_device *phydev, u8 index, + unsigned long *rules) +{ + int ret; + u16 cr1, cr2; + + if (index >=3D RTL8211x_LED_COUNT) + return -EINVAL; + + ret =3D rtl8211e_read_ext_page(phydev, RTL8211E_LEDCR_EXT_PAGE, + RTL8211E_LEDCR1); + if (ret < 0) + return ret; + + cr1 =3D ret >> RTL8211E_LEDCR1_SHIFT * index; + if (cr1 & RTL8211E_LEDCR1_ACT_TXRX) { + __set_bit(TRIGGER_NETDEV_RX, rules); + __set_bit(TRIGGER_NETDEV_TX, rules); + } + + ret =3D rtl8211e_read_ext_page(phydev, RTL8211E_LEDCR_EXT_PAGE, + RTL8211E_LEDCR2); + if (ret < 0) + return ret; + + cr2 =3D ret >> RTL8211E_LEDCR2_SHIFT * index; + if (cr2 & RTL8211E_LEDCR2_LINK_10) + __set_bit(TRIGGER_NETDEV_LINK_10, rules); + + if (cr2 & RTL8211E_LEDCR2_LINK_100) + __set_bit(TRIGGER_NETDEV_LINK_100, rules); + + if (cr2 & RTL8211E_LEDCR2_LINK_1000) + __set_bit(TRIGGER_NETDEV_LINK_1000, rules); + + return ret; +} + +static int rtl8211e_led_hw_control_set(struct phy_device *phydev, u8 index, + unsigned long rules) +{ + const u16 cr1mask =3D + RTL8211E_LEDCR1_MASK << (RTL8211E_LEDCR1_SHIFT * index); + const u16 cr2mask =3D + RTL8211E_LEDCR2_MASK << (RTL8211E_LEDCR2_SHIFT * index); + u16 cr1 =3D 0, cr2 =3D 0; + int ret; + + if (index >=3D RTL8211x_LED_COUNT) + return -EINVAL; + + if (test_bit(TRIGGER_NETDEV_RX, &rules) || + test_bit(TRIGGER_NETDEV_TX, &rules)) { + cr1 |=3D RTL8211E_LEDCR1_ACT_TXRX; + } + + cr1 <<=3D RTL8211E_LEDCR1_SHIFT * index; + ret =3D rtl8211e_modify_ext_page(phydev, RTL8211E_LEDCR_EXT_PAGE, + RTL8211E_LEDCR1, cr1mask, cr1); + if (ret < 0) + return ret; + + if (test_bit(TRIGGER_NETDEV_LINK_10, &rules)) + cr2 |=3D RTL8211E_LEDCR2_LINK_10; + + if (test_bit(TRIGGER_NETDEV_LINK_100, &rules)) + cr2 |=3D RTL8211E_LEDCR2_LINK_100; + + if (test_bit(TRIGGER_NETDEV_LINK_1000, &rules)) + cr2 |=3D RTL8211E_LEDCR2_LINK_1000; + + cr2 <<=3D RTL8211E_LEDCR2_SHIFT * index; + ret =3D rtl8211e_modify_ext_page(phydev, RTL8211E_LEDCR_EXT_PAGE, + RTL8211E_LEDCR2, cr2mask, cr2); + + return ret; +} + static int rtl8211e_config_init(struct phy_device *phydev) { const u16 delay_mask =3D RTL8211E_CTRL_DELAY | @@ -1398,6 +1508,9 @@ static struct phy_driver realtek_drvs[] =3D { .resume =3D genphy_resume, .read_page =3D rtl821x_read_page, .write_page =3D rtl821x_write_page, + .led_hw_is_supported =3D rtl8211x_led_hw_is_supported, + .led_hw_control_get =3D rtl8211e_led_hw_control_get, + .led_hw_control_set =3D rtl8211e_led_hw_control_set, }, { PHY_ID_MATCH_EXACT(0x001cc916), .name =3D "RTL8211F Gigabit Ethernet", @@ -1411,7 +1524,7 @@ static struct phy_driver realtek_drvs[] =3D { .read_page =3D rtl821x_read_page, .write_page =3D rtl821x_write_page, .flags =3D PHY_ALWAYS_CALL_SUSPEND, - .led_hw_is_supported =3D rtl8211f_led_hw_is_supported, + .led_hw_is_supported =3D rtl8211x_led_hw_is_supported, .led_hw_control_get =3D rtl8211f_led_hw_control_get, .led_hw_control_set =3D rtl8211f_led_hw_control_set, }, { --=20 2.39.5