mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 11:56:58 +00:00
Extend the Lantiq GSWIP device tree binding to also cover MaxLinear GSW1xx switches which are based on the same hardware IP but connected via MDIO instead of being memory-mapped. Add compatible strings for MaxLinear GSW120, GSW125, GSW140, GSW141, and GSW145 switches and adjust the schema to handle the different connection methods with conditional properties. Add MaxLinear GSW125 example showing MDIO-connected configuration. Signed-off-by: Daniel Golle <daniel@makrotopia.org> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://patch.msgid.link/fc96f1dedb2b418a63e69960356dde7f6eb86424.1762170107.git.daniel@makrotopia.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
351 lines
9.3 KiB
YAML
351 lines
9.3 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/net/dsa/lantiq,gswip.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Lantiq GSWIP and MaxLinear GSW1xx Ethernet switches
|
|
|
|
description:
|
|
Lantiq GSWIP and MaxLinear GSW1xx switches share the same hardware IP.
|
|
Lantiq switches are embedded in SoCs and accessed via memory-mapped I/O,
|
|
while MaxLinear switches are standalone ICs connected via MDIO.
|
|
|
|
$ref: dsa.yaml#
|
|
|
|
maintainers:
|
|
- Hauke Mehrtens <hauke@hauke-m.de>
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- lantiq,xrx200-gswip
|
|
- lantiq,xrx300-gswip
|
|
- lantiq,xrx330-gswip
|
|
- maxlinear,gsw120
|
|
- maxlinear,gsw125
|
|
- maxlinear,gsw140
|
|
- maxlinear,gsw141
|
|
- maxlinear,gsw145
|
|
|
|
reg:
|
|
minItems: 1
|
|
maxItems: 3
|
|
|
|
reg-names:
|
|
items:
|
|
- const: switch
|
|
- const: mdio
|
|
- const: mii
|
|
|
|
mdio:
|
|
$ref: /schemas/net/mdio.yaml#
|
|
unevaluatedProperties: false
|
|
|
|
properties:
|
|
compatible:
|
|
const: lantiq,xrx200-mdio
|
|
|
|
gphy-fw:
|
|
type: object
|
|
properties:
|
|
'#address-cells':
|
|
const: 1
|
|
|
|
'#size-cells':
|
|
const: 0
|
|
|
|
compatible:
|
|
items:
|
|
- enum:
|
|
- lantiq,xrx200-gphy-fw
|
|
- lantiq,xrx300-gphy-fw
|
|
- lantiq,xrx330-gphy-fw
|
|
- const: lantiq,gphy-fw
|
|
|
|
lantiq,rcu:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description: phandle to the RCU syscon
|
|
|
|
patternProperties:
|
|
"^gphy@[0-9a-f]{1,2}$":
|
|
type: object
|
|
|
|
additionalProperties: false
|
|
|
|
properties:
|
|
reg:
|
|
minimum: 0
|
|
maximum: 255
|
|
description:
|
|
Offset of the GPHY firmware register in the RCU register range
|
|
|
|
resets:
|
|
items:
|
|
- description: GPHY reset line
|
|
|
|
reset-names:
|
|
items:
|
|
- const: gphy
|
|
|
|
required:
|
|
- reg
|
|
|
|
required:
|
|
- compatible
|
|
- lantiq,rcu
|
|
|
|
additionalProperties: false
|
|
|
|
patternProperties:
|
|
"^(ethernet-)?ports$":
|
|
type: object
|
|
patternProperties:
|
|
"^(ethernet-)?port@[0-6]$":
|
|
$ref: dsa-port.yaml#
|
|
unevaluatedProperties: false
|
|
|
|
properties:
|
|
maxlinear,rmii-refclk-out:
|
|
type: boolean
|
|
description:
|
|
Configure the RMII reference clock to be a clock output
|
|
rather than an input. Only applicable for RMII mode.
|
|
tx-internal-delay-ps:
|
|
enum: [0, 500, 1000, 1500, 2000, 2500, 3000, 3500]
|
|
description:
|
|
RGMII TX Clock Delay defined in pico seconds.
|
|
The delay lines adjust the MII clock vs. data timing.
|
|
If this property is not present the delay is determined by
|
|
the interface mode.
|
|
rx-internal-delay-ps:
|
|
enum: [0, 500, 1000, 1500, 2000, 2500, 3000, 3500]
|
|
description:
|
|
RGMII RX Clock Delay defined in pico seconds.
|
|
The delay lines adjust the MII clock vs. data timing.
|
|
If this property is not present the delay is determined by
|
|
the interface mode.
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- lantiq,xrx200-gswip
|
|
- lantiq,xrx300-gswip
|
|
- lantiq,xrx330-gswip
|
|
then:
|
|
properties:
|
|
reg:
|
|
minItems: 3
|
|
maxItems: 3
|
|
mdio:
|
|
required:
|
|
- compatible
|
|
else:
|
|
properties:
|
|
reg:
|
|
maxItems: 1
|
|
reg-names: false
|
|
gphy-fw: false
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
switch@e108000 {
|
|
compatible = "lantiq,xrx200-gswip";
|
|
reg = <0xe108000 0x3100>, /* switch */
|
|
<0xe10b100 0xd8>, /* mdio */
|
|
<0xe10b1d8 0x130>; /* mii */
|
|
dsa,member = <0 0>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
port@0 {
|
|
reg = <0>;
|
|
label = "lan3";
|
|
phy-mode = "rgmii-id";
|
|
phy-handle = <&phy0>;
|
|
tx-internal-delay-ps = <2000>;
|
|
rx-internal-delay-ps = <2000>;
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
label = "lan4";
|
|
phy-mode = "rgmii";
|
|
phy-handle = <&phy1>;
|
|
};
|
|
|
|
port@2 {
|
|
reg = <2>;
|
|
label = "lan2";
|
|
phy-mode = "internal";
|
|
phy-handle = <&phy11>;
|
|
};
|
|
|
|
port@4 {
|
|
reg = <4>;
|
|
label = "lan1";
|
|
phy-mode = "internal";
|
|
phy-handle = <&phy13>;
|
|
};
|
|
|
|
port@5 {
|
|
reg = <5>;
|
|
label = "wan";
|
|
phy-mode = "rgmii";
|
|
phy-handle = <&phy5>;
|
|
};
|
|
|
|
port@6 {
|
|
reg = <0x6>;
|
|
phy-mode = "internal";
|
|
ethernet = <ð0>;
|
|
|
|
fixed-link {
|
|
speed = <1000>;
|
|
full-duplex;
|
|
};
|
|
};
|
|
};
|
|
|
|
mdio {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "lantiq,xrx200-mdio";
|
|
|
|
phy0: ethernet-phy@0 {
|
|
reg = <0x0>;
|
|
};
|
|
phy1: ethernet-phy@1 {
|
|
reg = <0x1>;
|
|
};
|
|
phy5: ethernet-phy@5 {
|
|
reg = <0x5>;
|
|
};
|
|
phy11: ethernet-phy@11 {
|
|
reg = <0x11>;
|
|
};
|
|
phy13: ethernet-phy@13 {
|
|
reg = <0x13>;
|
|
};
|
|
};
|
|
|
|
gphy-fw {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "lantiq,xrx200-gphy-fw", "lantiq,gphy-fw";
|
|
lantiq,rcu = <&rcu0>;
|
|
|
|
gphy@20 {
|
|
reg = <0x20>;
|
|
|
|
resets = <&reset0 31 30>;
|
|
reset-names = "gphy";
|
|
};
|
|
|
|
gphy@68 {
|
|
reg = <0x68>;
|
|
|
|
resets = <&reset0 29 28>;
|
|
reset-names = "gphy";
|
|
};
|
|
};
|
|
};
|
|
|
|
- |
|
|
#include <dt-bindings/leds/common.h>
|
|
|
|
mdio {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
switch@1f {
|
|
compatible = "maxlinear,gsw125";
|
|
reg = <0x1f>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
port@0 {
|
|
reg = <0>;
|
|
label = "lan0";
|
|
phy-handle = <&switchphy0>;
|
|
phy-mode = "internal";
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
label = "lan1";
|
|
phy-handle = <&switchphy1>;
|
|
phy-mode = "internal";
|
|
};
|
|
|
|
port@4 {
|
|
reg = <4>;
|
|
label = "wan";
|
|
phy-mode = "1000base-x";
|
|
managed = "in-band-status";
|
|
};
|
|
|
|
port@5 {
|
|
reg = <5>;
|
|
phy-mode = "rgmii-id";
|
|
tx-internal-delay-ps = <2000>;
|
|
rx-internal-delay-ps = <2000>;
|
|
ethernet = <ð0>;
|
|
|
|
fixed-link {
|
|
speed = <1000>;
|
|
full-duplex;
|
|
};
|
|
};
|
|
};
|
|
|
|
mdio {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
switchphy0: switchphy@0 {
|
|
reg = <0>;
|
|
|
|
leds {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
led@0 {
|
|
reg = <0>;
|
|
color = <LED_COLOR_ID_GREEN>;
|
|
function = LED_FUNCTION_LAN;
|
|
};
|
|
};
|
|
};
|
|
|
|
switchphy1: switchphy@1 {
|
|
reg = <1>;
|
|
|
|
leds {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
led@0 {
|
|
reg = <0>;
|
|
color = <LED_COLOR_ID_GREEN>;
|
|
function = LED_FUNCTION_LAN;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|