rk3568驱动sz18201

1,首先需要了解sz18201跟rk3568的通讯方式,其实rk3568通过gmac跟phy也就是sz18201通讯,通讯方式有RMII,MII这个详细看手册

2.phy地址,我们需要通过手册得到phy的地址,如果地址不对通讯不上。

3.确认时钟的输入输出,是自己内部给还是主控芯片提供,原理图按照实际硬件来

这里我的硬件接法是两个时钟都是由rk主控提供的,接法简介图,其中晶振提供的是25Mhz的。

4.这些都清楚之后可以配置设备树了,设备树可以参考一部分rk的文档Rockchip_Developer_Guide_Linux_GMAC_Mode_Configuration_CN.pdf,不过不能完全参考,因为rk3568的时钟rmii接法只提供了一个,需要在此基础上进行修改。这里clock_in_out相当于时钟是由谁提供的,output代表时钟由rk主控提供,input代表由phy芯片提供的,这里只是针对于一个时钟TXC这个时钟,晶振的时钟是另外一个引脚,时钟的值的话参考文档,百兆宽带配置的是50MhzTXC,25Mhz的晶振时钟,reset时间就按照rk文档延时即可,正常工作起来的话50Mhz,25Mhz时钟都会有,MDC时钟有通讯的时候才存在,没有通讯的时候都是低电平。

&gmac0 {
        phy-mode = "rmii";
        clock_in_out = "output";
        assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>, <&cru CLK_MAC0_OUT>;
        assigned-clock-parents = <&cru SCLK_GMAC0_RMII_SPEED>;
        assigned-clock-rates = <0>, <50000000>, <25000000>;
        snps,reset-gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
        snps,reset-active-low;
        /* Reset time is 20ms, 100ms for rtl8211f */
        snps,reset-delays-us = <0 20000 100000>;
        pinctrl-names = "default";
        pinctrl-0 = <&gmac0_miim
        &gmac0_tx_bus2
        &gmac0_rx_bus2
        &gmac0_clkinout
        &eth0_pins>;
        tx_delay = <0x3c>;
        rx_delay = <0x2f>;
        phy-handle = <&rmii_phy0>;
        status = "okay";
};

&mdio0 {
        rmii_phy0: phy@1 {
        compatible = "ethernet-phy-ieee802.3-c22";
        reg = <0x1>;
        clocks = <&cru CLK_MAC0_OUT>;
        };
};

5.log打印

2|console:/ # dmesg | grep -i "gmac"
[    1.923520] rk_gmac-dwmac fe2a0000.ethernet: IRQ eth_lpi not found
[    1.923858] rk_gmac-dwmac fe2a0000.ethernet: no regulator found
[    1.923875] rk_gmac-dwmac fe2a0000.ethernet: clock input or output? (output).
[    1.923886] rk_gmac-dwmac fe2a0000.ethernet: TX delay(0x3c).
[    1.923896] rk_gmac-dwmac fe2a0000.ethernet: RX delay(0x2f).
[    1.923919] rk_gmac-dwmac fe2a0000.ethernet: integrated PHY? (no).
[    1.923960] rk_gmac-dwmac fe2a0000.ethernet: cannot get clock clk_mac_ref
[    1.924219] rk_gmac-dwmac fe2a0000.ethernet: init for RMII
[    1.924448] rk_gmac-dwmac fe2a0000.ethernet: User ID: 0x30, Synopsys ID: 0x51
[    1.924464] rk_gmac-dwmac fe2a0000.ethernet: \x09DWMAC4/5
[    1.924476] rk_gmac-dwmac fe2a0000.ethernet: DMA HW capability register supported
[    1.924485] rk_gmac-dwmac fe2a0000.ethernet: RX Checksum Offload Engine supported
[    1.924494] rk_gmac-dwmac fe2a0000.ethernet: TX Checksum insertion supported
[    1.924502] rk_gmac-dwmac fe2a0000.ethernet: Wake-Up On Lan supported
[    1.924571] rk_gmac-dwmac fe2a0000.ethernet: TSO supported
[    1.924583] rk_gmac-dwmac fe2a0000.ethernet: Enable RX Mitigation via HW Watchdog Timer
[    1.924595] rk_gmac-dwmac fe2a0000.ethernet: TSO feature enabled
[    1.924604] rk_gmac-dwmac fe2a0000.ethernet: Using 32 bits DMA width
[   21.039538] rk_gmac-dwmac fe2a0000.ethernet eth0: PHY [stmmac-0:01] driver [YT8512 100M Ethernet] (irq=POLL)
[   21.052695] rk_gmac-dwmac fe2a0000.ethernet eth0: No Safety Features support found
[   21.052725] rk_gmac-dwmac fe2a0000.ethernet eth0: IEEE 1588-2008 Advanced Timestamp supported
[   21.055428] rk_gmac-dwmac fe2a0000.ethernet eth0: registered PTP clock
[   21.067759] rk_gmac-dwmac fe2a0000.ethernet eth0: configuring for phy/rmii link mode
[   23.144059] rk_gmac-dwmac fe2a0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
[   78.876213] rk_gmac-dwmac fe2a0000.ethernet eth0: Link is Down
[   81.917944] rk_gmac-dwmac fe2a0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
[ 2726.715569] rk_gmac-dwmac fe2a0000.ethernet eth0: Link is Down
[ 2954.717547] rk_gmac-dwmac fe2a0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off

这个就是正常的log,如果你遇到什么DMA初始化失败,phy地址识别失败,那么基本上要么时钟没有配对,要么就是你的模式没有配对,注意一点就是rk3568的sz18201驱动是有问题的,如果你的情况是这样子的,识别到了网卡,phy_registers寄存器也能读出来,但是没有link状态,这个时候需要问原厂更新驱动。

鼓励各位多多开源不要,多多分享调试经验,都是打工人,互帮互助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值