From nobody Mon Feb 9 00:43:22 2026 Received: from mo4-p01-ob.smtp.rzone.de (mo4-p01-ob.smtp.rzone.de [85.215.255.54]) (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 0DF271C3C1F; Sun, 4 May 2025 17:29:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746379783; cv=pass; b=YI9WLsoLO+/lNEqXPHaKHdYWXvo9a+jvP2AQDTsya9eFJXQnH9Z69j6GPxx2t55rnqYRxOs2xCJmkcFXcrwQ6kE+kT2YDcL5xi0MIaKyhAFyjiJWF/C/19jufVHHBGpbIPiTYpQ0ItKHdpgvFzUtUI8L0uWOC11fCf+RngQqXz0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746379783; c=relaxed/simple; bh=iiWVSV6sW0SWminu5ahkgLdCng4caKv9C0p1VmJ6ZcQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=PqpKOp8rAuai56yLdbFqfW5xo9afOE4o9UazcZTkwlVKv5gH1GETpt4eneHpJRa6xr8afHd49SsxbPcGeY1u5OsaIDrUhMIPJ5rrA1kpAjonOR29oUOmo/Sg4sFsSYQhu85P+FQGdsWqL+MML1QXzb6EmszgMx6ZEAgC1MqY0dY= 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=tgjHuHyu; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=jgcSltq1; arc=pass smtp.client-ip=85.215.255.54 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="tgjHuHyu"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="jgcSltq1" ARC-Seal: i=1; a=rsa-sha256; t=1746379771; cv=none; d=strato.com; s=strato-dkim-0002; b=OsLJl5nV4sx/BoP8JbmOruR17ksw78JlUZiEeUutKd8Fd4r+6Q7bBcy7rvLkuFozSM qxY8clZWyr39UTbRlzb2sSYoccVDOmeJH711KJ2dxs/uL7jiqmdGhfG7UG2h+pDR5faB WPYCWCBQGbFFt6HFB5kUfTuXi5nuum0MVE5OKPhtgEeSHiOGyMS0AUojv6hZkFWouVeQ cPVchJWymmmnLqYhaeM/lKtkF6H9WUN8uMxg6uR1IybfKQD/hv8h8/SDc/A6aHoZ20uy tTA/QgdwzFtzX4EswXIZJ764mqtqJgBJcMznVZ8Lv+Yrg0h/aOM6o5doj36PjVlAGYES mkwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1746379771; 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=XkoLn80Jc16pwM/vsx0xD/qYQJ6XVi2TIpKrdAA3k1Q=; b=r8s7+SY2+6a67R1QeBLDBxtueYVA7/QcwgybUxTXUC840em8UuejzrKoqFZKA5Yl2W Puo1JeQBx+FNbAclVSHgc7zZCzLrReP4aDj0BgYjCLpH42v+pKd8QbttX/DiBJUsMkDD pRRDwnJ8AfwMBGyzbyAR0D4/3cNCf4CsJQWkNdHVZSErEPHTj/nzOl/nwsIToKg+uT4p pMqYJFgvcbh5rYUEHrvBSBFAe4dIzjwh+tp7dwUI7UlHvG9kGhmMIWytW1lH994/3qqq 7fw/VYSETbXRoSJED+SUMQSu/lFEieIJ6ly7Zvsh9rq4vhNVu0i/CyisjE2hDX6RnevT x50g== 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=1746379771; 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=XkoLn80Jc16pwM/vsx0xD/qYQJ6XVi2TIpKrdAA3k1Q=; b=tgjHuHyunFHAUOv1e6q/v1rE2eh3dv5V1WQm9ShySg0ZkfHFfD7M4kcJiTJyrH/ai5 /aj2YsWy8+dIr6Pm/ccfI3g7HtlF9cLE6IYJ/On/8ssg1TDdB1UhDa8rC+lRC6ELl2Uw 9dXS3xLU8lzQbuA9ir2PVGTJJ7/P8QTzNyVN30ORsztXd4aq8Tti85lev9/b5SzFxsds Rlwl2/qovUNClz5GqqbY8jT3cnPRTtvos1HZ0YspP/cG0a9lNPi6M1C6doqs4UsYLdvU b2syKW3kM8onhOgtM1aqF8uO0KJnD1fbxXIjds0dSwA/Zop7nMGPJAuNoQf/LPaO9+C6 Pvzw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1746379771; 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=XkoLn80Jc16pwM/vsx0xD/qYQJ6XVi2TIpKrdAA3k1Q=; b=jgcSltq1eR91LsxvKyA7yzfrAAsYk4o5isLSA/9mIztfrb6Jd1+wxZtxc+v+N455TB cJHlC8BFP9V2rTTrESBA== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35144HTVz9G (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sun, 4 May 2025 19:29:31 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1uBd9d-0004NU-2K; Sun, 04 May 2025 19:29:29 +0200 Received: (nullmailer pid 243236 invoked by uid 502); Sun, 04 May 2025 17:29:29 -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: [net-next v7 1/6] net: phy: realtek: remove unsed RTL821x_PHYSR* macros Date: Sun, 4 May 2025 19:29:11 +0200 Message-Id: <20250504172916.243185-2-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250504172916.243185-1-michael@fossekall.de> References: <20250504172916.243185-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" These macros have there since the first revision but were never used, so let's just remove them. Signed-off-by: Michael Klein --- drivers/net/phy/realtek/realtek_main.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index 05c4f4d394a5..a6d21dfb1073 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -18,10 +18,6 @@ =20 #include "realtek.h" =20 -#define RTL821x_PHYSR 0x11 -#define RTL821x_PHYSR_DUPLEX BIT(13) -#define RTL821x_PHYSR_SPEED GENMASK(15, 14) - #define RTL821x_INER 0x12 #define RTL8211B_INER_INIT 0x6400 #define RTL8211E_INER_LINK_STATUS BIT(10) --=20 2.39.5 From nobody Mon Feb 9 00:43:22 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 9F0381EFFB9; Sun, 4 May 2025 17:32:39 +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=1746379961; cv=pass; b=jbyiNLYp9LJrTMlbaLC4DrVp6Xlgi+UfSlDaMzQlZVPVm6GXpFv7iYmRBZQtqMYSTV8Bh4IDi5egfUHDhfET3F3XGEtTyLpgmwrcZmjZbYQy6lcBM0JJB4UH19TAesXbwN+2uyylrpgEgwiFXlU2lXt7CvPWLg0tFfnK7cUKglg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746379961; c=relaxed/simple; bh=lZrcURQp3hFYZcQF2RUCCJd01uEC7fp2q7+yTxbCikA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=iNOzEF6BMHyoMhgTqww0YXRcbokLCQPtiPmiahMkeHUMFEwl8CMiBa9ejgP5JVseQIvAG2CZ837ZKShJYN4rg7Q53sGNmOmP7m9nRbSenpczbNO2ajLA62KUjVBPNPgjtBZ0FPYtwEgH3KXPNlVrv2VF54MHFJxzuSOCziRE3Fw= 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=R5JY5B7b; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=tB698JQP; 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="R5JY5B7b"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="tB698JQP" ARC-Seal: i=1; a=rsa-sha256; t=1746379772; cv=none; d=strato.com; s=strato-dkim-0002; b=Oucz0ipkaTUbNAfBp5SWb7N71WU7PZuGfAzAcPtESLCkjD45ykAtlTFzmMt9a2eXXj Gxb+Y1svZpGez81lNS3vaceC0TDZ+IKEtpdTXJ+qGFcbkdbIe3fXIt/pN1uvJhqc6wHP MeAx6rAtO3Pszcon8Eki8nu2l5DUJelh+K4y1+75XaXgszXpe1K/EO3yCnrMn21xsT3C l2JSUggOvg5YzRCERBev3bhiaBldQYfPQb86yf3TTIF/awCjE1lD3dxKbDJq4rAeswxS Lsttnpq8gEbIXnDUBMKGMqakQPVpFmz5eYg3PZH5OSIJImN0ZPLkVJ5gPgwwCUlMQu2h orBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1746379772; 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=4gn5mtjL0evEuszrzHHSPLmxmhO1acntVa5VhV3cvOU=; b=oVziW4m8En44zetcHo1wlDpT9AfK+E0zzcKImsBFseiVwcxTnUrgqo9+TzVuANbVT8 BoY2+VNbdrtZhPcuUAp33kjov4Y9gnvCtBFfbQMMlQ1XvWg5sCIUnFB0dBSrOjDLoltv YuHgOrk62jA0y59kNFG0chCQeKB/6f7IixyKHekytul/p/hDWzlUt0SIExfzPNcsFtBt 8ygm+HN0nxppLigAt7Oa7cS6urPb0x5DC9V5M320zGz3FleRZovif+xwbev0vAPCm+Lq Na+fWhVmIZv8a3zf8v7f0a4rzKrtPNG2QWcVtrLxL0NbbIP5+OunqhcSAEvaa/K5JlzO 0CPw== 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=1746379772; 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=4gn5mtjL0evEuszrzHHSPLmxmhO1acntVa5VhV3cvOU=; b=R5JY5B7bpguq5kw3AQc8zsUPqYDtw8kQ50q4zu5Y1H1SDSU1EmOXdpEWX8U22ROPN7 Gc7QEeOBuzE1yXGxpPrF6yknROjqXRNfuUTgDt/wOy1aDfx45pm56z4weMSLRREjOOLn qIDfGImQBfeoOPpDpFlj8NH33SOyPlKIHLTfr5bAdk2D1vWUj00r8HM84aPObH8QUsML 75AkNaVePTFmJF9G0WjgNeIdiMox5z0rOE70dbmN1uojtT+oPg39vUuWt28+AFzqP581 qElio1PyuRVrCbCTdTr/YdCNdp5DIB1vH+CxUupdTV3N4EZxJmjNzT440yB4pu4EtGOW KQrw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1746379772; 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=4gn5mtjL0evEuszrzHHSPLmxmhO1acntVa5VhV3cvOU=; b=tB698JQPgvc5UhJjEThUrdW5/xRFUbxR04N8CHuD/MGyBIcQ8qjl6g5pujtHk6/R/W Og0O69Qr2FSVlZyoWSDw== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35144HTWz9H (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sun, 4 May 2025 19:29:32 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1uBd9e-0004Nc-10; Sun, 04 May 2025 19:29:30 +0200 Received: (nullmailer pid 243250 invoked by uid 502); Sun, 04 May 2025 17:29:30 -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: [net-next v7 2/6] net: phy: realtek: Clean up RTL821x ExtPage access Date: Sun, 4 May 2025 19:29:12 +0200 Message-Id: <20250504172916.243185-3-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250504172916.243185-1-michael@fossekall.de> References: <20250504172916.243185-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 rtl821x_modify_ext_page() and clean up rtl8211e_config_init() Signed-off-by: Michael Klein Reviewed-by: Andrew Lunn --- drivers/net/phy/realtek/realtek_main.c | 38 ++++++++++++++++---------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index a6d21dfb1073..0f005a449719 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -26,7 +26,9 @@ #define RTL821x_INSR 0x13 =20 #define RTL821x_EXT_PAGE_SELECT 0x1e + #define RTL821x_PAGE_SELECT 0x1f +#define RTL821x_SET_EXT_PAGE 0x07 =20 #define RTL8211F_PHYCR1 0x18 #define RTL8211F_PHYCR2 0x19 @@ -69,9 +71,12 @@ #define RTL8211F_ALDPS_ENABLE BIT(2) #define RTL8211F_ALDPS_XTAL_OFF BIT(12) =20 +#define RTL8211E_RGMII_EXT_PAGE 0xa4 +#define RTL8211E_RGMII_DELAY 0x1c #define RTL8211E_CTRL_DELAY BIT(13) #define RTL8211E_TX_DELAY BIT(12) #define RTL8211E_RX_DELAY BIT(11) +#define RTL8211E_DELAY_MASK GENMASK(13, 11) =20 #define RTL8201F_ISR 0x1e #define RTL8201F_ISR_ANERR BIT(15) @@ -151,6 +156,21 @@ static int rtl821x_write_page(struct phy_device *phyde= v, int page) return __phy_write(phydev, RTL821x_PAGE_SELECT, page); } =20 +static int rtl821x_modify_ext_page(struct phy_device *phydev, u16 ext_page, + u32 regnum, u16 mask, u16 set) +{ + int oldpage, ret =3D 0; + + oldpage =3D phy_select_page(phydev, RTL821x_SET_EXT_PAGE); + if (oldpage >=3D 0) { + ret =3D __phy_write(phydev, RTL821x_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; @@ -670,7 +690,6 @@ 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; u16 val; =20 /* enable TX/RX delay for rgmii-* modes, and disable them for rgmii. */ @@ -700,20 +719,9 @@ 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 rtl821x_modify_ext_page(phydev, RTL8211E_RGMII_EXT_PAGE, + RTL8211E_RGMII_DELAY, + RTL8211E_DELAY_MASK, val); } =20 static int rtl8211b_suspend(struct phy_device *phydev) --=20 2.39.5 From nobody Mon Feb 9 00:43:22 2026 Received: from mo4-p02-ob.smtp.rzone.de (mo4-p02-ob.smtp.rzone.de [85.215.255.81]) (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 5236F1EEA4E; Sun, 4 May 2025 17:32:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746379958; cv=pass; b=HkISijPeBoXHoGuvR0lOsgPHEJEx5EHgYnwrHbzFZlF+L+a8mnHyLrbGt2s8QpnyjMGSNsp1+ZWVDnTjS8nt82bohcSg45nwMkX1P+t4L1iM02SuLAzcE50qVO5ucSipibweQVPV+IrjAmK8J7hPSEI7uKrFsjHs2tMimAu0liA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746379958; c=relaxed/simple; bh=evtx0qhV/I69gONPM8NnFq1FE8C9KBD4S39MI5fUDmw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=VnE/EJzn3I8ZrzCwTKF7Rs1mNSfSJwY/7cnqZFB3BNEYWEirTfW4NaRSKwKNpqkV72ORmJQrQAmwgcLuMTCj/GIs9cDaPaK+X/q0i9Pf2mWk98iwTsKpJQbLqdVzo2Z4DKZuq7m3bbuKJu8L1kTDwBsXhslnehREF4eSxBGDENI= 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=cllNE5Fk; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=NH9OS2Gf; arc=pass smtp.client-ip=85.215.255.81 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="cllNE5Fk"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="NH9OS2Gf" ARC-Seal: i=1; a=rsa-sha256; t=1746379772; cv=none; d=strato.com; s=strato-dkim-0002; b=UN0i9XPByQe+ANf7VHgoJGiQy4jP8vhKn6a6lu8NYDjtQW4G7Um4IOXby3aiZkEE/5 +WoR+O8j54r5/HYfGDM0C1eIadvAoBwMg9MXzV9uaF4o7513uGtpGeE+SzuDojytrXc+ JIKG3/jmc7xn5nCmBJpFkpctQ4tzaaFifZcYc15t8/EnUb20XlEIGzWS2gKVgk6m0tYl KyYECuP6/zLAdPm80Wf2DIoQYYoQ2XT+Ha4qyVHVjJVeheo4FWepMUd9fXVveXDg7hno s29O15tpTfzGILSEC85osu9eUzbUhY96iB+l/XdObMcxXhmrB08jydfiRO8wqFcLCiB1 RxTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1746379772; 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=eAsCrEvtfrEidwM3GttjRPxsaZzZGL311YCh8taGsaQ=; b=O2mO4k/SYYjfpvw4zpRPKZJvv1IO6N6PjljkYx/TiJ1e6zPvHcfu4i7Ig474uT5Aay 8UppdCd0kY9aJ0ZewLZb5l7J5WUhFCRxXTUWcvqft/N171gN7hSgdmrGVZelqMaCGU9A sIMzAppFVx+L5gdXrZ8X/xabOshcmMM2ARrJ2cPnarNH7RcV9F6Mx1c30BzSLM3yMnrY PiGrB1vy+wOTcGgiyLAyM06BxFPvjM0hm+gCJrnEYOqxNKtkZnh0Od79RAfB9JCmP/wW znrp3ordjJ4uwkyygsUD3zigxQ+eat4j2NMLyYf14+eBgfklJOs6HE+AVrjeGqSft2j1 F3CA== 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=1746379772; 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=eAsCrEvtfrEidwM3GttjRPxsaZzZGL311YCh8taGsaQ=; b=cllNE5FkseVcXxeaIUivdKP3OYlVmDU1zljrBTvKUFzBx1/jd4Ma9CMGOt0dMkQBP4 4/ui4xbcBq0Wt0K/Ev8rZ+X4ipx0cCEaVmfyTHZGxULdAbyvhUl+ZoF48sA5m7WFh6Jk Vsaym3mdvaBy8SPIfg8fX0OETsBR3noFgq63dFh3D11szijioS+S/VE6yyi9wO4q4a2H rYNsALNBeVQV0zLCoikLfUBlvXR1AQ9BVsegDExT6VvIflvITsnYi/ZCkQ5YEMyMz1Q2 xQOoDUkywyg0LcT5FYOW1ku9T032g5rcF9r2O7q1KnRuSFZjV5g0eZVE72GGIgMkVTyw 6wtg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1746379772; 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=eAsCrEvtfrEidwM3GttjRPxsaZzZGL311YCh8taGsaQ=; b=NH9OS2Gfr/BPZlmgQTJ/j5Sco0CUWa1F1cN4wBfywRA29uDrSvRBdDrlb9GCmqMUv6 gBnkHeD8pusEu9ey2PAg== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35144HTWz9I (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sun, 4 May 2025 19:29:32 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1uBd9e-0004Nu-3D; Sun, 04 May 2025 19:29:31 +0200 Received: (nullmailer pid 243264 invoked by uid 502); Sun, 04 May 2025 17:29:30 -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: [net-next v7 3/6] net: phy: realtek: add RTL8211F register defines Date: Sun, 4 May 2025 19:29:13 +0200 Message-Id: <20250504172916.243185-4-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250504172916.243185-1-michael@fossekall.de> References: <20250504172916.243185-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" Add some more defines for RTL8211F page and register numbers. Signed-off-by: Michael Klein Reviewed-by: Andrew Lunn --- drivers/net/phy/realtek/realtek_main.c | 34 ++++++++++++++++++-------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index 0f005a449719..ca6d2903b1c9 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -30,11 +30,14 @@ #define RTL821x_PAGE_SELECT 0x1f #define RTL821x_SET_EXT_PAGE 0x07 =20 +/* RTL8211F PHY configuration */ +#define RTL8211F_PHYCR_PAGE 0xa43 #define RTL8211F_PHYCR1 0x18 #define RTL8211F_PHYCR2 0x19 #define RTL8211F_CLKOUT_EN BIT(0) #define RTL8211F_PHYCR2_PHY_EEE_ENABLE BIT(5) =20 +#define RTL8211F_INSR_PAGE 0xa43 #define RTL8211F_INSR 0x1d =20 /* RTL8211F WOL interrupt configuration */ @@ -55,6 +58,8 @@ #define RTL8211F_PHYSICAL_ADDR_WORD1 17 #define RTL8211F_PHYSICAL_ADDR_WORD2 18 =20 +/* RTL8211F LED configuration */ +#define RTL8211F_LEDCR_PAGE 0xd04 #define RTL8211F_LEDCR 0x10 #define RTL8211F_LEDCR_MODE BIT(15) #define RTL8211F_LEDCR_ACT_TXRX BIT(4) @@ -64,7 +69,13 @@ #define RTL8211F_LEDCR_MASK GENMASK(4, 0) #define RTL8211F_LEDCR_SHIFT 5 =20 +/* RTL8211F RGMII configuration */ +#define RTL8211F_RGMII_PAGE 0xd08 + +#define RTL8211F_TXCR 0x11 #define RTL8211F_TX_DELAY BIT(8) + +#define RTL8211F_RXCR 0x15 #define RTL8211F_RX_DELAY BIT(3) =20 #define RTL8211F_ALDPS_PLL_OFF BIT(1) @@ -187,7 +198,7 @@ static int rtl821x_probe(struct phy_device *phydev) return dev_err_probe(dev, PTR_ERR(priv->clk), "failed to get phy clock\n"); =20 - ret =3D phy_read_paged(phydev, 0xa43, RTL8211F_PHYCR1); + ret =3D phy_read_paged(phydev, RTL8211F_PHYCR_PAGE, RTL8211F_PHYCR1); if (ret < 0) return ret; =20 @@ -197,7 +208,7 @@ static int rtl821x_probe(struct phy_device *phydev) =20 priv->has_phycr2 =3D !(phy_id =3D=3D RTL_8211FVD_PHYID); if (priv->has_phycr2) { - ret =3D phy_read_paged(phydev, 0xa43, RTL8211F_PHYCR2); + ret =3D phy_read_paged(phydev, RTL8211F_PHYCR_PAGE, RTL8211F_PHYCR2); if (ret < 0) return ret; =20 @@ -233,7 +244,7 @@ static int rtl8211f_ack_interrupt(struct phy_device *ph= ydev) { int err; =20 - err =3D phy_read_paged(phydev, 0xa43, RTL8211F_INSR); + err =3D phy_read_paged(phydev, RTL8211F_INSR_PAGE, RTL8211F_INSR); =20 return (err < 0) ? err : 0; } @@ -376,7 +387,7 @@ static irqreturn_t rtl8211f_handle_interrupt(struct phy= _device *phydev) { int irq_status; =20 - irq_status =3D phy_read_paged(phydev, 0xa43, RTL8211F_INSR); + irq_status =3D phy_read_paged(phydev, RTL8211F_INSR_PAGE, RTL8211F_INSR); if (irq_status < 0) { phy_error(phydev); return IRQ_NONE; @@ -473,7 +484,7 @@ static int rtl8211f_config_init(struct phy_device *phyd= ev) u16 val_txdly, val_rxdly; int ret; =20 - ret =3D phy_modify_paged_changed(phydev, 0xa43, RTL8211F_PHYCR1, + ret =3D phy_modify_paged_changed(phydev, RTL8211F_PHYCR_PAGE, RTL8211F_PH= YCR1, RTL8211F_ALDPS_PLL_OFF | RTL8211F_ALDPS_ENABLE | RTL8211F_ALDPS= _XTAL_OFF, priv->phycr1); if (ret < 0) { @@ -507,7 +518,8 @@ static int rtl8211f_config_init(struct phy_device *phyd= ev) return 0; } =20 - ret =3D phy_modify_paged_changed(phydev, 0xd08, 0x11, RTL8211F_TX_DELAY, + ret =3D phy_modify_paged_changed(phydev, RTL8211F_RGMII_PAGE, + RTL8211F_TXCR, RTL8211F_TX_DELAY, val_txdly); if (ret < 0) { dev_err(dev, "Failed to update the TX delay register\n"); @@ -522,7 +534,8 @@ static int rtl8211f_config_init(struct phy_device *phyd= ev) str_enabled_disabled(val_txdly)); } =20 - ret =3D phy_modify_paged_changed(phydev, 0xd08, 0x15, RTL8211F_RX_DELAY, + ret =3D phy_modify_paged_changed(phydev, RTL8211F_RGMII_PAGE, + RTL8211F_RXCR, RTL8211F_RX_DELAY, val_rxdly); if (ret < 0) { dev_err(dev, "Failed to update the RX delay register\n"); @@ -538,14 +551,15 @@ static int rtl8211f_config_init(struct phy_device *ph= ydev) } =20 /* Disable PHY-mode EEE so LPI is passed to the MAC */ - ret =3D phy_modify_paged(phydev, 0xa43, RTL8211F_PHYCR2, + ret =3D phy_modify_paged(phydev, RTL8211F_PHYCR_PAGE, RTL8211F_PHYCR2, RTL8211F_PHYCR2_PHY_EEE_ENABLE, 0); if (ret) return ret; =20 if (priv->has_phycr2) { - ret =3D phy_modify_paged(phydev, 0xa43, RTL8211F_PHYCR2, - RTL8211F_CLKOUT_EN, priv->phycr2); + ret =3D phy_modify_paged(phydev, RTL8211F_PHYCR_PAGE, + RTL8211F_PHYCR2, RTL8211F_CLKOUT_EN, + priv->phycr2); if (ret < 0) { dev_err(dev, "clkout configuration failed: %pe\n", ERR_PTR(ret)); --=20 2.39.5 From nobody Mon Feb 9 00:43:22 2026 Received: from mo4-p02-ob.smtp.rzone.de (mo4-p02-ob.smtp.rzone.de [85.215.255.81]) (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 2BB0C1FDA6A; Sun, 4 May 2025 17:35:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746380138; cv=pass; b=UXzdp08JDRXC+V7GE9e7M0NM0kSHN6H/V2J0hoDfmHk12EOqeX0GBUndzz61Ylyz+ckVaOW29ZPmCWkZwEfZB1cHpDLSTSnC67uJC8xQVwa+kPxSbutXS4wEJXmfvINtxKwkiSdruTDEcDhGIMBGpVKGb188EDFd1jFo9Yfwr7g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746380138; c=relaxed/simple; bh=STrK0dUvieUlDqNzFLtU0MIwRwcJdX2k7ODG2/WDDpM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=jIaLrbY4Rn1dhYKbjJ8iYgN6/5A0exZPIlAsaNbvAFNaAnsfUnWNVB90hy+NrKKVHDPtVBCrs8uM+6YNJZPaqajT4YgRiNf+mucecOKwaouYV01Bum8B2fN6+5fOSqaZah9N/F8+h847571mhPAvmZF6XYTXIFixnzyW+1IbmTA= 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=G6D4A68x; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=voEqFNAG; arc=pass smtp.client-ip=85.215.255.81 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="G6D4A68x"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="voEqFNAG" ARC-Seal: i=1; a=rsa-sha256; t=1746379773; cv=none; d=strato.com; s=strato-dkim-0002; b=Q6H3ym13n9VQ5z9+qlzO0onLytXqxgXKOxbMLPeoCgUdAPucRweeb4Il5TSzq47uk4 rl304SN7Vin0lq36UCk5MYiJKd1R5R8gbIh1CcIHRIxrMOxQYSGTzDzHJq4yLLgar6Vb WzZY3okh0sm+Sq+iHRi8UnR8AfKrd32EnJ8fXY6J5C0+ZoMzCimltOklcna6yI3iqOsG LyL/OWm9T62mz0DzjkioZ30lkzPbOG072cvKx/Y/9IeSor6SrTM5lQDks5dhRy7VHD3x /RZAxb9u1Qqkx1rzhKBm3FdlNf2vXObUkttjLCWX44NsiBVox+mKHEz37i3TFP8QTLBj tKUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1746379773; 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=F9rl3sGsvxYu9uIDxZf1Ei5eQdwD714ERFq5snEb+vE=; b=GFwXXrxk0F8wb9b3SN3D7MgDWqVQpMB+6mWMfmo9nEcDKBngjD8PymccN1+kKi2rCf vJx+a4sS+oppYxoVK0XIeXj/jdZs2M9e7oqa5thGh+uNRHd4uPkvhIWg6f7MGjxGTHva Ly5zlil60ApFp+imD/Kxkhhkk9/fIRRwAcxvb9TRaBqqkf2d3lbpkzwTzYf1/0ryPm6J WnasVeZjexw4acjtUb/ikVa/gW4qdJv5i5GhFZHxCktYqDF384h96idz8r0E4d1idKcr jkjxB+nsvf8c+bki8t2z1oeiDVlLrdy4DeDFBnB2UHyKSvw3zS3r5ytTEMZdI+FKbFEq oPdQ== 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=1746379773; 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=F9rl3sGsvxYu9uIDxZf1Ei5eQdwD714ERFq5snEb+vE=; b=G6D4A68xi/cgBuTqyUQl1d004B++1Wc6Do5vDDM5oIWjizFK/ZuIx6wt2b/4nXhd7V fIi9Dd1lqvBrbhLMK1Flcct5sBRt8AFuyupHixejzGGVpX/ETTgkC/yWvo6SKIE8ICKu ZzRp/0BtrlZfjKechX4OCI9upHDat4re1bRJ/wNLQhOkEbBp+VowWGPHaOheGU6gpsUc zYc1jlPcBmJkNYecqym6uck4RrGwJw1ZT5HZRUpFNDuOct1DuOHBAXempOnxEa8CBdCb MzxQhHalMnMWemz+gN0KGV9O1pPSJ7ne021fqkF+vEASBgQV2q8wLAFdVZZeAJ7fRc6+ Jkzg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1746379773; 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=F9rl3sGsvxYu9uIDxZf1Ei5eQdwD714ERFq5snEb+vE=; b=voEqFNAG0YmToV145Ik0f8S39WkQMNKCnf96ORJ1YrgbbS7x0OUiGP0vtUiHQ5h6U9 +1+bollSVGgC86h7kyCA== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35144HTXz9J (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sun, 4 May 2025 19:29:33 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1uBd9f-0004OJ-27; Sun, 04 May 2025 19:29:31 +0200 Received: (nullmailer pid 243278 invoked by uid 502); Sun, 04 May 2025 17:29:31 -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: [net-next v7 4/6] net: phy: realtek: Group RTL82* macro definitions Date: Sun, 4 May 2025 19:29:14 +0200 Message-Id: <20250504172916.243185-5-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250504172916.243185-1-michael@fossekall.de> References: <20250504172916.243185-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 PHY in lexicographic order. Within each PHY block, definitions are order by page number and then register number. Signed-off-by: Michael Klein Reviewed-by: Andrew Lunn --- drivers/net/phy/realtek/realtek_main.c | 72 +++++++++++++------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index ca6d2903b1c9..e01b13a9b5c3 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -18,6 +18,16 @@ =20 #include "realtek.h" =20 +#define RTL8201F_IER 0x13 + +#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 RTL821x_INER 0x12 #define RTL8211B_INER_INIT 0x6400 #define RTL8211E_INER_LINK_STATUS BIT(10) @@ -30,9 +40,21 @@ #define RTL821x_PAGE_SELECT 0x1f #define RTL821x_SET_EXT_PAGE 0x07 =20 +/* RTL8211E extension page 164/0xa4 */ +#define RTL8211E_RGMII_EXT_PAGE 0xa4 +#define RTL8211E_RGMII_DELAY 0x1c +#define RTL8211E_CTRL_DELAY BIT(13) +#define RTL8211E_TX_DELAY BIT(12) +#define RTL8211E_RX_DELAY BIT(11) +#define RTL8211E_DELAY_MASK GENMASK(13, 11) + /* RTL8211F PHY configuration */ #define RTL8211F_PHYCR_PAGE 0xa43 #define RTL8211F_PHYCR1 0x18 +#define RTL8211F_ALDPS_PLL_OFF BIT(1) +#define RTL8211F_ALDPS_ENABLE BIT(2) +#define RTL8211F_ALDPS_XTAL_OFF BIT(12) + #define RTL8211F_PHYCR2 0x19 #define RTL8211F_CLKOUT_EN BIT(0) #define RTL8211F_PHYCR2_PHY_EEE_ENABLE BIT(5) @@ -40,24 +62,6 @@ #define RTL8211F_INSR_PAGE 0xa43 #define RTL8211F_INSR 0x1d =20 -/* RTL8211F WOL interrupt configuration */ -#define RTL8211F_INTBCR_PAGE 0xd40 -#define RTL8211F_INTBCR 0x16 -#define RTL8211F_INTBCR_INTB_PMEB BIT(5) - -/* RTL8211F WOL settings */ -#define RTL8211F_WOL_SETTINGS_PAGE 0xd8a -#define RTL8211F_WOL_SETTINGS_EVENTS 16 -#define RTL8211F_WOL_EVENT_MAGIC BIT(12) -#define RTL8211F_WOL_SETTINGS_STATUS 17 -#define RTL8211F_WOL_STATUS_RESET (BIT(15) | 0x1fff) - -/* RTL8211F Unique phyiscal and multicast address (WOL) */ -#define RTL8211F_PHYSICAL_ADDR_PAGE 0xd8c -#define RTL8211F_PHYSICAL_ADDR_WORD0 16 -#define RTL8211F_PHYSICAL_ADDR_WORD1 17 -#define RTL8211F_PHYSICAL_ADDR_WORD2 18 - /* RTL8211F LED configuration */ #define RTL8211F_LEDCR_PAGE 0xd04 #define RTL8211F_LEDCR 0x10 @@ -78,25 +82,23 @@ #define RTL8211F_RXCR 0x15 #define RTL8211F_RX_DELAY BIT(3) =20 -#define RTL8211F_ALDPS_PLL_OFF BIT(1) -#define RTL8211F_ALDPS_ENABLE BIT(2) -#define RTL8211F_ALDPS_XTAL_OFF BIT(12) +/* RTL8211F WOL interrupt configuration */ +#define RTL8211F_INTBCR_PAGE 0xd40 +#define RTL8211F_INTBCR 0x16 +#define RTL8211F_INTBCR_INTB_PMEB BIT(5) =20 -#define RTL8211E_RGMII_EXT_PAGE 0xa4 -#define RTL8211E_RGMII_DELAY 0x1c -#define RTL8211E_CTRL_DELAY BIT(13) -#define RTL8211E_TX_DELAY BIT(12) -#define RTL8211E_RX_DELAY BIT(11) -#define RTL8211E_DELAY_MASK GENMASK(13, 11) +/* RTL8211F WOL settings */ +#define RTL8211F_WOL_SETTINGS_PAGE 0xd8a +#define RTL8211F_WOL_SETTINGS_EVENTS 16 +#define RTL8211F_WOL_EVENT_MAGIC BIT(12) +#define RTL8211F_WOL_SETTINGS_STATUS 17 +#define RTL8211F_WOL_STATUS_RESET (BIT(15) | 0x1fff) =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 +/* RTL8211F Unique phyiscal and multicast address (WOL) */ +#define RTL8211F_PHYSICAL_ADDR_PAGE 0xd8c +#define RTL8211F_PHYSICAL_ADDR_WORD0 16 +#define RTL8211F_PHYSICAL_ADDR_WORD1 17 +#define RTL8211F_PHYSICAL_ADDR_WORD2 18 =20 #define RTL822X_VND1_SERDES_OPTION 0x697a #define RTL822X_VND1_SERDES_OPTION_MODE_MASK GENMASK(5, 0) --=20 2.39.5 From nobody Mon Feb 9 00:43:22 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 2E96F1EBFF0; Sun, 4 May 2025 17:32:37 +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=1746379960; cv=pass; b=rEhYZNlTifQ9/+J1oI4LhD/uIQkFZX/iqhEZHncyx4i/0i6mEXQKNwwyBGocgSBue206/IYZH803oXloV5yqfVfRpA6JtVYc5NwoN7PQJbhSLmRPnBVYy3SOERSUB0sLQ0IzKRll81mTRPImuxcSfaUSI4REE/NbpiVMv9JZG0c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746379960; c=relaxed/simple; bh=jjVvFwaPVz8sERV6/nfEQEuaJq+qD+p0iszyZxBKs4Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=XM0JYeBw6KkzsD+hV2qy9Fiuis2PVfplfEIerxQodFCDmXME7rRO4kXLtku1RlA+qKYXp2SQCaZZ3Pi3/v4KCed6oPo9w45m6Xhy4btpyDY8vJ8SedBKm1bLABm81oC62/WMUlj88FUfezy1z1ecTSprew1yNSIQ/FgkZnPoi2Y= 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=d3Kn6YbD; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=BpOKrI6T; 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="d3Kn6YbD"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="BpOKrI6T" ARC-Seal: i=1; a=rsa-sha256; t=1746379774; cv=none; d=strato.com; s=strato-dkim-0002; b=oFdZfCZ+67Dd3ga6ki4V+aJR+ewoaPBx3e1fFNTRZkejt6Iy/sWZfT6I8KOMyxEIDN J9ORLBJYaJI/nQXamvObT4brlpinx9kR/tIYvC/lgTKdVYKwDJo4TTxrviaczX/hRVmz tY/KjbvOqeTPEHC/24KFhPDdr5zZ/umL6dW9lJzpJiE6eerdV5jtdcq6eplz6Uhi7Ozm TXyQD13+GctoztaPf44PSxsXkehVYqof8OkdpN1KKBr/VJ8Fu7f+obM3NKisAdmXUV/t PA/NiZ/hZYc618LX/3BTiZ4nOoIfklqxjJGDsaoAVz+L0ioyoBvoMsFmvRVGGTyXkUtl 4onQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1746379774; 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=ThmyLMnI+zNQGBsrrmk/j1yTgAAi9LHyZ0fVJEHOioo=; b=eMJ/PvqjoTjIaIIi5nFq1cCHHm2oiUjhM6yuy22C1i3aQjHxTKQc/hketU/FTeCFiN 83RKYOL5sI3HUgHyiiNPFjHRWrLYoGLQhGCxHcTNxLXEmvpCYCiNV+aITsr8WQHsbA+5 KfB/ypYcnHUBnCtzGPQBqChbAkTlU2f9c+pbjzbx1JdFJMLANfQgzO0bFwb74c6TD6Ju x/UIGQD4i/MFppuF7/JkhzlHUZBZaMzQoeQcKMTfWd2dxM63BPsUvMJLz8xmVzPJa0ru F8Dym01ftCnO/dRg/8SYpNZmaZFO7xsjBOIMPXQb/2lNdoIGa5PFeRoOj3wzVmuNEcEE sCqw== 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=1746379774; 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=ThmyLMnI+zNQGBsrrmk/j1yTgAAi9LHyZ0fVJEHOioo=; b=d3Kn6YbD5KKgw/Ab9Sh+MM08eHz0M66JAnZ36RFHdVM0Sj0O+8I3zRkUZZxQecmChd N9KMY8isksMH6C395g/fkNuFPsPCaTpJ88IvhnSfsPriX04JoprcQV0OMnEbVimNu8Ed NOo+RkhmsAiljI+rGX6bCopaUYe/ezyU3iO7t7I45Z+cRcIWhY7XSMa+eqron2EqOz+Q fT5xy5XjjJlPN9QG/MFm8Bcp76F04PTNWdufajT48nZYBjMDWnKtoOGgu9INjNpXhF1T hiIE6G/8gwYQEiPkhJT6TVxSUwHEkIMzHXDSsbHqbWmYcLmYnSxLMVG039pKz/Jg6T1P G2jw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1746379774; 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=ThmyLMnI+zNQGBsrrmk/j1yTgAAi9LHyZ0fVJEHOioo=; b=BpOKrI6TSvB7Ldzdiq2qv0Ge4pRpZ4rCF4Qge1+AvJktNpQ1iRWhIazhDyt7+N3cjb /SG35yK4Q9Jax6L4VDDg== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35144HTYz9K (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sun, 4 May 2025 19:29:34 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1uBd9g-0004OW-0h; Sun, 04 May 2025 19:29:32 +0200 Received: (nullmailer pid 243292 invoked by uid 502); Sun, 04 May 2025 17:29:32 -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: [net-next v7 5/6] net: phy: realtek: use __set_bit() in rtl8211f_led_hw_control_get() Date: Sun, 4 May 2025 19:29:15 +0200 Message-Id: <20250504172916.243185-6-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250504172916.243185-1-michael@fossekall.de> References: <20250504172916.243185-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 e01b13a9b5c3..e26098a2ff27 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -659,17 +659,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 Mon Feb 9 00:43:22 2026 Received: from mo4-p02-ob.smtp.rzone.de (mo4-p02-ob.smtp.rzone.de [85.215.255.81]) (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 D41EB1EEA39; Sun, 4 May 2025 17:32:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746379960; cv=pass; b=KsNuKMWwZLGpNClJf5PJw2zCx6JV4yBkrp6Zhmb0q8GXYjhubDqDofZs5qrPMDbFTfhGjDyTyTjs84PY0I+XzcBVMJ6BGf/rOQZqULdimnaSXs6xEvk0S6r2ozZN2H/KaRUvxWHLj+AsdRtmDBj35SfZgrc4HNKNjT2NwPDT97k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746379960; c=relaxed/simple; bh=CGq95FFCitrDU4kSl80FyMm3qcIAzLYe4OPJEcok9ww=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=GLquSytpvxB0U95WtjO5aJHMntYSos+Lc/AdLCEuRJ4cEkOGq52MoMDzwtyJLZjVCkNgZJ098IjZcvVijJMkCIXa43XRi/enWelwIXN8W9ffABUURxZtHJ/YpOhSG1bGOlpJU1WBVMmjcrvqf4e3HTh8328phytUtGLbGnnlZDY= 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=syiaYLbC; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b=VKRRSBm2; arc=pass smtp.client-ip=85.215.255.81 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="syiaYLbC"; dkim=permerror (0-bit key) header.d=fossekall.de header.i=@fossekall.de header.b="VKRRSBm2" ARC-Seal: i=1; a=rsa-sha256; t=1746379774; cv=none; d=strato.com; s=strato-dkim-0002; b=kPOmm7elWmM0zs9YKe0mxTNWb5w+qYBlPgdf+57ZjMBXhjMvzuMjrE3aI5KstUSwck rfNstgoe+pUJo/DSXYNmKgXW0PfBD1fXc4ZcKS8MYbj7oBYU3pGPBNYkH1rS+M6VSp5Y bgqOnv1yl8n4sJnM00sgapL/GL4kZwSRQi3nmwwsKqWh7g0c3dmu+iHj7SMiWd3MkriT ysIzosHXC00b5kza/TS1sGEPVRpLRMnjizy3BBXWPdgZexmiC5NmjG69TSSc9oRPfbxU YPhEtieqzDmQSn9z66Ojlfpocirsn6azSlDEfIhwt1fJE89fuPrq/8FwgzNWNJTAcZWF 6tdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1746379774; 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=PaEoVQlznhi9pCpWZbxcLxQZGvCFQ3YD/uDLUZg5VWE=; b=dmKvPiIf+wayGcgJoG5MxAdWYWz4JwRZwcyQ7GR/VC/eQ678RzZEqyGMvEdSRcyTNL fqFSU4+tHKLLSw5N3gvheXJARjWKHEMNaVBfQrAl0qVRpicZJJBk7PJE2iO76XZrrS4n /O1tHk7crJrIWBocBlHl4bhEIPa/hFz84fGCp+vKDMxu/jSz4mPIWUeAhrRxJRXsHEKC zu3RvN7EMKH4UHrkz+D98sW2TtzkjOag7bSeCSg64yqjxBKQg+UbiABLQzo58Fyg0X8v opwu3S4TiThoNm0443lbFUachdpjVKadNABy8A572nokUGoKFpGxwxsA/jbH2h33i9FK TX6Q== 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=1746379774; 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=PaEoVQlznhi9pCpWZbxcLxQZGvCFQ3YD/uDLUZg5VWE=; b=syiaYLbC5mNqfNKfiGgrsRD5F1NY4edjPEXGQf2BadLt53QjWg1dCyKzd5bRmO2Nav +C8hJpNv82mWZIffqCUo0DVE4hKgbsUkCAYPY5YhUHpy3Mfkqbv78fmGnZunHTwkBK5y FkwUU4MQbK+qPowm06OVRO/QKMokoqyzJDEKa0KbIF9BivTd2bLxCB27XCVUC0vSi0BY HmAUv3GDWMgkpM89pG4MWHk7MX40l+3jV0Tr7nZqbi0skPFpJZHfXiImPvhmOFrfe6Rl pUrY8HlZkjEWiWX3k918Ss7Np9Bk3FdbxYxv4ZbIqR9EGCpwXa07MT46jUy+lMUWCu77 5qRQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1746379774; 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=PaEoVQlznhi9pCpWZbxcLxQZGvCFQ3YD/uDLUZg5VWE=; b=VKRRSBm2kG0JkyaLwjUnEtyYGj1Mw/pTclG703uQTenmfp21fwFBoWpajBvswRGgX7 slKdibBluGkEnZFjZ1Cg== X-RZG-AUTH: ":O2kGeEG7b/pS1EzgE2y7nF0STYsSLflpbjNKxx7cGrBdao6FTL4AJcMdm+lap4JEHkzok9eyEg==" Received: from aerfugl by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id f28b35144HTYz9L (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sun, 4 May 2025 19:29:34 +0200 (CEST) Received: from koltrast.home ([192.168.1.27] helo=a98shuttle.de) by aerfugl with smtp (Exim 4.96) (envelope-from ) id 1uBd9g-0004Or-2w; Sun, 04 May 2025 19:29:32 +0200 Received: (nullmailer pid 243306 invoked by uid 502); Sun, 04 May 2025 17:29:32 -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: [net-next v7 6/6] net: phy: realtek: Add support for PHY LEDs on RTL8211E Date: Sun, 4 May 2025 19:29:16 +0200 Message-Id: <20250504172916.243185-7-michael@fossekall.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250504172916.243185-1-michael@fossekall.de> References: <20250504172916.243185-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 e26098a2ff27..301fbe141b9b 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -40,6 +40,20 @@ #define RTL821x_PAGE_SELECT 0x1f #define RTL821x_SET_EXT_PAGE 0x07 =20 +/* RTL8211E extension page 44/0x2c */ +#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 + /* RTL8211E extension page 164/0xa4 */ #define RTL8211E_RGMII_EXT_PAGE 0xa4 #define RTL8211E_RGMII_DELAY 0x1c @@ -145,7 +159,8 @@ #define RTL_8221B_VN_CG 0x001cc84a #define RTL_8251B 0x001cc862 =20 -#define RTL8211F_LED_COUNT 3 +/* RTL8211E and RTL8211F support up to three LEDs */ +#define RTL8211x_LED_COUNT 3 =20 MODULE_DESCRIPTION("Realtek PHY driver"); MODULE_AUTHOR("Johnson Leung"); @@ -169,6 +184,21 @@ static int rtl821x_write_page(struct phy_device *phyde= v, int page) return __phy_write(phydev, RTL821x_PAGE_SELECT, page); } =20 +static int rtl821x_read_ext_page(struct phy_device *phydev, u16 ext_page, + u32 regnum) +{ + int oldpage, ret =3D 0; + + oldpage =3D phy_select_page(phydev, RTL821x_SET_EXT_PAGE); + if (oldpage >=3D 0) { + ret =3D __phy_write(phydev, RTL821x_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 rtl821x_modify_ext_page(struct phy_device *phydev, u16 ext_page, u32 regnum, u16 mask, u16 set) { @@ -608,7 +638,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) | @@ -627,9 +657,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. */ @@ -648,7 +680,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); @@ -681,7 +713,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)) @@ -704,6 +736,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 rtl821x_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 rtl821x_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 rtl821x_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 rtl821x_modify_ext_page(phydev, RTL8211E_LEDCR_EXT_PAGE, + RTL8211E_LEDCR2, cr2mask, cr2); + + return ret; +} + static int rtl8211e_config_init(struct phy_device *phydev) { u16 val; @@ -1479,6 +1589,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", @@ -1494,7 +1607,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