Devicetree
 help / color / mirror / Atom feed
From: Ivan Galkin <Ivan.Galkin@axis.com>
To: "marek.vasut@mailbox.org" <marek.vasut@mailbox.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Cc: "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"andrew@lunn.ch" <andrew@lunn.ch>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"hkallweit1@gmail.com" <hkallweit1@gmail.com>,
	"michael@fossekall.de" <michael@fossekall.de>,
	"linux@armlinux.org.uk" <linux@armlinux.org.uk>,
	"robh@kernel.org" <robh@kernel.org>,
	"vladimir.oltean@nxp.com" <vladimir.oltean@nxp.com>,
	"olek2@wp.pl" <olek2@wp.pl>, "kuba@kernel.org" <kuba@kernel.org>,
	"f.fainelli@gmail.com" <f.fainelli@gmail.com>,
	"edumazet@google.com" <edumazet@google.com>,
	"conor+dt@kernel.org" <conor+dt@kernel.org>,
	"krzk+dt@kernel.org" <krzk+dt@kernel.org>,
	"pabeni@redhat.com" <pabeni@redhat.com>
Subject: Re: [net-next,PATCH v2 3/3] net: phy: realtek: Add property to enable SSC
Date: Thu, 4 Dec 2025 14:27:50 +0000	[thread overview]
Message-ID: <f9c612bf9ad9b2990d456e6673a65b95438d6c7c.camel@axis.com> (raw)
In-Reply-To: <20251203210857.113328-3-marek.vasut@mailbox.org>

