LS1028 使用serdes mode 99BB软件修改方案

LS1028开发板引入了【复位控制字】Reset configuration word (RCW)的配置方法,通过这种配置方法客户可以方便的进行引脚的功能定义,也就是实现引脚的PinMUX功能。
LS1028平台所特有的SerDes Module也是要通过RCW来进行配置,从而将不同的SerDes通道选择为不同的功能。LS1028有一组SerDes
在这里插入图片描述
在这里插入图片描述

修改需求

LS1028现在的SerDes mode为:8 5 B E,一路SGMII,四路QSGMII,一路PCIE,一路SATA
在这里插入图片描述
目前有一种需求需要使用两路SGMII,查看CPU手册可以看到99BB模式可以符合该需求
在这里插入图片描述
那么接下来我们将以此为例进行修改配置

代码修改

第一步修改RCW
LS1028 RCW配置文件在源码中的位置:

packages/firmware/rcw/ls1028ardb/R_SQPP_0x85bb/rcw_1500_gpu600.rcw

修改RCW配置为99BB,分别修改SRDS_PRTCL_S1_L0、L1、L2、L3的值,此处需要将16进制转化为10进制换算,如99BB的十进制为9、 9、11、11

SRDS_PRTCL_S1_L0=9
SRDS_PRTCL_S1_L1=9
SRDS_PRTCL_S1_L2=11
SRDS_PRTCL_S1_L3=11

第二步修改uboot设备树
SGMII PHY芯片的实际PHY地址分别为:SGMII0:1、SGMII1:2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
uboot设备树路径:

packages/firmware/u-boot/arch/arm/dts/fsl-ls1028a-rdb.dts
&enetc0 {
-       status = "okay";
-       phy-mode = "sgmii";
-       phy-handle = <&rdb_phy0>;
+       status = "disabled";
 };
 
 &ethsw_ports {
        port@0 {
                status = "okay";
-               phy-mode = "qsgmii";
+               phy-mode = "sgmii";
                phy-handle = <&sw_phy0>;
        };
        port@1 {
                status = "okay";
-               phy-mode = "qsgmii";
+               phy-mode = "sgmii";
                phy-handle = <&sw_phy1>;
        };
-       port@2 {
-                status = "okay";
-               phy-mode = "qsgmii";
-                phy-handle = <&sw_phy2>;
-        };
-        port@3 {
-                status = "okay";
-               phy-mode = "qsgmii";
-               phy-mode = "sgmii";
-                phy-handle = <&sw_phy3>;
-        };
};
 
 &mdio0 {
        status = "okay";
-       rdb_phy0: phy@2 {
-               reg = <2>;
-       };
 
-       sw_phy0: phy@8 {
-               reg = <0x08>;
+       sw_phy0: phy@1 {
+               reg = <0x01>;
        };
-       sw_phy1: phy@9 {
-               reg = <0x09>;
+       sw_phy1: phy@2 {
+               reg = <0x02>;
        };
-       sw_phy2: phy@a {
-               reg = <0x0a>;
        };
-       sw_phy3: phy@b {
-               reg = <0x0b>;

        };
 };

第三步修改内核设备树
内核设备树路径:

packages/linux/linux/arch/arm64/boot/dts/freescale/OK1028A-C.dts
-&enetc_port0 {
-        phy-handle = <&sgmii_phy0>;
-        phy-connection-type = "sgmii";
-        mdio {
-                #address-cells = <1>;
-                #size-cells = <0>;
-                sgmii_phy0: ethernet-phy@2 {
-                        reg = <0x2>;
-                };
-        };
-};
&enetc_mdio_pf3 {
-        qsgmii_phy1: ethernet-phy@08 {
-                reg = <0x08>;
-        };

-        qsgmii_phy2: ethernet-phy@09 {
-                reg = <0x09>;
-        };

-        qsgmii_phy3: ethernet-phy@0a {
-                reg = <0x0a>;
-        };

-       qsgmii_phy4: ethernet-phy@0b {
-                reg = <0x0b>;
-        };
       
 sgmii_phy1: ethernet-phy@01 {
                reg = <0x01>;
        };
       
 sgmii_phy2: ethernet-phy@02 {
                reg = <0x02>;
        };

};
/* l2switch ports */
&mscc_felix_ports {
        port@0 {
                status = "okay";
                phy-handle = <&sgmii_phy1>;
                phy-mode = "sgmii";
                managed = "in-band-status";
        };

        port@1 {
                status = "okay";
                phy-handle = <&sgmii_phy2>;
                phy-mode = "sgmii";
                managed = "in-band-status";
        };

-        port@2 {
-                status = "okay";
-                phy-handle = <&qsgmii_phy3>;
-                phy-mode = "qsgmii";
-                managed = "in-band-status";
-        };

-        port@3 {
-                status = "okay";
-                phy-handle = <&qsgmii_phy4>;
-                phy-mode = "qsgmii";
-                managed = "in-band-status";
-        };
};

第四步 编译烧写验证
生成的设备节点分别为swp0、swp1,网卡可以正常ping通,至此使用双SGMII软件修改成功
在这里插入图片描述

补充知识

1028的以太网子系统

以太网子系统由两部分组成:一个以太网控制器(ENETC)和一个支持tsn的以太网交换机。ENETC有两个外部以太网端口,两个内部端口连接到交换机,以及作为一个PCI Root Complex Cortex-A72 cpu的集成终端,与ENETC和支持tsn的以太网交换机交互。支持tsn的以太网交换机共有6个端口——4个外部以太网端口,外加2个内部连接ENETC的端口用于交换机数据和管理/控制功能。
在这里插入图片描述

SerDes protocol notation

SGMII -T与SGMII -S的区别
T表示所有的SGMII 2.5G-T和SGMII 1G-T协议都连接到ENETC (Ethernet network controller)的2.5G支持端口上。任何时候只能使用一种协议,因为它们都来自一个端口。
S表示所有SGMII 2.5G-S和SGMII 1G-S协议接入TSN Switch mac。它们不能与多mac协议同时支持,因为它们重用相同的TSN Switch mac。
在这里插入图片描述
QSGMII/10G-SXGMII/10G-QXGMII的区别
-多mac协议(10G-QXGMII和QSGMII)的所有mac都连接到TSN Switch mac上。
-10G-QXGMII允许4台TSN Switch mac共享一个SerDes车道,协商速度高达2.5 Gbps /台
链接。连接4个交换机端口,支持每个端口协商速率为10M / 100M / 1G / 2.5G。
-10G-SXGMII允许端口0协商高达2.5 Gbps的速度。连接到支持2.5G容量的端口0
可支持10M、100M、1G或2.5 G的协商速率。
在这里插入图片描述

1028 SerDes module在芯片上的实现

SerDes配置的SGMII -T是连接到ENETC的port0,SGMII-S是连接到TSN Switch上的;
在这里插入图片描述

Ethernet Ports

在这里插入图片描述

Ethernet Port Interface Support

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值