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;
	};
};
