* [PATCH 1/5] dt-bindings: net: maxlinear: add MxL86211C MDIO I/O regulator
@ 2026-09-30 12:22 Robert Marko
2026-09-30 12:22 ` [PATCH 2/5] net: phy: mxl-gpy: " Robert Marko
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Robert Marko @ 2026-09-30 12:22 UTC (permalink / raw)
To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, hkallweit1, lxu, michael, netdev, devicetree,
linux-kernel
Cc: luka.perkov, Robert Marko
Document the MDIO I/O voltage regulator exposed by the MxL86211C PHY.
The regulator configures the MDIO, MDC, and MDINT pad voltage
between 1.8 V and 3.3 V.
Restrict the regulator subnode to the MxL86211C PHY ID and document
the board requirement for VDDP to use the selected voltage.
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
.../bindings/net/maxlinear,gpy2xx.yaml | 40 +++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml b/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
index 8a3713abd1ca9..0645e885f1747 100644
--- a/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
+++ b/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
@@ -12,6 +12,29 @@ maintainers:
allOf:
- $ref: ethernet-phy.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: ethernet-phy-idc133.5400
+ required:
+ - compatible
+
+ then:
+ properties:
+ mdio-regulator:
+ type: object
+ description: |
+ Initial data for the MxL86211C MDIO I/O voltage regulator. Set
+ this to 1.8 V or 3.3 V to configure the MDIO, MDC, and MDINT
+ pad voltage. The board must supply the VDDP pin at the selected
+ voltage.
+ $ref: /schemas/regulator/regulator.yaml#
+ unevaluatedProperties: false
+
+ else:
+ properties:
+ mdio-regulator: false
properties:
maxlinear,use-broken-interrupts:
@@ -45,4 +68,21 @@ examples:
};
};
+ - |
+ ethernet {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ethernet-phy@0 {
+ compatible = "ethernet-phy-idc133.5400",
+ "ethernet-phy-ieee802.3-c45";
+ reg = <0>;
+
+ mdio: mdio-regulator {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+ };
+ };
+
...
--
2.55.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/5] net: phy: mxl-gpy: add MxL86211C MDIO I/O regulator
2026-09-30 12:22 [PATCH 1/5] dt-bindings: net: maxlinear: add MxL86211C MDIO I/O regulator Robert Marko
@ 2026-09-30 12:22 ` Robert Marko
2026-09-30 12:22 ` [PATCH 3/5] net: phy: mxl-gpy: release MxL86211C Super Isolate Robert Marko
` (2 subsequent siblings)
3 siblings, 0 replies; 10+ messages in thread
From: Robert Marko @ 2026-09-30 12:22 UTC (permalink / raw)
To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, hkallweit1, lxu, michael, netdev, devicetree,
linux-kernel
Cc: luka.perkov, Robert Marko
The MxL86211C can configure its MDIO, MDC, and MDINT pads for
1.8 V or 3.3 V signaling through VSPEC1_PM_CTRL.MDIO_VOL.
MxL86211C is a bit weird in the sense that it power the MDIO pins via
the VDPP pad, so you must provide it with 1.8V or 3.3V there.
However, it does not automatically configure the VSPEC1_PM_CTRL.MDIO_VOL
bit and defaults to 3.3V, so if you are using 1.8V in order to have
reliable MDIO communication you must set that bit.
So, model the MDIO I/O voltage setting as a regulator.
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
drivers/net/phy/Kconfig | 1 +
drivers/net/phy/mxl-gpy.c | 74 ++++++++++++++++++++++++++++++++++++++-
2 files changed, 74 insertions(+), 1 deletion(-)
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index d3835597e3795..bdaee0cb4829d 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -302,6 +302,7 @@ config MAXLINEAR_GPHY
tristate "Maxlinear Ethernet PHYs"
select POLYNOMIAL if HWMON
depends on HWMON || HWMON=n
+ depends on REGULATOR
help
Support for the Maxlinear GPY115, GPY211, GPY212, GPY215,
GPY241, GPY245 PHYs.
diff --git a/drivers/net/phy/mxl-gpy.c b/drivers/net/phy/mxl-gpy.c
index 089a1a9e5bc61..4cbbfae046317 100644
--- a/drivers/net/phy/mxl-gpy.c
+++ b/drivers/net/phy/mxl-gpy.c
@@ -14,6 +14,8 @@
#include <linux/polynomial.h>
#include <linux/property.h>
#include <linux/netdevice.h>
+#include <linux/regulator/driver.h>
+#include <linux/of.h>
/* PHY ID */
#define PHY_ID_GPYx15B_MASK 0xFFFFFFFC
@@ -110,6 +112,10 @@
#define VSPEC1_SGMII_ANEN_ANRS (VSPEC1_SGMII_CTRL_ANEN | \
VSPEC1_SGMII_CTRL_ANRS)
+/* Packet Manager Control */
+#define VSPEC1_PM_CTRL 0x0c
+#define VSPEC1_PM_CTRL_MDIO_VOL BIT(14)
+
/* Temperature sensor */
#define VSPEC1_TEMP_STA 0x0E
#define VSPEC1_TEMP_STA_DATA GENMASK(9, 0)
@@ -390,6 +396,72 @@ static int gpy_probe(struct phy_device *phydev)
return 0;
}
+static int mxl86211c_mdio_reg_set_voltage_sel(struct regulator_dev *rdev,
+ unsigned int selector)
+{
+ struct phy_device *phydev = rdev_get_drvdata(rdev);
+
+ return phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_PM_CTRL,
+ VSPEC1_PM_CTRL_MDIO_VOL,
+ selector ? 0 : VSPEC1_PM_CTRL_MDIO_VOL);
+}
+
+static int mxl86211c_mdio_reg_get_voltage_sel(struct regulator_dev *rdev)
+{
+ struct phy_device *phydev = rdev_get_drvdata(rdev);
+ int val;
+
+ val = phy_read_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_PM_CTRL);
+ if (val < 0)
+ return val;
+
+ return (val & VSPEC1_PM_CTRL_MDIO_VOL) ? 0 : 1;
+}
+
+static const struct regulator_ops mxl86211c_mdio_regulator_ops = {
+ .list_voltage = regulator_list_voltage_table,
+ .set_voltage_sel = mxl86211c_mdio_reg_set_voltage_sel,
+ .get_voltage_sel = mxl86211c_mdio_reg_get_voltage_sel,
+};
+
+static const unsigned int mxl86211c_mdio_voltage_table[] = {
+ 1800000,
+ 3300000,
+};
+
+static const struct regulator_desc mxl86211c_mdio_desc = {
+ .name = "mdio",
+ .of_match = of_match_ptr("mdio-regulator"),
+ .n_voltages = ARRAY_SIZE(mxl86211c_mdio_voltage_table),
+ .volt_table = mxl86211c_mdio_voltage_table,
+ .ops = &mxl86211c_mdio_regulator_ops,
+ .type = REGULATOR_VOLTAGE,
+ .owner = THIS_MODULE,
+};
+
+static int mxl86211c_probe(struct phy_device *phydev)
+{
+ struct device *dev = &phydev->mdio.dev;
+ struct regulator_config config = { };
+ struct regulator_dev *rdev;
+ int ret;
+
+ ret = gpy_probe(phydev);
+ if (ret)
+ return ret;
+
+ config.dev = dev;
+ config.driver_data = phydev;
+
+ rdev = devm_regulator_register(dev, &mxl86211c_mdio_desc, &config);
+ if (IS_ERR(rdev)) {
+ phydev_err(phydev, "failed to register MDIO regulator\n");
+ return PTR_ERR(rdev);
+ }
+
+ return 0;
+}
+
static bool gpy_sgmii_need_reaneg(struct phy_device *phydev)
{
struct gpy_priv *priv = phydev->priv;
@@ -1406,7 +1478,7 @@ static struct phy_driver gpy_drivers[] = {
.name = "Maxlinear Ethernet MxL86211C",
.get_features = genphy_c45_pma_read_abilities,
.config_init = gpy21x_config_init,
- .probe = gpy_probe,
+ .probe = mxl86211c_probe,
.inband_caps = gpy_inband_caps,
.config_inband = gpy_config_inband,
.suspend = genphy_suspend,
--
2.55.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/5] net: phy: mxl-gpy: release MxL86211C Super Isolate
2026-09-30 12:22 [PATCH 1/5] dt-bindings: net: maxlinear: add MxL86211C MDIO I/O regulator Robert Marko
2026-09-30 12:22 ` [PATCH 2/5] net: phy: mxl-gpy: " Robert Marko
@ 2026-09-30 12:22 ` Robert Marko
2026-09-30 12:22 ` [PATCH 4/5] dt-bindings: net: maxlinear: add MxL86211C lane mapping support Robert Marko
2026-09-30 12:22 ` [PATCH 5/5] net: phy: mxl-gpy: support MxL86211C lane mapping Robert Marko
3 siblings, 0 replies; 10+ messages in thread
From: Robert Marko @ 2026-09-30 12:22 UTC (permalink / raw)
To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, hkallweit1, lxu, michael, netdev, devicetree,
linux-kernel
Cc: luka.perkov, Robert Marko
The MxL86211C can be strapped into Super Isolate mode, leaving
the PHY halted after reset until software releases it.
Clear VSPEC1_PM_CTRL.SI after registering the MDIO voltage regulator
and before the generic GPY initialization accesses the PHY.
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
drivers/net/phy/mxl-gpy.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/net/phy/mxl-gpy.c b/drivers/net/phy/mxl-gpy.c
index 4cbbfae046317..790075632fc3f 100644
--- a/drivers/net/phy/mxl-gpy.c
+++ b/drivers/net/phy/mxl-gpy.c
@@ -115,6 +115,7 @@
/* Packet Manager Control */
#define VSPEC1_PM_CTRL 0x0c
#define VSPEC1_PM_CTRL_MDIO_VOL BIT(14)
+#define VSPEC1_PM_CTRL_SI BIT(12) /* Super Isolate */
/* Temperature sensor */
#define VSPEC1_TEMP_STA 0x0E
@@ -446,10 +447,6 @@ static int mxl86211c_probe(struct phy_device *phydev)
struct regulator_dev *rdev;
int ret;
- ret = gpy_probe(phydev);
- if (ret)
- return ret;
-
config.dev = dev;
config.driver_data = phydev;
@@ -459,7 +456,15 @@ static int mxl86211c_probe(struct phy_device *phydev)
return PTR_ERR(rdev);
}
- return 0;
+ ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_PM_CTRL,
+ VSPEC1_PM_CTRL_SI,
+ 0);
+ if (ret)
+ return ret;
+
+ ret = gpy_probe(phydev);
+
+ return ret;
}
static bool gpy_sgmii_need_reaneg(struct phy_device *phydev)
--
2.55.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4/5] dt-bindings: net: maxlinear: add MxL86211C lane mapping support
2026-09-30 12:22 [PATCH 1/5] dt-bindings: net: maxlinear: add MxL86211C MDIO I/O regulator Robert Marko
2026-09-30 12:22 ` [PATCH 2/5] net: phy: mxl-gpy: " Robert Marko
2026-09-30 12:22 ` [PATCH 3/5] net: phy: mxl-gpy: release MxL86211C Super Isolate Robert Marko
@ 2026-09-30 12:22 ` Robert Marko
2026-10-01 5:55 ` Krzysztof Kozlowski
2026-09-30 12:22 ` [PATCH 5/5] net: phy: mxl-gpy: support MxL86211C lane mapping Robert Marko
3 siblings, 1 reply; 10+ messages in thread
From: Robert Marko @ 2026-09-30 12:22 UTC (permalink / raw)
To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, hkallweit1, lxu, michael, netdev, devicetree,
linux-kernel
Cc: luka.perkov, Robert Marko
Describe the optional lane-to-ASP mapping for the MxL86211C PHY.
The mapping accounts for board-level swaps between its physical TPI
lanes and analog signal processing lanes.
MxL86211C supports per lane mapping.
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
.../bindings/net/maxlinear,gpy2xx.yaml | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml b/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
index 0645e885f1747..b98cb3c3e6d49 100644
--- a/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
+++ b/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
@@ -22,6 +22,21 @@ allOf:
then:
properties:
+ maxlinear,lane-asp-map:
+ description: |
+ Mapping of the physical TPI lanes A through D to the PHY's
+ analog signal processing lanes (ASPs). The array index identifies
+ physical lane A, B, C, or D, while its value identifies ASP A, B,
+ C, or D, encoded as 0 through 3. Each ASP must be mapped exactly
+ once. Omit the property to retain the hardware reset mapping.
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 4
+ maxItems: 4
+ uniqueItems: true
+ items:
+ minimum: 0
+ maximum: 3
+
mdio-regulator:
type: object
description: |
@@ -34,6 +49,7 @@ allOf:
else:
properties:
+ maxlinear,lane-asp-map: false
mdio-regulator: false
properties:
@@ -78,6 +94,9 @@ examples:
"ethernet-phy-ieee802.3-c45";
reg = <0>;
+ /* Swap physical TPI lanes C and D. */
+ maxlinear,lane-asp-map = <0 1 3 2>;
+
mdio: mdio-regulator {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
--
2.55.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 5/5] net: phy: mxl-gpy: support MxL86211C lane mapping
2026-09-30 12:22 [PATCH 1/5] dt-bindings: net: maxlinear: add MxL86211C MDIO I/O regulator Robert Marko
` (2 preceding siblings ...)
2026-09-30 12:22 ` [PATCH 4/5] dt-bindings: net: maxlinear: add MxL86211C lane mapping support Robert Marko
@ 2026-09-30 12:22 ` Robert Marko
2026-09-30 15:35 ` Andrew Lunn
3 siblings, 1 reply; 10+ messages in thread
From: Robert Marko @ 2026-09-30 12:22 UTC (permalink / raw)
To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, hkallweit1, lxu, michael, netdev, devicetree,
linux-kernel
Cc: luka.perkov, Robert Marko
Configure the MxL86211C physical TPI lane to ASP mapping when it is
described in DTS.
MxL86211C supports per lane configuration.
Leave the hardware reset configuration untouched when the optional
property is absent.
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
drivers/net/phy/mxl-gpy.c | 53 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 52 insertions(+), 1 deletion(-)
diff --git a/drivers/net/phy/mxl-gpy.c b/drivers/net/phy/mxl-gpy.c
index 790075632fc3f..f716da0ffe890 100644
--- a/drivers/net/phy/mxl-gpy.c
+++ b/drivers/net/phy/mxl-gpy.c
@@ -117,6 +117,13 @@
#define VSPEC1_PM_CTRL_MDIO_VOL BIT(14)
#define VSPEC1_PM_CTRL_SI BIT(12) /* Super Isolate */
+/* TPI lane to ASP map */
+#define VSPEC1_LANE_ASP_MAP 0x14
+#define VSPEC1_LANE_ASP_MAP_A GENMASK(1, 0)
+#define VSPEC1_LANE_ASP_MAP_B GENMASK(3, 2)
+#define VSPEC1_LANE_ASP_MAP_C GENMASK(5, 4)
+#define VSPEC1_LANE_ASP_MAP_D GENMASK(7, 6)
+
/* Temperature sensor */
#define VSPEC1_TEMP_STA 0x0E
#define VSPEC1_TEMP_STA_DATA GENMASK(9, 0)
@@ -440,6 +447,50 @@ static const struct regulator_desc mxl86211c_mdio_desc = {
.owner = THIS_MODULE,
};
+static int mxl86211c_configure_lane_asp_map(struct phy_device *phydev)
+{
+ struct device *dev = &phydev->mdio.dev;
+ u32 lane_asp_map[4];
+ u16 val;
+ unsigned int seen = 0;
+ int i, ret;
+
+ if (!device_property_present(dev, "maxlinear,lane-asp-map"))
+ return 0;
+
+ ret = device_property_read_u32_array(dev, "maxlinear,lane-asp-map",
+ lane_asp_map,
+ ARRAY_SIZE(lane_asp_map));
+ if (ret)
+ return ret;
+
+ for (i = 0; i < ARRAY_SIZE(lane_asp_map); i++) {
+ if (lane_asp_map[i] > 3 || seen & BIT(lane_asp_map[i]))
+ return -EINVAL;
+
+ seen |= BIT(lane_asp_map[i]);
+ }
+
+ val = FIELD_PREP(VSPEC1_LANE_ASP_MAP_A, lane_asp_map[0]) |
+ FIELD_PREP(VSPEC1_LANE_ASP_MAP_B, lane_asp_map[1]) |
+ FIELD_PREP(VSPEC1_LANE_ASP_MAP_C, lane_asp_map[2]) |
+ FIELD_PREP(VSPEC1_LANE_ASP_MAP_D, lane_asp_map[3]);
+
+ return phy_write_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_LANE_ASP_MAP,
+ val);
+}
+
+static int mxl86211c_config_init(struct phy_device *phydev)
+{
+ int ret;
+
+ ret = mxl86211c_configure_lane_asp_map(phydev);
+ if (ret)
+ return ret;
+
+ return gpy21x_config_init(phydev);
+}
+
static int mxl86211c_probe(struct phy_device *phydev)
{
struct device *dev = &phydev->mdio.dev;
@@ -1482,7 +1533,7 @@ static struct phy_driver gpy_drivers[] = {
PHY_ID_MATCH_MODEL(PHY_ID_MXL86211C),
.name = "Maxlinear Ethernet MxL86211C",
.get_features = genphy_c45_pma_read_abilities,
- .config_init = gpy21x_config_init,
+ .config_init = mxl86211c_config_init,
.probe = mxl86211c_probe,
.inband_caps = gpy_inband_caps,
.config_inband = gpy_config_inband,
--
2.55.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 5/5] net: phy: mxl-gpy: support MxL86211C lane mapping
2026-09-30 12:22 ` [PATCH 5/5] net: phy: mxl-gpy: support MxL86211C lane mapping Robert Marko
@ 2026-09-30 15:35 ` Andrew Lunn
2026-09-30 16:58 ` Robert Marko
0 siblings, 1 reply; 10+ messages in thread
From: Andrew Lunn @ 2026-09-30 15:35 UTC (permalink / raw)
To: Robert Marko
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, hkallweit1, lxu, michael, netdev, devicetree,
linux-kernel, luka.perkov
On Wed, Sep 30, 2026 at 02:22:17PM +0200, Robert Marko wrote:
> Configure the MxL86211C physical TPI lane to ASP mapping when it is
> described in DTS.
>
> MxL86211C supports per lane configuration.
I assume you have a board which needs these features? Is the .dts file
ready for posting?
Andrew
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 5/5] net: phy: mxl-gpy: support MxL86211C lane mapping
2026-09-30 15:35 ` Andrew Lunn
@ 2026-09-30 16:58 ` Robert Marko
0 siblings, 0 replies; 10+ messages in thread
From: Robert Marko @ 2026-09-30 16:58 UTC (permalink / raw)
To: Andrew Lunn
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, hkallweit1, lxu, michael, netdev, devicetree,
linux-kernel, luka.perkov
On Wed, Sep 30, 2026 at 5:35 PM Andrew Lunn <andrew@lunn.ch> wrote:
>
> On Wed, Sep 30, 2026 at 02:22:17PM +0200, Robert Marko wrote:
> > Configure the MxL86211C physical TPI lane to ASP mapping when it is
> > described in DTS.
> >
> > MxL86211C supports per lane configuration.
>
> I assume you have a board which needs these features? Is the .dts file
> ready for posting?
Hi Andrew,
Yes, I have a board that requires it, as pairs are reversed intentionally.
DTS is not yet ready, as there will be another revision of the board
before it is commercially available.
But I wanted to get the ball rolling on the missing stuff in the MXL PHY driver.
Regards,
Robert
>
> Andrew
--
Robert Marko
Staff Embedded Linux Engineer
Sartura d.d.
Lendavska ulica 16a
10000 Zagreb, Croatia
Email: robert.marko@sartura.hr
Web: www.sartura.hr
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/5] dt-bindings: net: maxlinear: add MxL86211C lane mapping support
2026-09-30 12:22 ` [PATCH 4/5] dt-bindings: net: maxlinear: add MxL86211C lane mapping support Robert Marko
@ 2026-10-01 5:55 ` Krzysztof Kozlowski
2026-10-01 12:14 ` Robert Marko
0 siblings, 1 reply; 10+ messages in thread
From: Krzysztof Kozlowski @ 2026-10-01 5:55 UTC (permalink / raw)
To: Robert Marko
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, hkallweit1, lxu, michael, netdev, devicetree,
linux-kernel, luka.perkov
On Wed, Sep 30, 2026 at 02:22:16PM +0200, Robert Marko wrote:
> Describe the optional lane-to-ASP mapping for the MxL86211C PHY.
>
> The mapping accounts for board-level swaps between its physical TPI
> lanes and analog signal processing lanes.
>
> MxL86211C supports per lane mapping.
>
> Signed-off-by: Robert Marko <robert.marko@sartura.hr>
> ---
> .../bindings/net/maxlinear,gpy2xx.yaml | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml b/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
> index 0645e885f1747..b98cb3c3e6d49 100644
> --- a/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
> +++ b/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
> @@ -22,6 +22,21 @@ allOf:
>
> then:
> properties:
> + maxlinear,lane-asp-map:
> + description: |
> + Mapping of the physical TPI lanes A through D to the PHY's
> + analog signal processing lanes (ASPs). The array index identifies
Are there other lanes as well? Not ASP? What sort? data-lanes does not
fit here?
> + physical lane A, B, C, or D, while its value identifies ASP A, B,
> + C, or D, encoded as 0 through 3. Each ASP must be mapped exactly
> + once. Omit the property to retain the hardware reset mapping.
> + $ref: /schemas/types.yaml#/definitions/uint32-array
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/5] dt-bindings: net: maxlinear: add MxL86211C lane mapping support
2026-10-01 5:55 ` Krzysztof Kozlowski
@ 2026-10-01 12:14 ` Robert Marko
2026-10-01 12:33 ` Andrew Lunn
0 siblings, 1 reply; 10+ messages in thread
From: Robert Marko @ 2026-10-01 12:14 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, hkallweit1, lxu, michael, netdev, devicetree,
linux-kernel, luka.perkov
On Thu, Oct 1, 2026 at 7:55 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On Wed, Sep 30, 2026 at 02:22:16PM +0200, Robert Marko wrote:
> > Describe the optional lane-to-ASP mapping for the MxL86211C PHY.
> >
> > The mapping accounts for board-level swaps between its physical TPI
> > lanes and analog signal processing lanes.
> >
> > MxL86211C supports per lane mapping.
> >
> > Signed-off-by: Robert Marko <robert.marko@sartura.hr>
> > ---
> > .../bindings/net/maxlinear,gpy2xx.yaml | 19 +++++++++++++++++++
> > 1 file changed, 19 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml b/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
> > index 0645e885f1747..b98cb3c3e6d49 100644
> > --- a/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
> > +++ b/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
> > @@ -22,6 +22,21 @@ allOf:
> >
> > then:
> > properties:
> > + maxlinear,lane-asp-map:
> > + description: |
> > + Mapping of the physical TPI lanes A through D to the PHY's
> > + analog signal processing lanes (ASPs). The array index identifies
>
> Are there other lanes as well? Not ASP? What sort? data-lanes does not
> fit here?
Hi,
I tried to keep it similar to the datasheet, but looking back, a more
appropriate
name would be ASP instances instead of lanes.
I am not sure if data-lanes describe what it is fully but I am open to ideas.
Regards,
Robert
>
> > + physical lane A, B, C, or D, while its value identifies ASP A, B,
> > + C, or D, encoded as 0 through 3. Each ASP must be mapped exactly
> > + once. Omit the property to retain the hardware reset mapping.
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
>
> Best regards,
> Krzysztof
>
--
Robert Marko
Staff Embedded Linux Engineer
Sartura d.d.
Lendavska ulica 16a
10000 Zagreb, Croatia
Email: robert.marko@sartura.hr
Web: www.sartura.hr
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/5] dt-bindings: net: maxlinear: add MxL86211C lane mapping support
2026-10-01 12:14 ` Robert Marko
@ 2026-10-01 12:33 ` Andrew Lunn
0 siblings, 0 replies; 10+ messages in thread
From: Andrew Lunn @ 2026-10-01 12:33 UTC (permalink / raw)
To: Robert Marko
Cc: Krzysztof Kozlowski, andrew+netdev, davem, edumazet, kuba,
pabeni, robh, krzk+dt, conor+dt, hkallweit1, lxu, michael,
netdev, devicetree, linux-kernel, luka.perkov
> > > +++ b/Documentation/devicetree/bindings/net/maxlinear,gpy2xx.yaml
> > > @@ -22,6 +22,21 @@ allOf:
> > >
> > > then:
> > > properties:
> > > + maxlinear,lane-asp-map:
> > > + description: |
> > > + Mapping of the physical TPI lanes A through D to the PHY's
> > > + analog signal processing lanes (ASPs). The array index identifies
> >
> > Are there other lanes as well? Not ASP? What sort? data-lanes does not
> > fit here?
>
> Hi,
> I tried to keep it similar to the datasheet, but looking back, a more
> appropriate
> name would be ASP instances instead of lanes.
>
> I am not sure if data-lanes describe what it is fully but I am open to ideas.
Analogue front end ports? Or even just analogue from ends?
I do get what you mean with your current description, but i have more
domain knowledge than your average DT writer.
Andrew
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-10-01 12:33 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-30 12:22 [PATCH 1/5] dt-bindings: net: maxlinear: add MxL86211C MDIO I/O regulator Robert Marko
2026-09-30 12:22 ` [PATCH 2/5] net: phy: mxl-gpy: " Robert Marko
2026-09-30 12:22 ` [PATCH 3/5] net: phy: mxl-gpy: release MxL86211C Super Isolate Robert Marko
2026-09-30 12:22 ` [PATCH 4/5] dt-bindings: net: maxlinear: add MxL86211C lane mapping support Robert Marko
2026-10-01 5:55 ` Krzysztof Kozlowski
2026-10-01 12:14 ` Robert Marko
2026-10-01 12:33 ` Andrew Lunn
2026-09-30 12:22 ` [PATCH 5/5] net: phy: mxl-gpy: support MxL86211C lane mapping Robert Marko
2026-09-30 15:35 ` Andrew Lunn
2026-09-30 16:58 ` Robert Marko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®