* [PATCH 0/2] clk: en7523: Add support for selecting SCU serdes
@ 2026-07-24 18:43 Christian Marangi
2026-07-24 18:43 ` [PATCH 1/2] dt-bindings: clock: airoha: Add PHY binding for Serdes port Christian Marangi
2026-07-24 18:43 ` [PATCH 2/2] clk: en7523: Add support for selecting the Serdes port in SCU Christian Marangi
0 siblings, 2 replies; 7+ messages in thread
From: Christian Marangi @ 2026-07-24 18:43 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Brian Masney, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Christian Marangi,
Felix Fietkau, linux-clk, devicetree, linux-kernel
This small series is a split from the Airoha AN7581 USB PHY series [1].
[1] https://lore.kernel.org/all/20260702093812.15918-1-ansuelsmth@gmail.com/
Christian Marangi (2):
dt-bindings: clock: airoha: Add PHY binding for Serdes port
clk: en7523: Add support for selecting the Serdes port in SCU
.../bindings/clock/airoha,en7523-scu.yaml | 24 +-
drivers/clk/Kconfig | 1 +
drivers/clk/clk-en7523.c | 218 +++++++++++++++++-
include/dt-bindings/soc/airoha,scu-ssr.h | 11 +
4 files changed, 248 insertions(+), 6 deletions(-)
create mode 100644 include/dt-bindings/soc/airoha,scu-ssr.h
--
2.53.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] dt-bindings: clock: airoha: Add PHY binding for Serdes port
2026-07-24 18:43 [PATCH 0/2] clk: en7523: Add support for selecting SCU serdes Christian Marangi
@ 2026-07-24 18:43 ` Christian Marangi
2026-07-27 20:05 ` Brian Masney
2026-07-24 18:43 ` [PATCH 2/2] clk: en7523: Add support for selecting the Serdes port in SCU Christian Marangi
1 sibling, 1 reply; 7+ messages in thread
From: Christian Marangi @ 2026-07-24 18:43 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Brian Masney, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Christian Marangi,
Felix Fietkau, linux-clk, devicetree, linux-kernel
Add PHY cell property for Serdes port selection. Currently supported only
for Airoha AN7581 SoC, that support up to 4 Serdes port.
The Serdes port can support both PCIe, USB3 or Ethernet mode.
- PCIe1 Serdes can support PCIe or Ethernet mode.
- PCIe2 Serdes can support PCIe or Ethernet mode.
- USB1 Serdes can support USB3 or HSGMII mode.
- USB2 Serdes can support USB3 or PCIe mode.
Add bindings to permit correct reference of the Serdes ports in DT.
Values are just symbolic and enumerates the Serdes port with a specific
number for precise reference.
The available Serdes port can be selected following the dt-binding header
in [2].
[2] <include/dt-bindings/soc/airoha,scu-ssr.h>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
.../bindings/clock/airoha,en7523-scu.yaml | 24 ++++++++++++++++---
include/dt-bindings/soc/airoha,scu-ssr.h | 11 +++++++++
2 files changed, 32 insertions(+), 3 deletions(-)
create mode 100644 include/dt-bindings/soc/airoha,scu-ssr.h
diff --git a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
index eb24a5687639..fc37786ac7ed 100644
--- a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
+++ b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
@@ -23,6 +23,7 @@ description: |
All these identifiers can be found in:
[1]: <include/dt-bindings/clock/en7523-clk.h>.
+ [2]: <include/dt-bindings/soc/airoha,scu-ssr.h>.
The clocks are provided inside a system controller node.
@@ -50,6 +51,12 @@ properties:
description: ID of the controller reset line
const: 1
+ '#phy-cells':
+ description:
+ The first cell indicates the serdes phy number, see [2] for the
+ available serdes port.
+ const: 1
+
required:
- compatible
- reg
@@ -65,12 +72,23 @@ allOf:
reg:
minItems: 2
+ '#phy-cells': false
+
+ - if:
+ properties:
+ compatible:
+ const: econet,en751221-scu
+ then:
+ properties:
+ reg:
+ maxItems: 1
+
+ '#phy-cells': false
+
- if:
properties:
compatible:
- enum:
- - airoha,en7581-scu
- - econet,en751221-scu
+ const: airoha,en7581-scu
then:
properties:
reg:
diff --git a/include/dt-bindings/soc/airoha,scu-ssr.h b/include/dt-bindings/soc/airoha,scu-ssr.h
new file mode 100644
index 000000000000..33c64844ada3
--- /dev/null
+++ b/include/dt-bindings/soc/airoha,scu-ssr.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+#ifndef __DT_BINDINGS_AIROHA_SCU_SSR_H
+#define __DT_BINDINGS_AIROHA_SCU_SSR_H
+
+#define AIROHA_SCU_SERDES_PCIE1 0
+#define AIROHA_SCU_SERDES_PCIE2 1
+#define AIROHA_SCU_SERDES_USB1 2
+#define AIROHA_SCU_SERDES_USB2 3
+
+#endif /* __DT_BINDINGS_AIROHA_SCU_SSR_H */
--
2.53.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] clk: en7523: Add support for selecting the Serdes port in SCU
2026-07-24 18:43 [PATCH 0/2] clk: en7523: Add support for selecting SCU serdes Christian Marangi
2026-07-24 18:43 ` [PATCH 1/2] dt-bindings: clock: airoha: Add PHY binding for Serdes port Christian Marangi
@ 2026-07-24 18:43 ` Christian Marangi
1 sibling, 0 replies; 7+ messages in thread
From: Christian Marangi @ 2026-07-24 18:43 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Brian Masney, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Christian Marangi,
Felix Fietkau, linux-clk, devicetree, linux-kernel
In the SCU register for clock and reset, there are also some register to
select the Serdes port mode. The Airoha AN7581 SoC have 4 different Serdes
that can switch between PCIe, USB or Ethernet mode.
Add a simple PHY provider that expose the .set_mode OP to toggle the
requested mode for the Serdes port.
Reviewed-by: Brian Masney <bmasney@redhat.com>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/clk/Kconfig | 1 +
drivers/clk/clk-en7523.c | 218 ++++++++++++++++++++++++++++++++++++++-
2 files changed, 216 insertions(+), 3 deletions(-)
diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index 1717ce75a907..4d58c35d88bc 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -221,6 +221,7 @@ config COMMON_CLK_EN7523
bool "Clock driver for Airoha/EcoNet SoC system clocks"
depends on OF
depends on ARCH_AIROHA || ECONET || COMPILE_TEST
+ select GENERIC_PHY
default ARCH_AIROHA
help
This driver provides the fixed clocks and gates present on Airoha
diff --git a/drivers/clk/clk-en7523.c b/drivers/clk/clk-en7523.c
index 1ab0e2eca5d3..183cf7fe4bda 100644
--- a/drivers/clk/clk-en7523.c
+++ b/drivers/clk/clk-en7523.c
@@ -6,14 +6,18 @@
#include <linux/io.h>
#include <linux/mfd/syscon.h>
#include <linux/platform_device.h>
+#include <linux/phy.h>
+#include <linux/phy/phy.h>
#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/reset-controller.h>
+#include <linux/spinlock.h>
#include <dt-bindings/clock/en7523-clk.h>
#include <dt-bindings/reset/airoha,en7523-reset.h>
#include <dt-bindings/reset/airoha,en7581-reset.h>
#include <dt-bindings/clock/econet,en751221-scu.h>
#include <dt-bindings/reset/econet,en751221-scu.h>
+#include <dt-bindings/soc/airoha,scu-ssr.h>
#define RST_NR_PER_BANK 32
@@ -40,9 +44,22 @@
#define REG_HIR_MASK GENMASK(31, 16)
/* EN7581 */
#define REG_NP_SCU_PCIC 0x88
+#define REG_NP_SCU_SSR3 0x94
+#define REG_SSUSB_HSGMII_SEL_MASK BIT(29)
+#define REG_SSUSB_HSGMII_SEL_HSGMII FIELD_PREP_CONST(REG_SSUSB_HSGMII_SEL_MASK, 0x0)
+#define REG_SSUSB_HSGMII_SEL_USB FIELD_PREP_CONST(REG_SSUSB_HSGMII_SEL_MASK, 0x1)
#define REG_NP_SCU_SSTR 0x9c
#define REG_PCIE_XSI0_SEL_MASK GENMASK(14, 13)
+#define REG_PCIE_XSI0_SEL_PCIE FIELD_PREP_CONST(REG_PCIE_XSI0_SEL_MASK, 0x0)
+#define REG_PCIE_XSI0_SEL_XFI FIELD_PREP_CONST(REG_PCIE_XSI0_SEL_MASK, 0x1)
+#define REG_PCIE_XSI0_SEL_HSGMII FIELD_PREP_CONST(REG_PCIE_XSI0_SEL_MASK, 0x2)
#define REG_PCIE_XSI1_SEL_MASK GENMASK(12, 11)
+#define REG_PCIE_XSI1_SEL_PCIE FIELD_PREP_CONST(REG_PCIE_XSI1_SEL_MASK, 0x0)
+#define REG_PCIE_XSI1_SEL_XFI FIELD_PREP_CONST(REG_PCIE_XSI1_SEL_MASK, 0x1)
+#define REG_PCIE_XSI1_SEL_HSGMII FIELD_PREP_CONST(REG_PCIE_XSI1_SEL_MASK, 0x2)
+#define REG_USB_PCIE_SEL_MASK BIT(3)
+#define REG_USB_PCIE_SEL_PCIE FIELD_PREP_CONST(REG_USB_PCIE_SEL_MASK, 0x0)
+#define REG_USB_PCIE_SEL_USB FIELD_PREP_CONST(REG_USB_PCIE_SEL_MASK, 0x1)
#define REG_CRYPTO_CLKSRC2 0x20c
/* EN751221 */
#define EN751221_REG_SPI_DIV 0x0cc
@@ -81,6 +98,8 @@ enum en_hir {
HIR_MAX = 14,
};
+#define EN_SERDES_PHY_NUM 4
+
struct en_clk_desc {
int id;
const char *name;
@@ -113,6 +132,18 @@ struct en_rst_data {
struct reset_controller_dev rcdev;
};
+struct en_serdes_phy_instance {
+ struct phy *phy;
+ unsigned int serdes_port;
+};
+
+struct en_clk_priv {
+ void __iomem *base;
+ /* protect SCU register */
+ spinlock_t lock;
+ struct en_serdes_phy_instance *serdes_phys[EN_SERDES_PHY_NUM];
+};
+
struct en_clk_soc_data {
u32 num_clocks;
const struct clk_ops pcie_ops;
@@ -830,12 +861,179 @@ static int en7581_reset_register(struct device *dev, void __iomem *base,
return devm_reset_controller_register(dev, &rst_data->rcdev);
}
+static int en7581_serdes_phy_set_mode(struct phy *phy, enum phy_mode mode,
+ int submode)
+{
+ struct en_serdes_phy_instance *instance = phy_get_drvdata(phy);
+ struct en_clk_priv *priv = dev_get_drvdata(phy->dev.parent);
+ u32 reg, mask, sel, val;
+ unsigned long flags;
+
+ switch (instance->serdes_port) {
+ case AIROHA_SCU_SERDES_PCIE1:
+ reg = REG_NP_SCU_SSTR;
+ mask = REG_PCIE_XSI0_SEL_MASK;
+
+ if (mode != PHY_MODE_ETHERNET && mode != PHY_MODE_PCIE)
+ return -EINVAL;
+
+ if (mode == PHY_MODE_ETHERNET) {
+ switch (submode) {
+ case PHY_INTERFACE_MODE_USXGMII:
+ case PHY_INTERFACE_MODE_10GBASER:
+ sel = REG_PCIE_XSI0_SEL_XFI;
+ break;
+ case PHY_INTERFACE_MODE_SGMII:
+ case PHY_INTERFACE_MODE_1000BASEX:
+ case PHY_INTERFACE_MODE_2500BASEX:
+ sel = REG_PCIE_XSI0_SEL_HSGMII;
+ break;
+ default:
+ return -EINVAL;
+ }
+ } else {
+ sel = REG_PCIE_XSI0_SEL_PCIE;
+ }
+
+ break;
+ case AIROHA_SCU_SERDES_PCIE2:
+ reg = REG_NP_SCU_SSTR;
+ mask = REG_PCIE_XSI1_SEL_MASK;
+
+ if (mode != PHY_MODE_ETHERNET && mode != PHY_MODE_PCIE)
+ return -EINVAL;
+
+ if (mode == PHY_MODE_ETHERNET) {
+ switch (submode) {
+ case PHY_INTERFACE_MODE_USXGMII:
+ case PHY_INTERFACE_MODE_10GBASER:
+ sel = REG_PCIE_XSI1_SEL_XFI;
+ break;
+ case PHY_INTERFACE_MODE_SGMII:
+ case PHY_INTERFACE_MODE_1000BASEX:
+ case PHY_INTERFACE_MODE_2500BASEX:
+ sel = REG_PCIE_XSI1_SEL_HSGMII;
+ break;
+ default:
+ return -EINVAL;
+ }
+ } else {
+ sel = REG_PCIE_XSI1_SEL_PCIE;
+ }
+
+ break;
+ case AIROHA_SCU_SERDES_USB1:
+ reg = REG_NP_SCU_SSR3;
+ mask = REG_SSUSB_HSGMII_SEL_MASK;
+
+ if (mode != PHY_MODE_ETHERNET && mode != PHY_MODE_USB_DEVICE &&
+ mode != PHY_MODE_USB_DEVICE_SS)
+ return -EINVAL;
+
+ if (mode == PHY_MODE_ETHERNET)
+ sel = REG_SSUSB_HSGMII_SEL_HSGMII;
+ else
+ sel = REG_SSUSB_HSGMII_SEL_USB;
+
+ break;
+ case AIROHA_SCU_SERDES_USB2:
+ reg = REG_NP_SCU_SSTR;
+ mask = REG_USB_PCIE_SEL_MASK;
+
+ if (mode != PHY_MODE_PCIE && mode != PHY_MODE_USB_DEVICE &&
+ mode != PHY_MODE_USB_DEVICE_SS)
+ return -EINVAL;
+
+ if (mode == PHY_MODE_PCIE)
+ sel = REG_USB_PCIE_SEL_PCIE;
+ else
+ sel = REG_USB_PCIE_SEL_USB;
+
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ spin_lock_irqsave(&priv->lock, flags);
+ val = readl(priv->base + reg);
+ val &= ~mask;
+ val |= sel;
+ writel(val, priv->base + reg);
+ spin_unlock_irqrestore(&priv->lock, flags);
+
+ return 0;
+}
+
+static const struct phy_ops en7581_serdes_phy_ops = {
+ .set_mode = en7581_serdes_phy_set_mode,
+ .owner = THIS_MODULE,
+};
+
+static struct phy *en7581_serdes_phy_xlate(struct device *dev,
+ const struct of_phandle_args *args)
+{
+ struct en_clk_priv *priv = dev_get_drvdata(dev);
+ struct en_serdes_phy_instance *instance;
+ unsigned int serdes_port;
+
+ if (args->args_count != 1) {
+ dev_err(dev, "invalid number of cells in 'phy' property\n");
+ return ERR_PTR(-EINVAL);
+ }
+
+ serdes_port = args->args[0];
+ if (serdes_port >= EN_SERDES_PHY_NUM) {
+ dev_err(dev, "invalid serdes port: %d\n", serdes_port);
+ return ERR_PTR(-EINVAL);
+ }
+
+ instance = priv->serdes_phys[serdes_port];
+ if (!instance) {
+ dev_err(dev, "failed to find appropriate serdes phy\n");
+ return ERR_PTR(-EINVAL);
+ }
+
+ return instance->phy;
+}
+
+static int en7581_serdes_phy_register(struct device *dev)
+{
+ struct en_clk_priv *priv = dev_get_drvdata(dev);
+ struct phy_provider *phy_provider;
+ int i;
+
+ for (i = 0; i < EN_SERDES_PHY_NUM; i++) {
+ struct en_serdes_phy_instance *instance;
+
+ instance = devm_kzalloc(dev, sizeof(*instance),
+ GFP_KERNEL);
+ if (!instance)
+ return -ENOMEM;
+
+ instance->phy = devm_phy_create(dev, NULL,
+ &en7581_serdes_phy_ops);
+ if (IS_ERR(instance->phy))
+ return dev_err_probe(dev, PTR_ERR(instance->phy), "failed to create phy\n");
+
+ instance->serdes_port = i;
+ priv->serdes_phys[i] = instance;
+
+ phy_set_drvdata(instance->phy, instance);
+ }
+
+ phy_provider = devm_of_phy_provider_register(dev, en7581_serdes_phy_xlate);
+
+ return PTR_ERR_OR_ZERO(phy_provider);
+}
+
static int en7581_clk_hw_init(struct platform_device *pdev,
struct clk_hw_onecell_data *clk_data)
{
+ struct en_clk_priv *priv = platform_get_drvdata(pdev);
struct regmap *map;
void __iomem *base;
u32 val;
+ int ret;
map = syscon_regmap_lookup_by_compatible("airoha,en7581-chip-scu");
if (IS_ERR(map))
@@ -845,6 +1043,8 @@ static int en7581_clk_hw_init(struct platform_device *pdev,
if (IS_ERR(base))
return PTR_ERR(base);
+ priv->base = base;
+
en7581_register_clocks(&pdev->dev, clk_data, map, base);
val = readl(base + REG_NP_SCU_SSTR);
@@ -853,9 +1053,12 @@ static int en7581_clk_hw_init(struct platform_device *pdev,
val = readl(base + REG_NP_SCU_PCIC);
writel(val | 3, base + REG_NP_SCU_PCIC);
- return en7581_reset_register(&pdev->dev, base, en7581_rst_map,
- ARRAY_SIZE(en7581_rst_map),
- en7581_rst_ofs);
+ ret = en7581_reset_register(&pdev->dev, base, en7581_rst_map,
+ ARRAY_SIZE(en7581_rst_map), en7581_rst_ofs);
+ if (ret)
+ return ret;
+
+ return en7581_serdes_phy_register(&pdev->dev);
}
static enum en_hir get_hw_id(void __iomem *np_base)
@@ -962,16 +1165,25 @@ static int en7523_clk_probe(struct platform_device *pdev)
struct device_node *node = pdev->dev.of_node;
const struct en_clk_soc_data *soc_data;
struct clk_hw_onecell_data *clk_data;
+ struct en_clk_priv *priv;
int r;
soc_data = device_get_match_data(&pdev->dev);
+ priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+
+ spin_lock_init(&priv->lock);
+
clk_data = devm_kzalloc(&pdev->dev,
struct_size(clk_data, hws, soc_data->num_clocks),
GFP_KERNEL);
if (!clk_data)
return -ENOMEM;
+ platform_set_drvdata(pdev, priv);
+
clk_data->num = soc_data->num_clocks;
r = soc_data->hw_init(pdev, clk_data);
if (r)
--
2.53.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt-bindings: clock: airoha: Add PHY binding for Serdes port
2026-07-24 18:43 ` [PATCH 1/2] dt-bindings: clock: airoha: Add PHY binding for Serdes port Christian Marangi
@ 2026-07-27 20:05 ` Brian Masney
2026-07-27 20:09 ` Christian Marangi
0 siblings, 1 reply; 7+ messages in thread
From: Brian Masney @ 2026-07-27 20:05 UTC (permalink / raw)
To: Christian Marangi
Cc: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Felix Fietkau, linux-clk, devicetree, linux-kernel
Hi Christian,
On Fri, Jul 24, 2026 at 08:43:01PM +0200, Christian Marangi wrote:
> Add PHY cell property for Serdes port selection. Currently supported only
> for Airoha AN7581 SoC, that support up to 4 Serdes port.
>
> The Serdes port can support both PCIe, USB3 or Ethernet mode.
>
> - PCIe1 Serdes can support PCIe or Ethernet mode.
> - PCIe2 Serdes can support PCIe or Ethernet mode.
> - USB1 Serdes can support USB3 or HSGMII mode.
> - USB2 Serdes can support USB3 or PCIe mode.
>
> Add bindings to permit correct reference of the Serdes ports in DT.
> Values are just symbolic and enumerates the Serdes port with a specific
> number for precise reference.
>
> The available Serdes port can be selected following the dt-binding header
> in [2].
>
> [2] <include/dt-bindings/soc/airoha,scu-ssr.h>
>
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> ---
> .../bindings/clock/airoha,en7523-scu.yaml | 24 ++++++++++++++++---
> include/dt-bindings/soc/airoha,scu-ssr.h | 11 +++++++++
> 2 files changed, 32 insertions(+), 3 deletions(-)
> create mode 100644 include/dt-bindings/soc/airoha,scu-ssr.h
>
> diff --git a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> index eb24a5687639..fc37786ac7ed 100644
> --- a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> +++ b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> @@ -23,6 +23,7 @@ description: |
>
> All these identifiers can be found in:
> [1]: <include/dt-bindings/clock/en7523-clk.h>.
> + [2]: <include/dt-bindings/soc/airoha,scu-ssr.h>.
>
> The clocks are provided inside a system controller node.
>
> @@ -50,6 +51,12 @@ properties:
> description: ID of the controller reset line
> const: 1
>
> + '#phy-cells':
> + description:
> + The first cell indicates the serdes phy number, see [2] for the
> + available serdes port.
> + const: 1
> +
> required:
> - compatible
> - reg
> @@ -65,12 +72,23 @@ allOf:
> reg:
> minItems: 2
>
> + '#phy-cells': false
> +
> + - if:
> + properties:
> + compatible:
> + const: econet,en751221-scu
> + then:
> + properties:
> + reg:
> + maxItems: 1
> +
> + '#phy-cells': false
> +
> - if:
> properties:
> compatible:
> - enum:
> - - airoha,en7581-scu
> - - econet,en751221-scu
> + const: airoha,en7581-scu
> then:
> properties:
> reg:
This chunk is new since the split out v10 series[1]. I see that you dropped
krzk's Reviewed-by presumably because of the new chunk. However I don't
see a changelog.
I'm collecting patches up for a clk pull to Stephen. (I'm not sure if
he's going to pull but I'm going to try.) I'm not going to include this
series until I see a Reviewed-by by one of the dt maintainers on the new
patch.
https://lore.kernel.org/all/20260702093812.15918-2-ansuelsmth@gmail.com/
Brian
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt-bindings: clock: airoha: Add PHY binding for Serdes port
2026-07-27 20:05 ` Brian Masney
@ 2026-07-27 20:09 ` Christian Marangi
2026-07-27 20:18 ` Brian Masney
0 siblings, 1 reply; 7+ messages in thread
From: Christian Marangi @ 2026-07-27 20:09 UTC (permalink / raw)
To: Brian Masney
Cc: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Felix Fietkau, linux-clk, devicetree, linux-kernel
On Mon, Jul 27, 2026 at 04:05:43PM -0400, Brian Masney wrote:
> Hi Christian,
>
> On Fri, Jul 24, 2026 at 08:43:01PM +0200, Christian Marangi wrote:
> > Add PHY cell property for Serdes port selection. Currently supported only
> > for Airoha AN7581 SoC, that support up to 4 Serdes port.
> >
> > The Serdes port can support both PCIe, USB3 or Ethernet mode.
> >
> > - PCIe1 Serdes can support PCIe or Ethernet mode.
> > - PCIe2 Serdes can support PCIe or Ethernet mode.
> > - USB1 Serdes can support USB3 or HSGMII mode.
> > - USB2 Serdes can support USB3 or PCIe mode.
> >
> > Add bindings to permit correct reference of the Serdes ports in DT.
> > Values are just symbolic and enumerates the Serdes port with a specific
> > number for precise reference.
> >
> > The available Serdes port can be selected following the dt-binding header
> > in [2].
> >
> > [2] <include/dt-bindings/soc/airoha,scu-ssr.h>
> >
> > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> > ---
> > .../bindings/clock/airoha,en7523-scu.yaml | 24 ++++++++++++++++---
> > include/dt-bindings/soc/airoha,scu-ssr.h | 11 +++++++++
> > 2 files changed, 32 insertions(+), 3 deletions(-)
> > create mode 100644 include/dt-bindings/soc/airoha,scu-ssr.h
> >
> > diff --git a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> > index eb24a5687639..fc37786ac7ed 100644
> > --- a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> > +++ b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> > @@ -23,6 +23,7 @@ description: |
> >
> > All these identifiers can be found in:
> > [1]: <include/dt-bindings/clock/en7523-clk.h>.
> > + [2]: <include/dt-bindings/soc/airoha,scu-ssr.h>.
> >
> > The clocks are provided inside a system controller node.
> >
> > @@ -50,6 +51,12 @@ properties:
> > description: ID of the controller reset line
> > const: 1
> >
> > + '#phy-cells':
> > + description:
> > + The first cell indicates the serdes phy number, see [2] for the
> > + available serdes port.
> > + const: 1
> > +
> > required:
> > - compatible
> > - reg
> > @@ -65,12 +72,23 @@ allOf:
> > reg:
> > minItems: 2
> >
> > + '#phy-cells': false
> > +
> > + - if:
> > + properties:
> > + compatible:
> > + const: econet,en751221-scu
> > + then:
> > + properties:
> > + reg:
> > + maxItems: 1
> > +
> > + '#phy-cells': false
> > +
> > - if:
> > properties:
> > compatible:
> > - enum:
> > - - airoha,en7581-scu
> > - - econet,en751221-scu
> > + const: airoha,en7581-scu
> > then:
> > properties:
> > reg:
>
> This chunk is new since the split out v10 series[1]. I see that you dropped
> krzk's Reviewed-by presumably because of the new chunk. However I don't
> see a changelog.
>
> I'm collecting patches up for a clk pull to Stephen. (I'm not sure if
> he's going to pull but I'm going to try.) I'm not going to include this
> series until I see a Reviewed-by by one of the dt maintainers on the new
> patch.
>
> https://lore.kernel.org/all/20260702093812.15918-2-ansuelsmth@gmail.com/
>
Hi Brian,
yes all correct. I dropped as the patch changed (change is trivial but not
correct)
It's ok as long as stuff gets eventually picked ahahah
--
Ansuel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt-bindings: clock: airoha: Add PHY binding for Serdes port
2026-07-27 20:09 ` Christian Marangi
@ 2026-07-27 20:18 ` Brian Masney
2026-07-27 20:21 ` Christian Marangi
0 siblings, 1 reply; 7+ messages in thread
From: Brian Masney @ 2026-07-27 20:18 UTC (permalink / raw)
To: Christian Marangi
Cc: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Felix Fietkau, linux-clk, devicetree, linux-kernel
On Mon, Jul 27, 2026 at 10:09:17PM +0200, Christian Marangi wrote:
> On Mon, Jul 27, 2026 at 04:05:43PM -0400, Brian Masney wrote:
> > On Fri, Jul 24, 2026 at 08:43:01PM +0200, Christian Marangi wrote:
> > > diff --git a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> > > index eb24a5687639..fc37786ac7ed 100644
> > > --- a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> > > +++ b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> > > @@ -23,6 +23,7 @@ description: |
> > >
> > > All these identifiers can be found in:
> > > [1]: <include/dt-bindings/clock/en7523-clk.h>.
> > > + [2]: <include/dt-bindings/soc/airoha,scu-ssr.h>.
> > >
> > > The clocks are provided inside a system controller node.
> > >
> > > @@ -50,6 +51,12 @@ properties:
> > > description: ID of the controller reset line
> > > const: 1
> > >
> > > + '#phy-cells':
> > > + description:
> > > + The first cell indicates the serdes phy number, see [2] for the
> > > + available serdes port.
> > > + const: 1
> > > +
> > > required:
> > > - compatible
> > > - reg
> > > @@ -65,12 +72,23 @@ allOf:
> > > reg:
> > > minItems: 2
> > >
> > > + '#phy-cells': false
> > > +
> > > + - if:
> > > + properties:
> > > + compatible:
> > > + const: econet,en751221-scu
> > > + then:
> > > + properties:
> > > + reg:
> > > + maxItems: 1
> > > +
> > > + '#phy-cells': false
> > > +
> > > - if:
> > > properties:
> > > compatible:
> > > - enum:
> > > - - airoha,en7581-scu
> > > - - econet,en751221-scu
> > > + const: airoha,en7581-scu
> > > then:
> > > properties:
> > > reg:
> >
> > This chunk is new since the split out v10 series[1]. I see that you dropped
> > krzk's Reviewed-by presumably because of the new chunk. However I don't
> > see a changelog.
> >
> > I'm collecting patches up for a clk pull to Stephen. (I'm not sure if
> > he's going to pull but I'm going to try.) I'm not going to include this
> > series until I see a Reviewed-by by one of the dt maintainers on the new
> > patch.
> >
> > https://lore.kernel.org/all/20260702093812.15918-2-ansuelsmth@gmail.com/
> >
>
> Hi Brian,
>
> yes all correct. I dropped as the patch changed (change is trivial but not
> correct)
But not correct? Do you need to post a new version of this series?
If this version is correct, then I suggest including a changelog here
for krzk.
Brian
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt-bindings: clock: airoha: Add PHY binding for Serdes port
2026-07-27 20:18 ` Brian Masney
@ 2026-07-27 20:21 ` Christian Marangi
0 siblings, 0 replies; 7+ messages in thread
From: Christian Marangi @ 2026-07-27 20:21 UTC (permalink / raw)
To: Brian Masney
Cc: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Felix Fietkau, linux-clk, devicetree, linux-kernel
On Mon, Jul 27, 2026 at 04:18:37PM -0400, Brian Masney wrote:
> On Mon, Jul 27, 2026 at 10:09:17PM +0200, Christian Marangi wrote:
> > On Mon, Jul 27, 2026 at 04:05:43PM -0400, Brian Masney wrote:
> > > On Fri, Jul 24, 2026 at 08:43:01PM +0200, Christian Marangi wrote:
> > > > diff --git a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> > > > index eb24a5687639..fc37786ac7ed 100644
> > > > --- a/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> > > > +++ b/Documentation/devicetree/bindings/clock/airoha,en7523-scu.yaml
> > > > @@ -23,6 +23,7 @@ description: |
> > > >
> > > > All these identifiers can be found in:
> > > > [1]: <include/dt-bindings/clock/en7523-clk.h>.
> > > > + [2]: <include/dt-bindings/soc/airoha,scu-ssr.h>.
> > > >
> > > > The clocks are provided inside a system controller node.
> > > >
> > > > @@ -50,6 +51,12 @@ properties:
> > > > description: ID of the controller reset line
> > > > const: 1
> > > >
> > > > + '#phy-cells':
> > > > + description:
> > > > + The first cell indicates the serdes phy number, see [2] for the
> > > > + available serdes port.
> > > > + const: 1
> > > > +
> > > > required:
> > > > - compatible
> > > > - reg
> > > > @@ -65,12 +72,23 @@ allOf:
> > > > reg:
> > > > minItems: 2
> > > >
> > > > + '#phy-cells': false
> > > > +
> > > > + - if:
> > > > + properties:
> > > > + compatible:
> > > > + const: econet,en751221-scu
> > > > + then:
> > > > + properties:
> > > > + reg:
> > > > + maxItems: 1
> > > > +
> > > > + '#phy-cells': false
> > > > +
> > > > - if:
> > > > properties:
> > > > compatible:
> > > > - enum:
> > > > - - airoha,en7581-scu
> > > > - - econet,en751221-scu
> > > > + const: airoha,en7581-scu
> > > > then:
> > > > properties:
> > > > reg:
> > >
> > > This chunk is new since the split out v10 series[1]. I see that you dropped
> > > krzk's Reviewed-by presumably because of the new chunk. However I don't
> > > see a changelog.
> > >
> > > I'm collecting patches up for a clk pull to Stephen. (I'm not sure if
> > > he's going to pull but I'm going to try.) I'm not going to include this
> > > series until I see a Reviewed-by by one of the dt maintainers on the new
> > > patch.
> > >
> > > https://lore.kernel.org/all/20260702093812.15918-2-ansuelsmth@gmail.com/
> > >
> >
> > Hi Brian,
> >
> > yes all correct. I dropped as the patch changed (change is trivial but not
> > correct)
>
> But not correct? Do you need to post a new version of this series?
>
Also the previous one was O.K.. This is just better.
> If this version is correct, then I suggest including a changelog here
> for krzk.
>
Let me add the changelog here so he can quickly check the change:
Changelog from v10 series:
- Rework if condition and reject #phy-cells for
econet,en751221-scu compatible.
--
Ansuel
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-07-27 20:22 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-24 18:43 [PATCH 0/2] clk: en7523: Add support for selecting SCU serdes Christian Marangi
2026-07-24 18:43 ` [PATCH 1/2] dt-bindings: clock: airoha: Add PHY binding for Serdes port Christian Marangi
2026-07-27 20:05 ` Brian Masney
2026-07-27 20:09 ` Christian Marangi
2026-07-27 20:18 ` Brian Masney
2026-07-27 20:21 ` Christian Marangi
2026-07-24 18:43 ` [PATCH 2/2] clk: en7523: Add support for selecting the Serdes port in SCU Christian Marangi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox