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:CPSW-9G 的 SGMII 配置

Guru**** 2571305 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1392179/tda4vh-q1-sgmii-configuration-of-cpsw-9g

器件型号:

工具与软件:

您好!

 SDK 版本:09.02.0.05

  参考链接:  

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1385154/am69-sgmii-not-working-with-dp83867is/5316274#5316274

 我们将 serdes2 lane2配置为 SGMII 7。

我的设备树配置:

 

// SPDX-License-Identifier: GPL-2.0
/**
 * DT Overlay for CPSW9G in QSGMII mode using J7 Quad Port ETH EXP Add-On Ethernet Card with
 * J7AHP board. The Add-On Ethernet Card has to be connected to ENET Expansion 1 slot on the
 * board.
 *
 * Product Datasheet: www.ti.com/.../spruj74.pdf
 * Product Link: www.ti.com/.../J721EXENETXPANEVM
 *
 * Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
 */

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/mux/ti-serdes.h>
#include <dt-bindings/phy/phy-cadence.h>
#include <dt-bindings/phy/phy.h>

#include "k3-pinctrl.h"

&{/} {
	aliases {
		ethernet1 = "/bus@100000/ethernet@c000000/ethernet-ports/port@5";
		ethernet2 = "/bus@100000/ethernet@c000000/ethernet-ports/port@6";
		ethernet3 = "/bus@100000/ethernet@c000000/ethernet-ports/port@7";

	};
};

&main_cpsw0 {
	status = "okay";
};

&main_cpsw0_port7 {
	status = "okay";
	phy-handle = <&cpsw9g_phy0>;
	phy-mode = "sgmii";
	mac-address = [00 00 00 00 00 00];
	phys = <&cpsw0_phy_gmii_sel 7>, <&serdes2_qsgmii_link>;
	phy-names = "mac", "serdes";
};


&main_cpsw0_mdio {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&mdio0_pins_default>;
	bus_freq = <1000000>;
	reset-gpios = <&exp2 17 GPIO_ACTIVE_LOW>;
	reset-post-delay-us = <120000>;
	#address-cells = <1>;
	#size-cells = <0>;

	cpsw9g_phy0: ethernet-phy@16 {
		reg = <0>;
	};
};

&exp2 {
	/* Power-up ENET1 EXPANDER PHY. */
	qsgmii-line-hog {
		gpio-hog;
		gpios = <16 GPIO_ACTIVE_HIGH>;
		output-low;
	};
	/* Toggle MUX2 for MDIO lines */
	mux-sel-hog {
		gpio-hog;
		gpios = <13 GPIO_ACTIVE_HIGH>, <14 GPIO_ACTIVE_HIGH>, <15 GPIO_ACTIVE_HIGH>;
		output-high;
	};
};

&main_pmx0 {
	mdio0_pins_default: mdio0-pins-default {
		pinctrl-single,pins = <
			J784S4_IOPAD(0x05c, PIN_INPUT, 4) /* (AC36) MCASP2_AXR0.MDIO1_MDIO */
			J784S4_IOPAD(0x058, PIN_INPUT, 4) /* (AE37) MCASP2_AFSX.MDIO1_MDC */
		>;
	};
};

&serdes_ln_ctrl {
	idle-states = <J784S4_SERDES0_LANE0_PCIE1_LANE0>, <J784S4_SERDES0_LANE1_PCIE1_LANE1>,
		      <J784S4_SERDES0_LANE2_IP3_UNUSED>, <J784S4_SERDES0_LANE3_USB>,
		      <J784S4_SERDES1_LANE0_PCIE0_LANE0>, <J784S4_SERDES1_LANE1_PCIE0_LANE1>,
		      <J784S4_SERDES1_LANE2_PCIE0_LANE2>, <J784S4_SERDES1_LANE3_PCIE0_LANE3>,
		      <J784S4_SERDES2_LANE0_QSGMII_LANE5>, <J784S4_SERDES2_LANE1_QSGMII_LANE6>,
		      <J784S4_SERDES2_LANE2_QSGMII_LANE7>, <J784S4_SERDES2_LANE3_QSGMII_LANE8>;
};

&serdes_wiz2 {
	status = "okay";
};

