[PATCH v2] dt-bindings: net: dsa: microchip: add bit-banged SMI example

From: Corentin Guillevic
Date: Mon Jun 02 2025 - 13:05:30 EST


KSZ8863 can be configured using I2C, SPI or Microchip SMI. The latter is
similar to MDIO, but uses a different protocol. If the hardware doesn't
support this, SMI bit banging can help. This commit adds an device tree
example that uses the CONFIG_MDIO_GPIO driver for SMI bit banging.

Signed-off-by: Corentin Guillevic <corentin.guillevic@xxxxxxxx>
---
Changes in v2:
- Fix dt_binding_check errors

.../bindings/net/dsa/microchip,ksz.yaml | 59 ++++++++++++++++++-
1 file changed, 58 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml
index 62ca63e8a26f..33a067809ebe 100644
--- a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml
+++ b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml
@@ -241,4 +241,61 @@ examples:
};
};
};
-...
+
+ # KSZ8863 with bit-banged SMI
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ // Ethernet switch connected via SMI to the host, CPU port wired to eth0:
+ ethernet0 {
+ phy-mode = "rmii";
+
+ fixed-link {
+ speed = <100>;
+ full-duplex;
+ pause;
+ };
+ };
+
+ mdio: mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "microchip,mdio-smi0";
+ gpios = <&gpioc 1 GPIO_ACTIVE_HIGH>,
+ <&gpioa 2 GPIO_ACTIVE_HIGH>;
+ status = "okay";
+
+ switch@0 {
+ compatible = "microchip,ksz8863";
+ reg = <0>;
+ reset-gpios = <&gpioa 4 GPIO_ACTIVE_LOW>;
+ status = "okay";
+
+ ethernet-ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ lan1: port@0 {
+ reg = <0>;
+ label = "lan1";
+ phy-mode = "internal";
+ };
+ lan2: port@1 {
+ reg = <1>;
+ label = "lan2";
+ phy-mode = "internal";
+ };
+ port@2 {
+ reg = <2>;
+ label = "cpu";
+ ethernet = <&ethernet0>;
+ phy-mode = "rmii";
+ microchip,rmii-clk-internal;
+
+ fixed-link {
+ speed = <100>;
+ full-duplex;
+ };
+ };
+ };
+ };
+ };
--
2.49.0