-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dt-bindings: net: dsa: Add documentation for NXP SJA1105 driver
Signed-off-by: Vladimir Oltean <olteanv@gmail.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
Vladimir Oltean
authored and
David S. Miller
committed
May 3, 2019
1 parent
4759209
commit 013fe01
Showing
1 changed file
with
156 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
NXP SJA1105 switch driver | ||
========================= | ||
|
||
Required properties: | ||
|
||
- compatible: | ||
Must be one of: | ||
- "nxp,sja1105e" | ||
- "nxp,sja1105t" | ||
- "nxp,sja1105p" | ||
- "nxp,sja1105q" | ||
- "nxp,sja1105r" | ||
- "nxp,sja1105s" | ||
|
||
Although the device ID could be detected at runtime, explicit bindings | ||
are required in order to be able to statically check their validity. | ||
For example, SGMII can only be specified on port 4 of R and S devices, | ||
and the non-SGMII devices, while pin-compatible, are not equal in terms | ||
of support for RGMII internal delays (supported on P/Q/R/S, but not on | ||
E/T). | ||
|
||
Optional properties: | ||
|
||
- sja1105,role-mac: | ||
- sja1105,role-phy: | ||
Boolean properties that can be assigned under each port node. By | ||
default (unless otherwise specified) a port is configured as MAC if it | ||
is driving a PHY (phy-handle is present) or as PHY if it is PHY-less | ||
(fixed-link specified, presumably because it is connected to a MAC). | ||
The effect of this property (in either its implicit or explicit form) | ||
is: | ||
- In the case of MII or RMII it specifies whether the SJA1105 port is a | ||
clock source or sink for this interface (not applicable for RGMII | ||
where there is a Tx and an Rx clock). | ||
- In the case of RGMII it affects the behavior regarding internal | ||
delays: | ||
1. If sja1105,role-mac is specified, and the phy-mode property is one | ||
of "rgmii-id", "rgmii-txid" or "rgmii-rxid", then the entity | ||
designated to apply the delay/clock skew necessary for RGMII | ||
is the PHY. The SJA1105 MAC does not apply any internal delays. | ||
2. If sja1105,role-phy is specified, and the phy-mode property is one | ||
of the above, the designated entity to apply the internal delays | ||
is the SJA1105 MAC (if hardware-supported). This is only supported | ||
by the second-generation (P/Q/R/S) hardware. On a first-generation | ||
E or T device, it is an error to specify an RGMII phy-mode other | ||
than "rgmii" for a port that is in fixed-link mode. In that case, | ||
the clock skew must either be added by the MAC at the other end of | ||
the fixed-link, or by PCB serpentine traces on the board. | ||
These properties are required, for example, in the case where SJA1105 | ||
ports are at both ends of a MII/RMII PHY-less setup. One end would need | ||
to have sja1105,role-mac, while the other sja1105,role-phy. | ||
|
||
See Documentation/devicetree/bindings/net/dsa/dsa.txt for the list of standard | ||
DSA required and optional properties. | ||
|
||
Other observations | ||
------------------ | ||
|
||
The SJA1105 SPI interface requires a CS-to-CLK time (t2 in UM10944) of at least | ||
one half of t_CLK. At an SPI frequency of 1MHz, this means a minimum | ||
cs_sck_delay of 500ns. Ensuring that this SPI timing requirement is observed | ||
depends on the SPI bus master driver. | ||
|
||
Example | ||
------- | ||
|
||
Ethernet switch connected via SPI to the host, CPU port wired to enet2: | ||
|
||
arch/arm/boot/dts/ls1021a-tsn.dts: | ||
|
||
/* SPI controller of the LS1021 */ | ||
&dspi0 { | ||
sja1105@1 { | ||
reg = <0x1>; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
compatible = "nxp,sja1105t"; | ||
spi-max-frequency = <4000000>; | ||
fsl,spi-cs-sck-delay = <1000>; | ||
fsl,spi-sck-cs-delay = <1000>; | ||
ports { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
port@0 { | ||
/* ETH5 written on chassis */ | ||
label = "swp5"; | ||
phy-handle = <&rgmii_phy6>; | ||
phy-mode = "rgmii-id"; | ||
reg = <0>; | ||
/* Implicit "sja1105,role-mac;" */ | ||
}; | ||
port@1 { | ||
/* ETH2 written on chassis */ | ||
label = "swp2"; | ||
phy-handle = <&rgmii_phy3>; | ||
phy-mode = "rgmii-id"; | ||
reg = <1>; | ||
/* Implicit "sja1105,role-mac;" */ | ||
}; | ||
port@2 { | ||
/* ETH3 written on chassis */ | ||
label = "swp3"; | ||
phy-handle = <&rgmii_phy4>; | ||
phy-mode = "rgmii-id"; | ||
reg = <2>; | ||
/* Implicit "sja1105,role-mac;" */ | ||
}; | ||
port@3 { | ||
/* ETH4 written on chassis */ | ||
phy-handle = <&rgmii_phy5>; | ||
label = "swp4"; | ||
phy-mode = "rgmii-id"; | ||
reg = <3>; | ||
/* Implicit "sja1105,role-mac;" */ | ||
}; | ||
port@4 { | ||
/* Internal port connected to eth2 */ | ||
ethernet = <&enet2>; | ||
phy-mode = "rgmii"; | ||
reg = <4>; | ||
/* Implicit "sja1105,role-phy;" */ | ||
fixed-link { | ||
speed = <1000>; | ||
full-duplex; | ||
}; | ||
}; | ||
}; | ||
}; | ||
}; | ||
|
||
/* MDIO controller of the LS1021 */ | ||
&mdio0 { | ||
/* BCM5464 */ | ||
rgmii_phy3: ethernet-phy@3 { | ||
reg = <0x3>; | ||
}; | ||
rgmii_phy4: ethernet-phy@4 { | ||
reg = <0x4>; | ||
}; | ||
rgmii_phy5: ethernet-phy@5 { | ||
reg = <0x5>; | ||
}; | ||
rgmii_phy6: ethernet-phy@6 { | ||
reg = <0x6>; | ||
}; | ||
}; | ||
|
||
/* Ethernet master port of the LS1021 */ | ||
&enet2 { | ||
phy-connection-type = "rgmii"; | ||
status = "ok"; | ||
fixed-link { | ||
speed = <1000>; | ||
full-duplex; | ||
}; | ||
}; |