On Wed, 2025-12-03 at 22:08 +0100, Marek Vasut wrote:
> Add support for spread spectrum clocking (SSC) on RTL8211F(D)(I)-CG,
> RTL8211FS(I)(-VS)-CG, RTL8211FG(I)(-VS)-CG PHYs. The implementation
> follows EMI improvement application note Rev. 1.2 for these PHYs.
> 
> The current implementation enables SSC for both RXC and SYSCLK clock
> signals. Introduce DT properties 'realtek,clkout-ssc-enable',
> 'realtek,rxc-ssc-enable' and 'realtek,sysclk-ssc-enable' which
> control
> CLKOUT, RXC and SYSCLK SSC spread spectrum clocking enablement on
> these
> signals.
> 
> Signed-off-by: Marek Vasut <marek.vasut@mailbox.org>
> ---
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Aleksander Jan Bajkowski <olek2@wp.pl>
> Cc: Andrew Lunn <andrew@lunn.ch>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Florian Fainelli <f.fainelli@gmail.com>
> Cc: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Ivan Galkin <ivan.galkin@axis.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Michael Klein <michael@fossekall.de>
> Cc: Paolo Abeni <pabeni@redhat.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Vladimir Oltean <vladimir.oltean@nxp.com>
> Cc: devicetree@vger.kernel.org
> Cc: netdev@vger.kernel.org
> ---
> V2: Split SSC clock control for each CLKOUT, RXC, SYSCLK signal
> ---
>  drivers/net/phy/realtek/realtek_main.c | 124
> +++++++++++++++++++++++++
>  1 file changed, 124 insertions(+)
> 
> diff --git a/drivers/net/phy/realtek/realtek_main.c
> b/drivers/net/phy/realtek/realtek_main.c
> index 67ecf3d4af2b1..ac80653cdbe28 100644
> --- a/drivers/net/phy/realtek/realtek_main.c
> +++ b/drivers/net/phy/realtek/realtek_main.c
> @@ -74,11 +74,19 @@
>  
>  #define RTL8211F_PHYCR2                                0x19
>  #define RTL8211F_CLKOUT_EN                     BIT(0)
> +#define RTL8211F_SYSCLK_SSC_EN                 BIT(3)
>  #define RTL8211F_PHYCR2_PHY_EEE_ENABLE         BIT(5)
> +#define RTL8211F_CLKOUT_SSC_EN                 BIT(7)
>  
>  #define RTL8211F_INSR_PAGE                     0xa43
>  #define RTL8211F_INSR                          0x1d
>  
> +/* RTL8211F SSC settings */
> +#define RTL8211F_SSC_PAGE                      0xc44
> +#define RTL8211F_SSC_RXC                       0x13
> +#define RTL8211F_SSC_SYSCLK                    0x17
> +#define RTL8211F_SSC_CLKOUT                    0x19
> +
>  /* RTL8211F LED configuration */
>  #define RTL8211F_LEDCR_PAGE                    0xd04
>  #define RTL8211F_LEDCR                         0x10
> @@ -203,6 +211,9 @@ MODULE_LICENSE("GPL");
>  struct rtl821x_priv {
>         bool enable_aldps;
>         bool disable_clk_out;
> +       bool enable_clkout_ssc;
> +       bool enable_rxc_ssc;
> +       bool enable_sysclk_ssc;
>         struct clk *clk;
>         /* rtl8211f */
>         u16 iner;
> @@ -266,6 +277,12 @@ static int rtl821x_probe(struct phy_device
> *phydev)
>                                                    "realtek,aldps-
> enable");
>         priv->disable_clk_out = of_property_read_bool(dev->of_node,
>                                                      
> "realtek,clkout-disable");
> +       priv->enable_clkout_ssc = of_property_read_bool(dev->of_node,
> +                                                       "realtek,clko
> ut-ssc-enable");
> +       priv->enable_rxc_ssc = of_property_read_bool(dev->of_node,
> +                                                    "realtek,rxc-
> ssc-enable");
> +       priv->enable_sysclk_ssc = of_property_read_bool(dev->of_node,
> +                                                       "realtek,sysc
> lk-ssc-enable");
>  
>         phydev->priv = priv;
>  
> @@ -700,6 +717,101 @@ static int rtl8211f_config_phy_eee(struct
> phy_device *phydev)
>                                 RTL8211F_PHYCR2_PHY_EEE_ENABLE, 0);
>  }
>  
> +static int rtl8211f_config_clkout_ssc(struct phy_device *phydev)
> +{
> +       struct rtl821x_priv *priv = phydev->priv;
> +       struct device *dev = &phydev->mdio.dev;
> +       int ret;
> +
> +       /* The value is preserved if the device tree property is
> absent */
> +       if (!priv->enable_clkout_ssc)
> +               return 0;
> +
> +       /* RTL8211FVD has no PHYCR2 register */
> +       if (phydev->drv->phy_id == RTL_8211FVD_PHYID)
> +               return 0;

I recommend rewording this comment, otherwise any manipulation of
PHYCR2 on RTL8211FVD will be considered an error. For example, PHY-mode
EEE on this PHY is still set via PHYCR2.

IMHO the technically correct comment should state that the
configuration of CLKOUT SSC is not currently supported by this driver.


  reply	other threads:[~2025-12-04 14:27 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-03 21:08 [net-next,PATCH v2 1/3] dt-bindings: net: realtek,rtl82xx: Keep property list sorted Marek Vasut
2025-12-03 21:08 ` [net-next,PATCH v2 2/3] dt-bindings: net: realtek,rtl82xx: Document realtek,ssc-enable property Marek Vasut
2025-12-05  9:04   ` Krzysztof Kozlowski
2025-12-18 17:20     ` Marek Vasut
2025-12-03 21:08 ` [net-next,PATCH v2 3/3] net: phy: realtek: Add property to enable SSC Marek Vasut
2025-12-04 14:27   ` Ivan Galkin [this message]
2025-12-11 18:39   ` Sai Krishna Gajula
2025-12-18 17:33     ` Marek Vasut
2025-12-04 11:04 ` [net-next,PATCH v2 1/3] dt-bindings: net: realtek,rtl82xx: Keep property list sorted Paolo Abeni
2025-12-05  9:03 ` Krzysztof Kozlowski
2025-12-18 17:11   ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f9c612bf9ad9b2990d456e6673a65b95438d6c7c.camel@axis.com \
    --to=ivan.galkin@axis.com \
    --cc=andrew@lunn.ch \
    --cc=conor+dt@kernel.org \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=edumazet@google.com \
    --cc=f.fainelli@gmail.com \
    --cc=hkallweit1@gmail.com \
    --cc=krzk+dt@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=marek.vasut@mailbox.org \
    --cc=michael@fossekall.de \
    --cc=netdev@vger.kernel.org \
    --cc=olek2@wp.pl \
    --cc=pabeni@redhat.com \
    --cc=robh@kernel.org \
    --cc=vladimir.oltean@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox