3576 Android14GKI下适配YT8531

一、网卡简介

YT8531C-CA是一款高度集成的以太网收发器,符合 10BASE-Te、100BASE-TX 和 1000BASE-T IEEE 802.3 标准。

提供了通过 CAT5E UTP 电缆传输和接收以太网数据包所需的所有物理层功能。

二、代码配置

RK源码已经对YT8531C-CA进行过适配,GKI下只用在dts配置一下GMAC、给上供电就行;GMAC配置直接参考rk的rk3576-evb1.dtsi或者rk3576-evb2.dtsi就行,例如:

&gmac1 {
	/* Use rgmii-rxid mode to disable rx delay inside Soc */
	phy-mode = "rgmii-rxid";
	clock_in_out = "output";

	snps,reset-gpio = <&gpio2 RK_PB4 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 = <&eth1m0_miim
		     &eth1m0_tx_bus2
		     &eth1m0_rx_bus2
		     &eth1m0_rgmii_clk
		     &eth1m0_rgmii_bus
			 &ethm0_clk1_25m_out>;

	tx_delay = <0x20>;
	/* rx_delay = <0x3f>; */

	phy-handle = <&rgmii_phy1>;
	status = "okay";
};

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

注意:

1)上面的配置是3576的,3588上面一些配置命名会有所不同;

2)DTS中GMAC和MDIO是绑定关系,即GMAC0⽤MDIO0,GMAC1⽤MDIO1,不要乱搭使用;

3)clock_in_out不要乱配,125M是主控给的就配output,是phy给的就配input;

4)&ethm0_clk1_25m_out和 clocks = <&cru REFCLKO25M_GMAC1_OUT>这两个东西配不配取决于25M的时钟是phy的,还是外部加的,如果是phy的就不用配,直接看原理图有没有上25M的晶振。

三、问题排查

1、GPIO复用

出现这种问题,一般看不到gmac的相关内核打印;

需要自行cat pinmux-pins与原理图对应;

2、Cannot attach to PHY 以太⽹初始化失败

开机 log 上出现打印:No PHY found 或者 Cannot attach to PHY 表示初始化失败、找不到phy设备;

可以排查以下几个地方:

1)PHY 供电是否正常

2)Reset IO 配置不正确;

3)MDC 时钟频率是否存在且⼩于 2.5M;

4)MDIO有没有波形,用示波器的触发模式去抓,上电会发2段读操作的波形;

若log中还出现 MDIO device at address 2 is missing.类似的打印;则标明phy硬件address跟软件不匹配导致;phy硬件address原理图可以看到,如下:

可以排查以下几个地方:

1)改成通⽤⼴播地址 0 试试看;

2)网卡芯片11管脚的AVDD33是否真正拉高了,如果是2.几V或者更低,也会出现这种情况;

3)dts配置的snps,reset-delays-us = <0 20000 100000>;拉低看中间的数值,当前20ms ,即示波器观察低电平时间应该为20ms,在1~3s范围慢慢加延时验证;

3、有网络节点但网络不通

log正常⽆报错且ifconfig也有节点出来,但是⽹络却不通也没有IP;

1)先看百兆网络是不是正常的;多数情况是硬件配置错误或者DTS有误;按照第二点代码配置好好排查一下;

2)如果百兆正常,千兆不行,那大概率是tx、rxdelay的问题,可以按照RK的文档⽂档扫下回环,⽂档:Rockchip_Developer_Guide_Linux_GMAC_RGMII_Delayline_CN.pdf;

但是这个文档很旧,可以直接去改dts的gamc节点里面的 tx_delay = <0x20>;rx_delay = <0x3f>; 先慢慢加减tx_delay ,单刷内核快速验证;一般来说,参考RK的dts移植不会有问题,YT8531的tx_delay 直接用0x20就行;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值