The MXL8611X driver has custom bindings for configuring the LEDs
and RGMII internal delays. This patch adds the documentation and
defines necessary to configure it from the device tree.

Signed-off-by: Nate Drude <nat...@variscite.com>
---
 .../net/phy/mxl-8611x.txt                     | 37 +++++++++++++++++++
 include/dt-bindings/net/mxl-8611x.h           | 27 ++++++++++++++
 2 files changed, 64 insertions(+)
 create mode 100644 doc/device-tree-bindings/net/phy/mxl-8611x.txt
 create mode 100644 include/dt-bindings/net/mxl-8611x.h

diff --git a/doc/device-tree-bindings/net/phy/mxl-8611x.txt b/doc/device-tree-bindings/net/phy/mxl-8611x.txt
new file mode 100644
index 00000000000..462fdf61666
--- /dev/null
+++ b/doc/device-tree-bindings/net/phy/mxl-8611x.txt
@@ -0,0 +1,37 @@
+* MaxLinear MXL8611x PHY Device Tree binding
+
+Required properties:
+- reg: PHY address
+
+Optional properties:
+- mxl-8611x,ledN_cfg: Register configuration for COM_EXT_LED0_CFG,
+       COM_EXT_LED1_CFG, and COM_EXT_LED2_CFG
+- mxl-8611x,rx-internal-delay-ps: RGMII RX Clock Delay used only when PHY operates
+       in RGMII mode with internal delay (phy-mode is 'rgmii-id' or
+       'rgmii-rxid') in pico-seconds.
+- mxl-8611x,tx-internal-delay-ps-100m: RGMII TX Clock Delay used only when PHY operates
+       in 10/100M RGMII mode with internal delay (phy-mode is 'rgmii-id' or
+       'rgmii-txid') in pico-seconds.
+- mxl-8611x,tx-internal-delay-ps-1g: RGMII TX Clock Delay used only when PHY operates
+       in 1G RGMII mode with internal delay (phy-mode is 'rgmii-id' or
+       'rgmii-txid') in pico-seconds.
+
+Example:
+
+       ethernet-phy@0 {
+               reg = <0>;
+
+               mxl-8611x,led0_cfg = <(
+                       MXL8611X_LEDX_CFG_LINK_UP_RX_ACT_ON |
+                       MXL8611X_LEDX_CFG_LINK_UP_TX_ACT_ON |
+                       MXL8611X_LEDX_CFG_TRAFFIC_ACT_BLINK_IND
+               )>;
+               mxl-8611x,led1_cfg = <(
+                       MXL8611X_LEDX_CFG_LINK_UP_10MB_ON |
+                       MXL8611X_LEDX_CFG_LINK_UP_100MB_ON |
+                       MXL8611X_LEDX_CFG_LINK_UP_1GB_ON
+               )>;
+               mxl-8611x,rx-internal-delay-ps = <0>;
+               mxl-8611x,tx-internal-delay-ps-100m = <2250>;
+               mxl-8611x,tx-internal-delay-ps-1g = <150>;
+       };
diff --git a/include/dt-bindings/net/mxl-8611x.h b/include/dt-bindings/net/mxl-8611x.h
new file mode 100644
index 00000000000..cb0ec0f8bd0
--- /dev/null
+++ b/include/dt-bindings/net/mxl-8611x.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+/*
+ * Device Tree constants for MaxLinear MXL8611x PHYs
+ *
+ * Copyright 2023 Variscite Ltd.
+ * Copyright 2023 MaxLinear Inc.
+ */
+
+#ifndef _DT_BINDINGS_MXL_8611X_H
+#define _DT_BINDINGS_MXL_8611X_H
+
+#define MXL8611X_LEDX_CFG_TRAFFIC_ACT_BLINK_IND                (1 << 13)
+#define MXL8611X_LEDX_CFG_LINK_UP_FULL_DUPLEX_ON       (1 << 12)
+#define MXL8611X_LEDX_CFG_LINK_UP_HALF_DUPLEX_ON       (1 << 11)
+#define MXL8611X_LEDX_CFG_LINK_UP_TX_ACT_ON            (1 << 10)
+#define MXL8611X_LEDX_CFG_LINK_UP_RX_ACT_ON            (1 << 9)
+#define MXL8611X_LEDX_CFG_LINK_UP_TX_ON                        (1 << 8)
+#define MXL8611X_LEDX_CFG_LINK_UP_RX_ON                        (1 << 7)
+#define MXL8611X_LEDX_CFG_LINK_UP_1GB_ON               (1 << 6)
+#define MXL8611X_LEDX_CFG_LINK_UP_100MB_ON             (1 << 5)
+#define MXL8611X_LEDX_CFG_LINK_UP_10MB_ON              (1 << 4)
+#define MXL8611X_LEDX_CFG_LINK_UP_COLLISION            (1 << 3)
+#define MXL8611X_LEDX_CFG_LINK_UP_1GB_BLINK            (1 << 2)
+#define MXL8611X_LEDX_CFG_LINK_UP_100MB_BLINK          (1 << 1)
+#define MXL8611X_LEDX_CFG_LINK_UP_10MB_BLINK           (1 << 0)
+
+#endif
--
2.40.1

Reply via email to