linux-loongson/Documentation/devicetree/bindings/net/realtek,rtl9301-switch.yaml
Chris Packham 96757457da dt-bindings: net: Add Realtek MDIO controller
Add dtschema for the MDIO controller found in the RTL9300 Ethernet
switch. The controller is slightly unusual in that direct MDIO
communication is not possible. We model the MDIO controller with the
MDIO buses as child nodes and the PHYs as children of the buses. The
mapping of switch port number to MDIO bus/addr requires the
ethernet-ports sibling to provide the mapping via the phy-handle
property.

Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20250218195216.1034220-4-chris.packham@alliedtelesis.co.nz
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-02-21 15:07:15 -08:00

176 lines
3.6 KiB
YAML

# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/realtek,rtl9301-switch.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Realtek Switch with Internal CPU
maintainers:
- Chris Packham <chris.packham@alliedtelesis.co.nz>
description:
The RTL9300 is a series of is an Ethernet switches with an integrated CPU. A
number of different peripherals are accessed through a common register block,
represented here as a syscon node.
$ref: ethernet-switch.yaml#/$defs/ethernet-ports
properties:
compatible:
items:
- enum:
- realtek,rtl9301-switch
- realtek,rtl9302b-switch
- realtek,rtl9302c-switch
- realtek,rtl9303-switch
- const: syscon
- const: simple-mfd
reg:
maxItems: 1
interrupts:
maxItems: 2
interrupt-names:
items:
- const: switch
- const: nic
'#address-cells':
const: 1
'#size-cells':
const: 1
ethernet-ports:
type: object
patternProperties:
'reboot@[0-9a-f]+$':
$ref: /schemas/power/reset/syscon-reboot.yaml#
'i2c@[0-9a-f]+$':
$ref: /schemas/i2c/realtek,rtl9301-i2c.yaml#
'mdio-controller@[0-9a-f]+$':
$ref: realtek,rtl9301-mdio.yaml#
required:
- compatible
- reg
- interrupts
- interrupt-names
additionalProperties: false
examples:
- |
ethernet-switch@1b000000 {
compatible = "realtek,rtl9301-switch", "syscon", "simple-mfd";
reg = <0x1b000000 0x10000>;
interrupt-parent = <&intc>;
interrupts = <23>, <24>;
interrupt-names = "switch", "nic";
#address-cells = <1>;
#size-cells = <1>;
reboot@c {
compatible = "syscon-reboot";
reg = <0x0c 0x4>;
value = <0x01>;
};
i2c@36c {
compatible = "realtek,rtl9301-i2c";
reg = <0x36c 0x14>;
#address-cells = <1>;
#size-cells = <0>;
i2c@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
gpio@20 {
compatible = "nxp,pca9555";
gpio-controller;
#gpio-cells = <2>;
reg = <0x20>;
};
};
i2c@2 {
reg = <2>;
#address-cells = <1>;
#size-cells = <0>;
gpio@20 {
compatible = "nxp,pca9555";
gpio-controller;
#gpio-cells = <2>;
reg = <0x20>;
};
};
};
i2c@388 {
compatible = "realtek,rtl9301-i2c";
reg = <0x388 0x14>;
#address-cells = <1>;
#size-cells = <0>;
i2c@7 {
reg = <7>;
#address-cells = <1>;
#size-cells = <0>;
gpio@20 {
compatible = "nxp,pca9555";
gpio-controller;
#gpio-cells = <2>;
reg = <0x20>;
};
};
};
mdio-controller@ca00 {
compatible = "realtek,rtl9301-mdio";
reg = <0xca00 0x200>;
#address-cells = <1>;
#size-cells = <0>;
mdio-bus@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
phy1: ethernet-phy@0 {
reg = <0>;
};
};
mdio-bus@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
phy2: ethernet-phy@0 {
reg = <0>;
};
};
};
ethernet-ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
phy-handle = <&phy1>;
};
port@1 {
reg = <1>;
phy-handle = <&phy2>;
};
};
};