&serdes2 {
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;

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

&main_cpsw0_port7{
状态="正常";
phy-handle =<&cpsw9g_phy0>;
PHY 模式="SGMII";
MAC-ADDRESS =[00 00 00 00];
phys =<&cpsw0_phy_gmii_sel 7>、<&serdes2_qsgmii_link>;
PHY-NAMEs ="MAC"、"SerDes";
};

节点的 PHY 模式会导致以下错误。

日志显示:

[2.687623] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA03102, cpsw version 0x6BA82902 Ports: 9 quirks: 000000000000
[ 2.700322] phy-gmii-sel 104044.phy:phy_gmii_sel_of_xlate id:7 ext:139780624
[ 2.701486] phy-gmii-sel 104044.phy:端口7:不支持的模式:"SGMII"

我检查了驱动程序 phy-gmii-sel.c

静态常量
结构 phy_gmii_sel_soc_data phy_gmii_sel_cpsw9g_soc_j784s4 ={
  .use_of_data = true、
  .regfields = phy_gmii_sel_fields_am654、
  .extra_modes = bit (PHY_INTERFACT_MODE_QSGMII)|
   位(PHY_INTERFACE_MODE_USXGMII)、
   .NUM_PORTS = 8、
   .num_qsgmii_main_ports = 2、
};

似乎只有 j784s‘s EXTRA_MODES 不支持 SGMII。 在选择模式后、程序会退出。

	case PHY_INTERFACE_MODE_QSGMII:
		if (!(soc_data->extra_modes & BIT(PHY_INTERFACE_MODE_QSGMII)))
			goto unsupported;
		if (if_phy->priv->qsgmii_main_ports & BIT(if_phy->id - 1))
			gmii_sel_mode = J72XX_GMII_SEL_MODE_QSGMII;
		else
			gmii_sel_mode = J72XX_GMII_SEL_MODE_QSGMII_SUB;
		break;

	case PHY_INTERFACE_MODE_SGMII:
		if (!(soc_data->extra_modes & BIT(PHY_INTERFACE_MODE_SGMII)))
			goto unsupported;
		else
			gmii_sel_mode = J72XX_GMII_SEL_MODE_SGMII;
		break;

 电流驱动器不支持 SGMII?

谢谢

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

    我有 alleady 添加这些补丁, eth1可以创建,但我们不能 ping . 请检查我的设备树、谢谢!

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

    您好!

    请共享设备树、引导日志和以下内容的输出:
    devmem2 0x0502e000

    此致、
    Siddharth。

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

    您好!

    "serdes2"中的"resets"属性应为"<&SerDes_fiz2 4>"。 请检查此更改。

    完成此更改后、您还可以共享"ethtool eth1"的输出

    此致、
    Tanmay

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

    您好,我们使用 SERDES2 lane2 ,这是什么意思 ? 我们将在稍后进行测试并反馈、谢谢。

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

    您好!

    但在器件树中、您提到了 SerDes 的"reg"属性为<3>。 这意味着您使用的是 SerDes 2通道3。

    基本上、reg 属性是协议的起始通道号、CDN、num-Lanes 是正在使用的通道数。 因此、如果您要在 SerDes 2通道2中仅使用一个通道、则 reg 属性应为<2>、而 CDN、num-Lanes 应为<1>。

    reset 属性是各个通道的 RESET 信号。 您应该会对该子节点中使用的所有通道进行重置。 要使用的复位索引为<[0-indexed lane number + 1]>。 因此、对于 SerDes 2通道2、重置将为 <& SerDes_wiz2 3>、对于 SerDes 2通道3、重置将为 <& SerDes_wiz2 4>。

    有关 串行器/解串器的更多详细信息、请参阅此页。

    此致、
    Tanmay

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

    感谢您的帮助、

    我们需要对评估的8个 TH 端口使用 SERDES1、SERDES2、SERDES4。

    我们是否应该修改 k3-j784s4-main.dtsi?  我们怎么能做到这一点?     k3-j784s4-main.dtsi 中只有 SERDES0 SERDES1 SERDES2; 我们是否应修改其他文件?

    serdes_ln_ctrl:mux-controller@4080{

    ...

    mux-reg-masks =<0x4080 0x3>、<0x4084 0x3>、/* SERDES0 lane0/1 SELECT */

                   …

                   <0x40a8 0x3>、<0x40ac 0x3>;/* SERDES2 lane2/3 SELECT */

    }

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

    大家好、Sid、Tanmay、

    此应用需要扩展8个 SGMII 以太网端口、因此需要将 SerDes 4配置为 SGMII。 请提供 DTS 配置示例、在制作 PCB 之前需要验证特性、硬件正在等待测试结论。

    @Chen Chen

    同时、请参阅以下帖子:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1256003/tda4vh-q1-usb3-0-connected-serdes4-lane3-cannot-init

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

    您好!

    [报价 userid="35100" URL"~/support/processors-group/processors/f/processors-forum/1392179/tda4vh-q1-sgmii-configuration-of-cpsw-9g/5349754 #5349754"]由于此应用需要扩展8个 SGMII 以太网端口、因此需要将 SerDes 4配置为 SGMII。 请提供示例 DTS 配置[/报价]

    无法在 EVM 上进行测试、因为 serdes4的连接不可用于以太网。 因此、我可为您提供参考器件树文件、但您无法在 EVM 上对其进行测试。

    如果您想查看参考器件树文件、请告诉我。

    此致、
    Tanmay

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

    您好、Tanmay、

    如果您想查看参考设备树文件、请告诉我。

    是的、如有必要、我们可以在客户的修改版 EVM 电路板上一起进行调试。  

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

    您好、Chen

      此问题现在是否已解决?

     此致

      Semon