linux_dsm_epyc7002/arch/arm/boot/dts/ls1021a-tsn.dts
Vladimir Oltean 0840a47ee8 ARM: dts: ls1021a-tsn: Use interrupts for the SGMII PHYs
On the LS1021A-TSN board, the 2 Atheros AR8031 PHYs for eth0 and eth1
have interrupt lines connected to the shared IRQ2_B LS1021A pin.

Switching to interrupts offloads the PHY library from the task of
polling the MDIO status and AN registers (1, 4, 5) every second.

Unfortunately, the BCM5464R quad PHY connected to the switch does not
appear to have an interrupt line routed to the SoC.

Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2019-12-09 08:28:07 +08:00

294 lines
4.9 KiB
Plaintext

// SPDX-License-Identifier: GPL-2.0
/* Copyright 2016-2018 NXP Semiconductors
* Copyright 2019 Vladimir Oltean <olteanv@gmail.com>
*/
/dts-v1/;
#include "ls1021a.dtsi"
/ {
model = "NXP LS1021A-TSN Board";
sys_mclk: clock-mclk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24576000>;
};
reg_vdda_codec: regulator-3V3 {
compatible = "regulator-fixed";
regulator-name = "3P3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
reg_vddio_codec: regulator-2V5 {
compatible = "regulator-fixed";
regulator-name = "2P5V";
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>;
regulator-always-on;
};
};
&dspi0 {
bus-num = <0>;
status = "okay";
/* ADG704BRMZ 1:4 SPI mux/demux */
sja1105: ethernet-switch@1 {
reg = <0x1>;
#address-cells = <1>;
#size-cells = <0>;
compatible = "nxp,sja1105t";
/* 12 MHz */
spi-max-frequency = <12000000>;
/* Sample data on trailing clock edge */
spi-cpha;
/* SPI controller settings for SJA1105 timing requirements */
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>;
};
port@1 {
/* ETH2 written on chassis */
label = "swp2";
phy-handle = <&rgmii_phy3>;
phy-mode = "rgmii-id";
reg = <1>;
};
port@2 {
/* ETH3 written on chassis */
label = "swp3";
phy-handle = <&rgmii_phy4>;
phy-mode = "rgmii-id";
reg = <2>;
};
port@3 {
/* ETH4 written on chassis */
label = "swp4";
phy-handle = <&rgmii_phy5>;
phy-mode = "rgmii-id";
reg = <3>;
};
port@4 {
/* Internal port connected to eth2 */
ethernet = <&enet2>;
phy-mode = "rgmii";
reg = <4>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
};
};
};
&enet0 {
tbi-handle = <&tbi0>;
phy-handle = <&sgmii_phy2>;
phy-mode = "sgmii";
status = "okay";
};
&enet1 {
tbi-handle = <&tbi1>;
phy-handle = <&sgmii_phy1>;
phy-mode = "sgmii";
status = "okay";
};
/* RGMII delays added via PCB traces */
&enet2 {
phy-mode = "rgmii";
status = "okay";
fixed-link {
speed = <1000>;
full-duplex;
};
};
&esdhc {
status = "okay";
};
&i2c0 {
status = "okay";
/* 3 axis accelerometer */
accelerometer@1e {
compatible = "fsl,fxls8471";
position = <0>;
reg = <0x1e>;
};
/* Audio codec (SAI2) */
audio-codec@2a {
compatible = "fsl,sgtl5000";
VDDIO-supply = <&reg_vddio_codec>;
VDDA-supply = <&reg_vdda_codec>;
#sound-dai-cells = <0>;
clocks = <&sys_mclk>;
reg = <0x2a>;
};
/* Current sensing circuit for 1V VDDCORE PMIC rail */
current-sensor@44 {
compatible = "ti,ina220";
shunt-resistor = <1000>;
reg = <0x44>;
};
/* Current sensing circuit for 12V VCC rail */
current-sensor@45 {
compatible = "ti,ina220";
shunt-resistor = <1000>;
reg = <0x45>;
};
/* Thermal monitor - case */
temperature-sensor@48 {
compatible = "national,lm75";
reg = <0x48>;
};
/* Thermal monitor - chip */
temperature-sensor@4c {
compatible = "ti,tmp451";
reg = <0x4c>;
};
eeprom@51 {
compatible = "atmel,24c32";
reg = <0x51>;
};
/* Unsupported devices:
* - FXAS21002C Gyroscope at 0x20
* - TI ADS7924 4-channel ADC at 0x49
*/
};
&ifc {
status = "disabled";
};
&lpuart0 {
status = "okay";
};
&lpuart3 {
status = "okay";
};
&mdio0 {
/* AR8031 */
sgmii_phy1: ethernet-phy@1 {
reg = <0x1>;
/* SGMII1_PHY_INT_B: connected to IRQ2, active low */
interrupts-extended = <&extirq 2 IRQ_TYPE_LEVEL_LOW>;
};
/* AR8031 */
sgmii_phy2: ethernet-phy@2 {
reg = <0x2>;
/* SGMII2_PHY_INT_B: connected to IRQ2, active low */
interrupts-extended = <&extirq 2 IRQ_TYPE_LEVEL_LOW>;
};
/* BCM5464 quad PHY */
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>;
};
/* SGMII PCS for enet0 */
tbi0: tbi-phy@1f {
reg = <0x1f>;
device_type = "tbi-phy";
};
};
&mdio1 {
/* SGMII PCS for enet1 */
tbi1: tbi-phy@1f {
reg = <0x1f>;
device_type = "tbi-phy";
};
};
&qspi {
status = "okay";
flash@0 {
/* Rev. A uses 64MB flash, Rev. B & C use 32MB flash */
compatible = "jedec,spi-nor", "s25fl256s1", "s25fl512s";
spi-max-frequency = <20000000>;
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "RCW";
reg = <0x0 0x40000>;
};
partition@40000 {
label = "U-Boot";
reg = <0x40000 0x300000>;
};
partition@340000 {
label = "U-Boot Env";
reg = <0x340000 0x100000>;
};
};
};
};
&sai2 {
status = "okay";
};
&sata {
status = "okay";
};
&uart0 {
status = "okay";
};