157 lines
4.4 KiB
Plaintext
157 lines
4.4 KiB
Plaintext
|
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;
|
||
|
};
|
||
|
};
|