This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VH-Q1:如何在 Linux 原生驱动程序中设置 Serdes1、以便将 USXGMII 与 SGMII 进行组合

Guru**** 2553450 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1254003/tda4vh-q1-how-to-set-the-serdes1-for-combing-usxgmii-with-sgmii-in-linux-native-driver

器件型号:TDA4VH-Q1

尊敬的 TI:

我们的板 serdes1连接4 phy ic,MAC0/MAC1 USXGMII 连接 phy,USXGMII 接口参考时钟为156M

MAC2/MAC3 SGMII 连接 PHY,SGMII 接口参考时钟为100M

在 Linux 原生驱动程序中,如何在 DTS 中设置 serdes1 refclock?

我们将 serdes1设置为,打印错误日志

/* SERDES1 USXGMII */
&main_cpsw0_port1 {
	status = "okay";
	phy-mode = "usxgmii";
	mac-address = [00 00 00 00 00 00];
	phys = <&phy_gmii_sel_cpsw0 1>, <&serdes1_usxgmii_link>;
	phy-names = "portmode", "serdes-phy";
	fixed-link {
		speed = <5000>;
		full-duplex;
	};
};

&main_cpsw0_port2 {
	status = "okay";
	phy-mode = "usxgmii";
	mac-address = [00 00 00 00 00 00];
	phys = <&phy_gmii_sel_cpsw0 2>, <&serdes1_usxgmii_link>;
	phy-names = "portmode", "serdes-phy";
	fixed-link {
		speed = <5000>;
		full-duplex;
	};
};

/* SERDES1 SGMII */
&main_cpsw0_port3 {
	status = "okay";
	phy-mode = "sgmii";
	mac-address = [00 00 00 00 00 00];
	phys = <&phy_gmii_sel_cpsw0 3>, <&serdes1_sgmii_link>;
	phy-names = "portmode", "serdes-phy";
	phy-handle = <&cpsw9g_phy2>;
};

&main_cpsw0_port4 {
	status = "okay";
	phy-mode = "sgmii";
	mac-address = [00 00 00 00 00 00];
	phys = <&phy_gmii_sel_cpsw0 4>, <&serdes1_sgmii_link>;
	phy-names = "portmode", "serdes-phy";
	phy-handle = <&cpsw9g_phy3>;
};
&main_cpsw0_mdio {
	bus_freq = <500000>;  //设置500KB
	#address-cells = <1>;
	#size-cells = <0>;
	
	cpsw9g_phy2: ethernet-phy@2 {
		reg = <2>;
		compatible = "ethernet-phy-ieee802.3-c45";
		ethphy-mode = "master";
		ethphy-speed = <1000>;
	};
	
	cpsw9g_phy3: ethernet-phy@3 {
		reg = <3>;
		compatible = "ethernet-phy-ieee802.3-c45";
		ethphy-mode = "master";
		ethphy-speed = <1000>;
	};
}

&serdes_wiz1 {
	status = "okay";
	assigned-clock-parents = <&k3_clks 405 9>;
};

&serdes1 {
	status = "okay";
    serdes1_usxgmii_link: phy@2 {
		reg = <2>;
		cdns,num-lanes = <2>;
		#phy-cells = <0>;
		cdns,phy-type = <PHY_TYPE_USXGMII>;
		resets = <&serdes_wiz1 3>, <&serdes_wiz1 4>;
	};

	serdes1_sgmii_link: phy@3 {
		reg = <0>;
		cdns,num-lanes = <2>;
		#phy-cells = <0>;
		cdns,phy-type = <PHY_TYPE_SGMII>;
		resets = <&serdes_wiz1 1>, <&serdes_wiz1 2>;
	};
};

错误日志为:

[2.419375] cdns-torrent-phy 5070000.serdes:超时等待 CMN 就绪
[ 2.419384] phy phy-5070000.serdes.11: phy 上电失败-->-110
[ 2.420467] am65-cpsw-nuss:c000000的探测器。Ethernet 故障,错误-110