summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorParth Pancholi <parth.pancholi@toradex.com>2024-05-01 16:11:18 +0200
committerParth Pancholi <parth.pancholi@toradex.com>2024-05-07 13:03:18 +0000
commitda525e05addd752a27ba6173828d2282aeb82565 (patch)
tree9de2e751030c5169cc97d136e3d5db222d8c82db
parent7b4282921696cee75a55c704983d68a665022aee (diff)
arm64: dts: ti: k3-am69-aquila: add ethernet, PCIE and related SERDES
This change adds ETH_1 (on-module) and ETH_2 (dev carrier board) along with its MDIO configurations for Toradex Aquila AM69 SOMs. In addition, AM69 Serdes lane configurations are done as per the below table for Aquila AM69. Associated PCIe and xGMII interfaces are added accordingly. -------------------------------------------------------------------------- |SERDES# | SERDES LANE# | AM69 SOC IP | Toradex Aquila AM69 Interface | -------------------------------------------------------------------------- |SERDES0 | LANE0 | PCIE1_LANE0 | Aquila PCIE_2 L0 | | | LANE1 | PCIE1_LANE1 | Aquila PCIE_2 L1 | | | LANE2 | PCIE3_LANE0 | On-module PCIe Wi-Fi | | | LANE3 | USB0 SS | Aquila USB0 SS | -------------------------------------------------------------------------- |SERDES1 | LANE0 | PCIE0_LANE0 | Aquila PCIE_1 L0 | | | LANE1 | PCIE0_LANE1 | Aquila PCIE_1 L1 | | | LANE2 | PCIE2_LANE0 | On-module PCIe USB bridge | | | LANE3 | QSGMII_LANE2 | Aquila ETH_2 xGMII | -------------------------------------------------------------------------- |SERDES2 | LANE0 | QSGMII_LANE5 | Aquila SGMII MSP_6 | | | LANE1 | QSGMII_LANE6 | Aquila SGMII MSP_7 | | | LANE2 | QSGMII_LANE7 | Aquila SGMII MSP_8 | | | LANE3 | QSGMII_LANE8 | Aquila SGMII MSP_9 | -------------------------------------------------------------------------- |SERDES4 | LANE0 | EDP_LANE0 | Aquila DP L0 | | | LANE1 | EDP_LANE1 | Aquila DP L1 | | | LANE2 | EDP_LANE2 | Aquila DP L2 | | | LANE3 | EDP_LANE3 | Aquila DP L3 | -------------------------------------------------------------------------- Upstream-Status: Pending Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com>
-rw-r--r--arch/arm64/boot/dts/ti/k3-am69-aquila-dev.dts32
-rw-r--r--arch/arm64/boot/dts/ti/k3-am69-aquila.dtsi215
2 files changed, 218 insertions, 29 deletions
diff --git a/arch/arm64/boot/dts/ti/k3-am69-aquila-dev.dts b/arch/arm64/boot/dts/ti/k3-am69-aquila-dev.dts
index 6d62f9962062..4f24b71ad422 100644
--- a/arch/arm64/boot/dts/ti/k3-am69-aquila-dev.dts
+++ b/arch/arm64/boot/dts/ti/k3-am69-aquila-dev.dts
@@ -20,22 +20,30 @@
"ti,j784s4";
};
-/* Aquila ETH_2 MDIO */
+/* On-module ETH_1 MDIO */
&davinci_mdio {
status = "okay";
+};
- mcu_phy0: ethernet-phy@3 {
- compatible = "ethernet-phy-ieee802.3-c22";
+/* Aquila ETH_2 MDIO */
+&main_cpsw0_mdio {
+ status = "okay";
+
+ /* TODO: re-verify the PHY address */
+ cpsw9g_phy0: ethernet-phy@3 {
reg = <3>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_eth2_int>;
interrupt-parent = <&main_gpio0>;
interrupts = <44 IRQ_TYPE_EDGE_FALLING>;
- ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
- ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
};
};
+/* Aquila ETH_2 SGMII PHY */
+&main_cpsw0_port2 {
+ status = "okay";
+};
+
/* Aquila PWM_1 */
&main_ehrpwm0 {
status = "okay";
@@ -115,10 +123,8 @@
status = "okay";
};
-/* Aquila ETH_2_RGMII */
+/* On-module ETH_1 RGMII */
&mcu_cpsw_port1 {
- phy-handle = <&mcu_phy0>;
- phy-mode = "rgmii-rxid";
status = "okay";
};
@@ -188,6 +194,16 @@
};
};
+/* Aquila PCIE_1 */
+&pcie0_rc {
+ status = "okay";
+};
+
+/* Aquila PCIE_2 */
+&pcie1_rc {
+ status = "okay";
+};
+
/* Aquila ADC_[1-4] */
&tscadc0 {
status = "okay";
diff --git a/arch/arm64/boot/dts/ti/k3-am69-aquila.dtsi b/arch/arm64/boot/dts/ti/k3-am69-aquila.dtsi
index e4793461fa07..418a3a492e69 100644
--- a/arch/arm64/boot/dts/ti/k3-am69-aquila.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am69-aquila.dtsi
@@ -21,7 +21,8 @@
can1 = &mcu_mcan0;
can2 = &main_mcan13;
can3 = &mcu_mcan1;
- ethernet1 = &mcu_cpsw_port1;
+ ethernet0 = &mcu_cpsw_port1;
+ ethernet1 = &main_cpsw0_port2;
i2c0 = &wkup_i2c0;
i2c1 = &mcu_i2c0;
i2c2 = &mcu_i2c1;
@@ -264,10 +265,24 @@
>;
};
- /* Aquila ETH_2_RGMII_INT# */
+ /* Aquila PCIE_1_RESET# */
+ pinctrl_pcie0_reset: main-gpio0-32-default-pins {
+ pinctrl-single,pins = <
+ J784S4_IOPAD(0x080, PIN_INPUT, 7) /* (AK34) MCASP0_AXR4.GPIO0_32 */ /* AQUILA C38 */
+ >;
+ };
+
+ /* Aquila PCIE_2_RESET# */
+ pinctrl_pcie1_reset: main-gpio0-32-default-pins {
+ pinctrl-single,pins = <
+ J784S4_IOPAD(0x0a4, PIN_INPUT, 7) /* (AJ36) MCASP0_AXR13.GPIO0_41 */ /* AQUILA C35 */
+ >;
+ };
+
+ /* Aquila ETH_2_xGMII_INT# */
pinctrl_eth2_int: main-gpio0-44-default-pins {
pinctrl-single,pins = <
- J784S4_IOPAD(0x0b0, PIN_INPUT_PULLUP, 7) /* (AL33) MCASP1_AXR3.GPIO0_44 */ /* AQUILA B79 */
+ J784S4_IOPAD(0x0b0, PIN_INPUT_PULLUP, 7) /* (AL33) MCASP1_AXR3.GPIO0_44 */ /* AQUILA B81 */
>;
};
@@ -319,6 +334,14 @@
>;
};
+ /* Aquila ETH_2 MDIO */
+ pinctrl_main_mdio0: main-mdio0-default-pins {
+ pinctrl-single,pins = <
+ J784S4_IOPAD(0x0c0, PIN_OUTPUT, 6) /* (AD38) MCASP1_AXR0.MDIO0_MDC */ /* AQUILA B89 */
+ J784S4_IOPAD(0x0bc, PIN_INPUT, 6) /* (AD33) MCASP1_AFSX.MDIO0_MDIO */ /* AQUILA B90 */
+ >;
+ };
+
/* Aquila SD_1 */
pinctrl_main_mmc1: main-mmc1-default-pins {
pinctrl-single,pins = <
@@ -583,29 +606,29 @@
>;
};
- /* Aquila ETH_2 MDIO */
+ /* On-module ETH_1 MDIO */
pinctrl_mcu_mdio: mcu-mdio-default-pins {
pinctrl-single,pins = <
- J784S4_WKUP_IOPAD(0x034, PIN_OUTPUT, 0) /* (A36) MCU_MDIO0_MDC */ /* AQUILA B72 */
- J784S4_WKUP_IOPAD(0x030, PIN_INPUT, 0) /* (B35) MCU_MDIO0_MDIO */ /* AQUILA B71 */
+ J784S4_WKUP_IOPAD(0x034, PIN_OUTPUT, 0) /* (A36) MCU_MDIO0_MDC */
+ J784S4_WKUP_IOPAD(0x030, PIN_INPUT, 0) /* (B35) MCU_MDIO0_MDIO */
>;
};
- /* Aquila ETH_2 RGMII */
+ /* On-module ETH_1 RGMII */
pinctrl_mcu_rgmii1: mcu-rgmii1-default-pins {
pinctrl-single,pins = <
- J784S4_WKUP_IOPAD(0x02c, PIN_INPUT, 0) /* (A35) MCU_RGMII1_RD0 */ /* AQUILA B77 */
- J784S4_WKUP_IOPAD(0x028, PIN_INPUT, 0) /* (B36) MCU_RGMII1_RD1 */ /* AQUILA B78 */
- J784S4_WKUP_IOPAD(0x024, PIN_INPUT, 0) /* (C36) MCU_RGMII1_RD2 */ /* AQUILA B80 */
- J784S4_WKUP_IOPAD(0x020, PIN_INPUT, 0) /* (D36) MCU_RGMII1_RD3 */ /* AQUILA B81 */
- J784S4_WKUP_IOPAD(0x01c, PIN_INPUT, 0) /* (B37) MCU_RGMII1_RXC */ /* AQUILA B74 */
- J784S4_WKUP_IOPAD(0x004, PIN_INPUT, 0) /* (C37) MCU_RGMII1_RX_CTL */ /* AQUILA B75 */
- J784S4_WKUP_IOPAD(0x014, PIN_OUTPUT, 0) /* (D37) MCU_RGMII1_TD0 */ /* AQUILA B90 */
- J784S4_WKUP_IOPAD(0x010, PIN_OUTPUT, 0) /* (D38) MCU_RGMII1_TD1 */ /* AQUILA B89 */
- J784S4_WKUP_IOPAD(0x00c, PIN_OUTPUT, 0) /* (E37) MCU_RGMII1_TD2 */ /* AQUILA B87 */
- J784S4_WKUP_IOPAD(0x008, PIN_OUTPUT, 0) /* (E38) MCU_RGMII1_TD3 */ /* AQUILA B86 */
- J784S4_WKUP_IOPAD(0x018, PIN_OUTPUT, 0) /* (E36) MCU_RGMII1_TXC */ /* AQUILA B83 */
- J784S4_WKUP_IOPAD(0x000, PIN_OUTPUT, 0) /* (C38) MCU_RGMII1_TX_CTL */ /* AQUILA B84 */
+ J784S4_WKUP_IOPAD(0x02c, PIN_INPUT, 0) /* (A35) MCU_RGMII1_RD0 */
+ J784S4_WKUP_IOPAD(0x028, PIN_INPUT, 0) /* (B36) MCU_RGMII1_RD1 */
+ J784S4_WKUP_IOPAD(0x024, PIN_INPUT, 0) /* (C36) MCU_RGMII1_RD2 */
+ J784S4_WKUP_IOPAD(0x020, PIN_INPUT, 0) /* (D36) MCU_RGMII1_RD3 */
+ J784S4_WKUP_IOPAD(0x01c, PIN_INPUT, 0) /* (B37) MCU_RGMII1_RXC */
+ J784S4_WKUP_IOPAD(0x004, PIN_INPUT, 0) /* (C37) MCU_RGMII1_RX_CTL */
+ J784S4_WKUP_IOPAD(0x014, PIN_OUTPUT, 0) /* (D37) MCU_RGMII1_TD0 */
+ J784S4_WKUP_IOPAD(0x010, PIN_OUTPUT, 0) /* (D38) MCU_RGMII1_TD1 */
+ J784S4_WKUP_IOPAD(0x00c, PIN_OUTPUT, 0) /* (E37) MCU_RGMII1_TD2 */
+ J784S4_WKUP_IOPAD(0x008, PIN_OUTPUT, 0) /* (E38) MCU_RGMII1_TD3 */
+ J784S4_WKUP_IOPAD(0x018, PIN_OUTPUT, 0) /* (E36) MCU_RGMII1_TXC */
+ J784S4_WKUP_IOPAD(0x000, PIN_OUTPUT, 0) /* (C38) MCU_RGMII1_TX_CTL */
>;
};
@@ -680,11 +703,34 @@
status = "okay";
};
-/* Aquila ETH_2_MDIO */
+/* On-module ETH_1 MDIO */
&davinci_mdio {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mcu_mdio>;
status = "disabled";
+
+ mcu_phy0: ethernet-phy@0 {
+ reg = <0>;
+ interrupt-parent = <&wkup_gpio0>;
+ interrupts = <79 IRQ_TYPE_EDGE_FALLING>;
+ ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+ ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+ };
+};
+
+/* Aquila ETH_2 MDIO */
+&main_cpsw0_mdio {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_main_mdio0>;
+};
+
+/* Aquila ETH_2 SGMII PHY */
+&main_cpsw0_port2 {
+ phy-handle = <&cpsw9g_phy0>;
+ phy-mode = "sgmii";
+ phys = <&cpsw0_phy_gmii_sel 2>, <&serdes1_sgmii_link>;
+ phy-names = "mac", "serdes";
+ status = "disabled";
};
/* Aquila PWM_1 */
@@ -1012,8 +1058,10 @@
status = "disabled";
};
-/* Aquila ETH_2_RGMII */
+/* On-module ETH_1 RGMII */
&mcu_cpsw_port1 {
+ phy-handle = <&mcu_phy0>;
+ phy-mode = "rgmii-rxid";
status = "disabled";
};
@@ -1092,6 +1140,131 @@
status = "disabled";
};
+/* Aquila PCIE_1 */
+&pcie0_rc {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pcie0_reset>;
+ num-lanes = <2>;
+ phy-names = "pcie-phy";
+ phys = <&serdes1_pcie0_2l_link>;
+ reset-gpios = <&main_gpio0 32 GPIO_ACTIVE_LOW>;
+ status = "disabled";
+};
+
+/* Aquila PCIE_2 */
+&pcie1_rc {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pcie1_reset>;
+ num-lanes = <2>;
+ phy-names = "pcie-phy";
+ phys = <&serdes0_pcie1_2l_link>;
+ reset-gpios = <&main_gpio0 41 GPIO_ACTIVE_LOW>;
+ status = "disabled";
+};
+
+/* TODO: On-module PCIE (pcie2_ep) to USB-bridge TUSB7320 */
+
+/* PCIE for On-module Wi-Fi */
+&pcie3_ep {
+ num-lanes = <1>;
+ phys = <&serdes0_pcie3_1l_link>;
+ phy-names = "pcie-phy";
+ status = "okay";
+};
+
+&serdes0 {
+ status = "okay";
+
+ /* Aquila PCIE_2 */
+ serdes0_pcie1_2l_link: phy@0 {
+ reg = <0>;
+ cdns,num-lanes = <2>;
+ cdns,phy-type = <PHY_TYPE_PCIE>;
+ #phy-cells = <0>;
+ resets = <&serdes_wiz0 1>, <&serdes_wiz0 2>;
+ };
+
+ /* On-module PCIe Wi-Fi */
+ serdes0_pcie3_1l_link: phy@2 {
+ reg = <2>;
+ cdns,num-lanes = <1>;
+ cdns,phy-type = <PHY_TYPE_PCIE>;
+ #phy-cells = <0>;
+ resets = <&serdes_wiz0 3>;
+ };
+
+ /* Aquila USB0 SS */
+ serdes0_usb0_ss_link: phy@3 {
+ reg = <3>;
+ cdns,num-lanes = <1>;
+ #phy-cells = <0>;
+ cdns,phy-type = <PHY_TYPE_USB3>;
+ resets = <&serdes_wiz0 4>;
+ };
+};
+
+&serdes1 {
+ status = "okay";
+
+ /* Aquila PCIE_1 */
+ serdes1_pcie0_2l_link: phy@0 {
+ reg = <0>;
+ cdns,num-lanes = <2>;
+ cdns,phy-type = <PHY_TYPE_PCIE>;
+ #phy-cells = <0>;
+ resets = <&serdes_wiz1 1>, <&serdes_wiz1 2>;
+ };
+
+ /* On-module PCIe USB Bridge */
+ serdes1_pcie2_1l_link: phy@2 {
+ reg = <2>;
+ cdns,num-lanes = <1>;
+ cdns,phy-type = <PHY_TYPE_PCIE>;
+ #phy-cells = <0>;
+ resets = <&serdes_wiz1 3>;
+ };
+
+ /* Aquila ETH_2 xGMII */
+ serdes1_sgmii_link: phy@3 {
+ reg = <3>;
+ cdns,num-lanes = <1>;
+ cdns,phy-type = <PHY_TYPE_SGMII>;
+ #phy-cells = <0>;
+ resets = <&serdes_wiz1 4>;
+ };
+};
+
+&serdes_refclk {
+ clock-frequency = <100000000>;
+};
+
+&serdes_ln_ctrl {
+ idle-states = <J784S4_SERDES0_LANE0_PCIE1_LANE0>, /* Aquila PCIE_2 L0 */
+ <J784S4_SERDES0_LANE1_PCIE1_LANE1>, /* Aquila PCIE_2 L1 */
+ <J784S4_SERDES0_LANE2_PCIE3_LANE0>, /* On-module PCIe Wi-Fi */
+ <J784S4_SERDES0_LANE3_USB>, /* Aquila USB0 SS */
+ <J784S4_SERDES1_LANE0_PCIE0_LANE0>, /* Aquila PCIE_1 L0 */
+ <J784S4_SERDES1_LANE1_PCIE0_LANE1>, /* Aquila PCIE_1 L1 */
+ <J784S4_SERDES1_LANE2_PCIE2_LANE0>, /* On-module PCIe USB Bridge */
+ <J784S4_SERDES1_LANE3_QSGMII_LANE2>, /* Aquila ETH_2 xGMII */
+ <J784S4_SERDES2_LANE0_QSGMII_LANE5>, /* Aquila SGMII MSP_6 */
+ <J784S4_SERDES2_LANE1_QSGMII_LANE6>, /* Aquila SGMII MSP_7 */
+ <J784S4_SERDES2_LANE2_QSGMII_LANE7>, /* Aquila SGMII MSP_8 */
+ <J784S4_SERDES2_LANE3_QSGMII_LANE8>, /* Aquila SGMII MSP_9 */
+ <J784S4_SERDES4_LANE0_EDP_LANE0>, /* Aquila DP L0 */
+ <J784S4_SERDES4_LANE1_EDP_LANE1>, /* Aquila DP L1 */
+ <J784S4_SERDES4_LANE2_EDP_LANE2>, /* Aquila DP L2 */
+ <J784S4_SERDES4_LANE3_EDP_LANE3>; /* Aquila DP L3 */
+};
+
+&serdes_wiz0 {
+ status = "okay";
+};
+
+&serdes_wiz1 {
+ status = "okay";
+};
+
/* Aquila ADC_[1-4] */
&tscadc0 {
pinctrl-names = "default";