Files
linux/Documentation/devicetree/bindings/net/micrel,gigabit.yaml
Stefan Eichenberger 283d587238 dt-bindings: net: micrel: Convert micrel-ksz90x1.txt to DT schema
Convert the micrel-ksz90x1.txt to DT schema. Create a separate YAML file
for this PHY series. The old naming of ksz90x1 would be misleading in
this case, so rename it to gigabit, as it contains ksz9xx1 and lan8xxx
gigabit PHYs.

Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20260116130948.79558-3-eichest@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-01-20 18:24:45 -08:00

254 lines
7.7 KiB
YAML

# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/micrel,gigabit.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Micrel series Gigabit Ethernet PHYs
maintainers:
- Andrew Lunn <andrew@lunn.ch>
- Stefan Eichenberger <eichest@gmail.com>
description:
Some boards require special skew tuning values, particularly when it comes
to clock delays. These values can be specified in the device tree using
the properties listed here.
properties:
compatible:
enum:
- ethernet-phy-id0022.1610 # KSZ9021
- ethernet-phy-id0022.1611 # KSZ9021RLRN
- ethernet-phy-id0022.1620 # KSZ9031
- ethernet-phy-id0022.1631 # KSZ9477
- ethernet-phy-id0022.1640 # KSZ9131
- ethernet-phy-id0022.1650 # LAN8841
- ethernet-phy-id0022.1660 # LAN8814
- ethernet-phy-id0022.1670 # LAN8804
micrel,force-master:
type: boolean
description: |
Force phy to master mode. Only set this option if the phy reference
clock provided at CLK125_NDO pin is used as MAC reference clock
because the clock jitter in slave mode is too high (errata#2).
Attention: The link partner must be configurable as slave otherwise
no link will be established.
coma-mode-gpios:
maxItems: 1
description: |
If present the given gpio will be deasserted when the PHY is probed.
Some PHYs have a COMA mode input pin which puts the PHY into
isolate and power-down mode. On some boards this input is connected
to a GPIO of the SoC.
micrel,led-mode:
$ref: /schemas/types.yaml#/definitions/uint32
description: |
LED mode value to set for PHYs with configurable LEDs.
Configure the LED mode with single value. The list of PHYs and the
bits that are currently supported:
LAN8814: register EP5.0, bit 6
See the respective PHY datasheet for the mode values.
minimum: 0
maximum: 1
patternProperties:
'^([rt]xc)-skew-psec$':
$ref: /schemas/types.yaml#/definitions/int32
description:
Skew control of the pad in picoseconds.
minimum: -700
maximum: 2400
multipleOf: 100
default: 0
'^([rt]xd[0-3]|rxdv|txen)-skew-psec$':
$ref: /schemas/types.yaml#/definitions/int32
description: |
Skew control of the pad in picoseconds.
minimum: -700
maximum: 800
multipleOf: 100
default: 0
allOf:
- $ref: ethernet-phy.yaml#
- if:
properties:
compatible:
contains:
enum:
- ethernet-phy-id0022.1610
- ethernet-phy-id0022.1611
then:
patternProperties:
'^([rt]xd[0-3]|[rt]xc|rxdv|txen)-skew-ps$':
description: |
Skew control of the pad in picoseconds.
The actual increment on the chip is 120ps ranging from -840ps to
960ps, this mismatch comes from a documentation error before
datasheet revision 1.2 (Feb 2014).
The device tree value to delay mapping looks as follows:
Device Tree Value Delay
--------------------------
0 -840ps
200 -720ps
400 -600ps
600 -480ps
800 -360ps
1000 -240ps
1200 -120ps
1400 0ps
1600 120ps
1800 240ps
2000 360ps
2200 480ps
2400 600ps
2600 720ps
2800 840ps
3000 960ps
minimum: 0
maximum: 3000
multipleOf: 200
default: 1400
- if:
properties:
compatible:
contains:
const: ethernet-phy-id0022.1620
then:
patternProperties:
'^([rt]xc)-skew-ps$':
description: |
Skew control of the pad in picoseconds.
The device tree value to delay mapping is as follows:
Device Tree Value Delay
--------------------------
0 -900ps
60 -840ps
120 -780ps
180 -720ps
240 -660ps
300 -600ps
360 -540ps
420 -480ps
480 -420ps
540 -360ps
600 -300ps
660 -240ps
720 -180ps
780 -120ps
840 -60ps
900 0ps
960 60ps
1020 120ps
1080 180ps
1140 240ps
1200 300ps
1260 360ps
1320 420ps
1380 480ps
1440 540ps
1500 600ps
1560 660ps
1620 720ps
1680 780ps
1740 840ps
1800 900ps
1860 960ps
minimum: 0
maximum: 1860
multipleOf: 60
default: 900
'^([rt]xd[0-3]|rxdv|txen)-skew-ps$':
description: |
Skew control of the pad in picoseconds.
The device tree value to delay mapping is as follows:
Device Tree Value Delay
--------------------------
0 -420ps
60 -360ps
120 -300ps
180 -240ps
240 -180ps
300 -120ps
360 -60ps
420 0ps
480 60ps
540 120ps
600 180ps
660 240ps
720 300ps
780 360ps
840 420ps
900 480ps
minimum: 0
maximum: 900
multipleOf: 60
default: 420
- if:
not:
properties:
compatible:
contains:
enum:
- ethernet-phy-id0022.1640
- ethernet-phy-id0022.1650
then:
patternProperties:
'^([rt]xd[0-3]|[rt]xc|rxdv|txen)-skew-psec$': false
- if:
not:
properties:
compatible:
contains:
const: ethernet-phy-id0022.1620
then:
properties:
micrel,force-master: false
- if:
not:
properties:
compatible:
contains:
const: ethernet-phy-id0022.1660
then:
properties:
coma-mode-gpios: false
micrel,led-mode: false
unevaluatedProperties: false
examples:
- |
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethernet-phy@7 {
compatible = "ethernet-phy-id0022.1610";
reg = <7>;
rxc-skew-ps = <3000>;
rxdv-skew-ps = <0>;
txc-skew-ps = <3000>;
txen-skew-ps = <0>;
};
ethernet-phy@9 {
compatible = "ethernet-phy-id0022.1640";
reg = <9>;
rxc-skew-psec = <(-100)>;
txc-skew-psec = <(-100)>;
};
};