162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/**
362306a36Sopenharmony_ci * DT Overlay for CPSW9G in QSGMII mode using J7 Quad Port ETH EXP Add-On Ethernet Card with
462306a36Sopenharmony_ci * J721E board.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci/dts-v1/;
1062306a36Sopenharmony_ci/plugin/;
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h>
1362306a36Sopenharmony_ci#include <dt-bindings/phy/phy.h>
1462306a36Sopenharmony_ci#include <dt-bindings/phy/phy-cadence.h>
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#include "k3-pinctrl.h"
1762306a36Sopenharmony_ci#include "k3-serdes.h"
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci&{/} {
2062306a36Sopenharmony_ci	aliases {
2162306a36Sopenharmony_ci		ethernet1 = "/bus@100000/ethernet@c000000/ethernet-ports/port@1";
2262306a36Sopenharmony_ci		ethernet2 = "/bus@100000/ethernet@c000000/ethernet-ports/port@2";
2362306a36Sopenharmony_ci		ethernet3 = "/bus@100000/ethernet@c000000/ethernet-ports/port@3";
2462306a36Sopenharmony_ci		ethernet4 = "/bus@100000/ethernet@c000000/ethernet-ports/port@4";
2562306a36Sopenharmony_ci	};
2662306a36Sopenharmony_ci};
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci&cpsw0 {
2962306a36Sopenharmony_ci	status = "okay";
3062306a36Sopenharmony_ci};
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci&cpsw0_port1 {
3362306a36Sopenharmony_ci	status = "okay";
3462306a36Sopenharmony_ci	phy-handle = <&cpsw9g_phy0>;
3562306a36Sopenharmony_ci	phy-mode = "qsgmii";
3662306a36Sopenharmony_ci	mac-address = [00 00 00 00 00 00];
3762306a36Sopenharmony_ci	phys = <&cpsw0_phy_gmii_sel 1>;
3862306a36Sopenharmony_ci};
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci&cpsw0_port2 {
4162306a36Sopenharmony_ci	status = "okay";
4262306a36Sopenharmony_ci	phy-handle = <&cpsw9g_phy1>;
4362306a36Sopenharmony_ci	phy-mode = "qsgmii";
4462306a36Sopenharmony_ci	mac-address = [00 00 00 00 00 00];
4562306a36Sopenharmony_ci	phys = <&cpsw0_phy_gmii_sel 2>;
4662306a36Sopenharmony_ci};
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci&cpsw0_port3 {
4962306a36Sopenharmony_ci	status = "okay";
5062306a36Sopenharmony_ci	phy-handle = <&cpsw9g_phy2>;
5162306a36Sopenharmony_ci	phy-mode = "qsgmii";
5262306a36Sopenharmony_ci	mac-address = [00 00 00 00 00 00];
5362306a36Sopenharmony_ci	phys = <&cpsw0_phy_gmii_sel 3>;
5462306a36Sopenharmony_ci};
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci&cpsw0_port4 {
5762306a36Sopenharmony_ci	status = "okay";
5862306a36Sopenharmony_ci	phy-handle = <&cpsw9g_phy3>;
5962306a36Sopenharmony_ci	phy-mode = "qsgmii";
6062306a36Sopenharmony_ci	mac-address = [00 00 00 00 00 00];
6162306a36Sopenharmony_ci	phys = <&cpsw0_phy_gmii_sel 4>;
6262306a36Sopenharmony_ci};
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci&cpsw9g_mdio {
6562306a36Sopenharmony_ci	status = "okay";
6662306a36Sopenharmony_ci	pinctrl-names = "default";
6762306a36Sopenharmony_ci	pinctrl-0 = <&mdio0_pins_default>;
6862306a36Sopenharmony_ci	reset-gpios = <&exp2 17 GPIO_ACTIVE_LOW>;
6962306a36Sopenharmony_ci	reset-post-delay-us = <120000>;
7062306a36Sopenharmony_ci	#address-cells = <1>;
7162306a36Sopenharmony_ci	#size-cells = <0>;
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci	cpsw9g_phy0: ethernet-phy@17 {
7462306a36Sopenharmony_ci		reg = <17>;
7562306a36Sopenharmony_ci	};
7662306a36Sopenharmony_ci	cpsw9g_phy1: ethernet-phy@16 {
7762306a36Sopenharmony_ci		reg = <16>;
7862306a36Sopenharmony_ci	};
7962306a36Sopenharmony_ci	cpsw9g_phy2: ethernet-phy@18 {
8062306a36Sopenharmony_ci		reg = <18>;
8162306a36Sopenharmony_ci	};
8262306a36Sopenharmony_ci	cpsw9g_phy3: ethernet-phy@19 {
8362306a36Sopenharmony_ci		reg = <19>;
8462306a36Sopenharmony_ci	};
8562306a36Sopenharmony_ci};
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci&exp2 {
8862306a36Sopenharmony_ci	qsgmii-line-hog {
8962306a36Sopenharmony_ci		gpio-hog;
9062306a36Sopenharmony_ci		gpios = <16 GPIO_ACTIVE_HIGH>;
9162306a36Sopenharmony_ci		output-low;
9262306a36Sopenharmony_ci		line-name = "qsgmii-pwrdn-line";
9362306a36Sopenharmony_ci	};
9462306a36Sopenharmony_ci};
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci&main_pmx0 {
9762306a36Sopenharmony_ci	mdio0_pins_default: mdio0-default-pins {
9862306a36Sopenharmony_ci		pinctrl-single,pins = <
9962306a36Sopenharmony_ci			J721E_IOPAD(0x1bc, PIN_OUTPUT, 0) /* (V24) MDIO0_MDC */
10062306a36Sopenharmony_ci			J721E_IOPAD(0x1b8, PIN_INPUT, 0) /* (V26) MDIO0_MDIO */
10162306a36Sopenharmony_ci		>;
10262306a36Sopenharmony_ci	};
10362306a36Sopenharmony_ci};
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci&serdes_ln_ctrl {
10662306a36Sopenharmony_ci	idle-states = <J721E_SERDES0_LANE0_PCIE0_LANE0>, <J721E_SERDES0_LANE1_QSGMII_LANE2>,
10762306a36Sopenharmony_ci		      <J721E_SERDES1_LANE0_PCIE1_LANE0>, <J721E_SERDES1_LANE1_PCIE1_LANE1>,
10862306a36Sopenharmony_ci		      <J721E_SERDES2_LANE0_PCIE2_LANE0>, <J721E_SERDES2_LANE1_PCIE2_LANE1>,
10962306a36Sopenharmony_ci		      <J721E_SERDES3_LANE0_USB3_0_SWAP>, <J721E_SERDES3_LANE1_USB3_0>,
11062306a36Sopenharmony_ci		      <J721E_SERDES4_LANE0_EDP_LANE0>, <J721E_SERDES4_LANE1_EDP_LANE1>,
11162306a36Sopenharmony_ci		      <J721E_SERDES4_LANE2_EDP_LANE2>, <J721E_SERDES4_LANE3_EDP_LANE3>;
11262306a36Sopenharmony_ci};
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci&serdes_wiz0 {
11562306a36Sopenharmony_ci	status = "okay";
11662306a36Sopenharmony_ci};
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci&serdes0 {
11962306a36Sopenharmony_ci	status = "okay";
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci	assigned-clocks = <&serdes0 CDNS_SIERRA_PLL_CMNLC>, <&serdes0 CDNS_SIERRA_PLL_CMNLC1>;
12262306a36Sopenharmony_ci	assigned-clock-parents = <&wiz0_pll1_refclk>, <&wiz0_pll1_refclk>;
12362306a36Sopenharmony_ci	#address-cells = <1>;
12462306a36Sopenharmony_ci	#size-cells = <0>;
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci	serdes0_qsgmii_link: phy@1 {
12762306a36Sopenharmony_ci		reg = <1>;
12862306a36Sopenharmony_ci		cdns,num-lanes = <1>;
12962306a36Sopenharmony_ci		#phy-cells = <0>;
13062306a36Sopenharmony_ci		cdns,phy-type = <PHY_TYPE_QSGMII>;
13162306a36Sopenharmony_ci		resets = <&serdes_wiz0 2>;
13262306a36Sopenharmony_ci	};
13362306a36Sopenharmony_ci};
134