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.

[参考译文] PROCESSOR-SDK-J784S4:有关在 J784S4 CPSW9G 上与 SGMII 配合使用的 PHY 的说明

Guru**** 2429800 points
Other Parts Discussed in Thread: DP83869HM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1539377/processor-sdk-j784s4-clarification-on-phys-usage-with-sgmii-on-j784s4-cpsw9g

部件号:PROCESSOR-SDK-J784S4
Thread 中讨论的其他器件:DP83869HM

工具/软件:

关于在 J784S4 CPSW9G 上与 SGMII 配合使用的 PHY 的说明:

我将对通过 SGMII5 连接的 DP83869HM PHY 使用 SGMII 模式(不是 QSGMII 或 USXGMII)、该 PHY 映射到 MAC 端口 5。
在 k3-j784s4-evm-quad-port-eth-exp1.dtso 中、我看到了以下配置:
Phys =<&cpsw0_phy_gmii_sel 5>、<&serdes2_qsgmii_link>;
PHY-NAMES =“MAC",“,"SerDes、"SerDes "“ ";“;
但是、由于我使用的是 SGMII、而不是 QSGMII、因此我想确认以下内容:
根据 phy-gmii-sel.c 驱动程序、我看到 j784s4-cpsw9g-phy-gmii-SEL 仅支持:
静态常量
结构体 phy_gmii_soc_data phy_gmii_sel_cpsw9g_soc_j784s4 ={
.use_of_data = true、
.regfields = phy_gmii_sel_fields_am654、
.extra_mode = bit (PHY_INTERFACE_MODE_QSGMII)|
位 (PHY_INTERFACE_MODE_USXGMII)、
.num_ports = 8、
num_qsgmii_main_ports = 2、
};
static int phy_gmii_sel_mode(结构 phy *phy、枚举 phy_mode、int submode)

结构体 phy_gmii_sel_picy_priv *if_phy = phy_get_drvdata (phy);
const struct phy_gmii_sel_soc_data *soc_data = if_phy->priv->soc_data;
结构设备*dev = if_phy->priv->dev;
结构 regmap_field *regfield;
INT ret、RGMII_id = 0;
u32 gmii_sel_mode = 0;

if (mode != PHY_MODE_Ethernet)
return -EINVAL;

开关(子模式){
用例 PHY_INTERFACE_MODE_RMII:
GMII_SEL_MODE = AM33XX_GMII_SEL_MODE_RMII;
休息;

用例 PHY_INTERFACE_MODE_RGMII:
用例 PHY_INTERFACE_MODE_RGMII_RXID:
GMII_SEL_MODE = AM33XX_GMII_SEL_MODE_RGMII;
休息;

用例 PHY_INTERFACE_MODE_RGMII_ID:
Case PHY_INTERFACE_MODE_RGMII_TXID:
GMII_SEL_MODE = AM33XX_GMII_SEL_MODE_RGMII;
RGMII_id = 1;
休息;

用例 PHY_INTERFACE_MODE_MII:
用例 PHY_INTERFACE_MODE_GMII:
GMII_SEL_MODE = AM33XX_GMII_SEL_MODE_MII;
休息;

案例 PHY_INTERFACE_MODE_QSGMII:
if(!(soc_data->extra_mode 和 bit (PHY_INTERFACE_MODE_QSGMII))))
不支持转到;
if (if_phy->priv->qsgmii_main_ports & bit (if_phy->id –1))
GMII_SEL_MODE = J72XX_GMII_SEL_MODE_QSGMII;
暴露
GMII_SEL_MODE = J72XX_GMII_SEL_MODE_QSGMII_SUB;
休息;

案例 PHY_INTERFACE_MODE_SGMII:
if(!(soc_data->extra_mode & bit (PHY_INTERFACE_MODE_SGMII)))
不支持转到;
暴露
GMII_SEL_MODE = J72XX_GMII_SEL_MODE_SGMII;
休息;

用例 PHY_INTERFACE_MODE_USXGMII:
if(!(SoC_DATA->extra_mode & bit (PHY_INTERFACE_MODE_USXGMII)))
不支持转到;
暴露
GMII_SEL_MODE = J72XX_GMII_SEL_MODE_USXGMII;
休息;

默认值:
不支持转到;
}

if_phy->phy_if_mode =子模式;

DEV_dbg (dev、“%s id:%u 模式:%u RGMII_id:%d rmii_clk_ext:%d\n“、
__func__、if_phy->id、submode、rgmii_id、
if_phy->rmi_clock_external);

regfield = if_phy->fields[PHY_GMII_SEL_PORT_MODE];
RET = regmap_field_write (regfield、gmii_sel_mode);
if (ret){
dev_err (dev、“port%u: set mode fail %d“、if_phy->id、ret);
返回 ret;
}

if (SoC_DATA->功能与位 (PHY_GMII_SEL_RGMII_ID_MODE)&&
if_phy->fields[PHY_GMII_SEL_RGMII_ID_MODE]){
regfield = if_phy->fields[PHY_GMII_SEL_RGMII_ID_MODE];
RET = regMAP_FIELD_WRITE (regfield、RGMII_id);
IF (RET)
返回 ret;
}

if (SoC_DATA->功能与位 (PHY_GMII_SEL_RMII_IO_CLK_EN)&&
if_phy->fields[PHY_GMII_SEL_RMII_IO_CLK_EN]){
regfield = if_phy->fields[PHY_GMII_SEL_RMII_IO_CLK_EN];
RET = regmap_field_write (regfield、
if_phy->rmi_clock_external);
}

返回 0;

不支持:
DEV_warn (dev、“port%u:不支持的模式:\“%s\"\n",“,</s>“ 、
if_phy->id、phy_modes (submode);
return -EINVAL;
}
j784s4 是否支持 SGMII?
使用 SGMII 时、我可以安全地从 DTS 中的 CPSW 端口节点丢弃以下两行吗?
Phys =<&cpsw0_phy_gmii_sel 5>、<&serdes2_sgmii_link>;
PHY-NAMES =“MAC",“,"SerDes、"SerDes "“ ";“;
仅为端口定义 phy-handle 和 phy-mode =“SGMII"是否“是否足够、如果需要、是否可以选择使用串行器/解串器基准?
&main_cpsw0_port5{
状态=“正常“;
PHY-MODE =“SGMII";“;
phy-handle =<&main_phy3>;
//可选:phys =<&serdes2_sgmii_link>;
};


只需确保在使用纯 SGMII 模式时、不会错过 GMII_SEL 路径的任何副作用。

提前感谢您的澄清!

此致、
B.Apuroop Kumar