Files
linux/Documentation/devicetree/bindings/net/microchip,pic64hpsc-mdio.yaml
Charles Perry 268bb35d1a dt-bindings: net: document Microchip PIC64-HPSC/HX MDIO controller
This MDIO hardware is based on a Microsemi design supported in Linux by
mdio-mscc-miim.c. However, The register interface is completely different
with pic64hpsc, hence the need for separate documentation.

The hardware supports C22 and C45.

The documentation recommends an input clock of 156.25MHz and a prescaler
of 39, which yields an MDIO clock of 1.95MHz.

The hardware supports an interrupt pin to signal transaction completion
which is not strictly needed as the software can also poll a "TRIGGER"
bit for this.

Signed-off-by: Charles Perry <charles.perry@microchip.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://patch.msgid.link/20260408131821.1145334-2-charles.perry@microchip.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-04-12 14:19:19 -07:00

69 lines
1.4 KiB
YAML

# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/microchip,pic64hpsc-mdio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Microchip PIC64-HPSC/HX MDIO controller
maintainers:
- Charles Perry <charles.perry@microchip.com>
description:
This is the MDIO bus controller present in Microchip PIC64-HPSC/HX SoCs. It
supports C22 and C45 register access and is named "MDIO Initiator" in the
documentation.
allOf:
- $ref: mdio.yaml#
properties:
compatible:
oneOf:
- const: microchip,pic64hpsc-mdio
- items:
- const: microchip,pic64hx-mdio
- const: microchip,pic64hpsc-mdio
reg:
maxItems: 1
clocks:
maxItems: 1
clock-frequency:
default: 2500000
interrupts:
maxItems: 1
required:
- compatible
- reg
- clocks
- interrupts
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
mdio@4000c21e000 {
compatible = "microchip,pic64hpsc-mdio";
reg = <0x400 0x0c21e000 0x0 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&svc_clk>;
interrupt-parent = <&saplic0>;
interrupts = <168 IRQ_TYPE_LEVEL_HIGH>;
ethernet-phy@0 {
reg = <0>;
};
};
};