设备树中DP83867相关宏定义的含义、来源及配置方法
DP83867设备树宏定义与配置说明
宏的实际取值与定义来源
你在数据手册里找不到这些宏名是正常的,这类ti,前缀的DP83867专用配置宏,是Linux内核为了降低设备树编写难度封装的可读常量,不是TI官方手册里的原生定义,所有宏都定义在内核源码的include/dt-bindings/net/ti-dp83867.h头文件中,编译设备树时会自动引用这个头文件把宏替换为实际数值。
你问的三个宏在主流稳定内核版本中的对应实际取值如下:
DP83867_RGMIIDCTL_2_25_NS:对应RGMII接收方向2.25ns内部延时DP83867_RGMIIDCTL_2_75_NS:对应RGMII发送方向2.75ns内部延时DP83867_PHYCR_FIFO_DEPTH_4_B_NIB:对应PHY内部FIFO深度配置为4个半字节(2字节)
注:不同内核版本的宏定义可能存在细微差异,务必以你当前编译使用的内核源码中对应头文件的定义为准,不要直接照搬其他版本的数值。
DP83867手册里其实已经给出了这些值对应的寄存器规则:
- RGMII延时配置在RGMIIDCTL寄存器(地址0x32),以固定步进调整延时长度,可选覆盖0.25ns~4.0ns范围
- FIFO深度配置在PHYCR寄存器(地址0x10)的bit12bit13位,可选14个半字节深度
只是手册里没有使用Linux内核的宏命名方式,所以直接搜宏名找不到对应说明。
这类寄存器的配置修改方法
- 头文件引用要求:如果你的设备树dts文件要使用这些宏,必须在文件头部添加
#include <dt-bindings/net/ti-dp83867.h>,否则编译时会报宏未定义错误。 - RGMII延时配置原则:你当前使用的
rgmii-id模式要求PHY侧同时提供RX、TX方向的内部延时,你现在用的RX 2.25ns、TX 2.75ns是工业级板卡最常用的通用配置,绝大多数场景下可以直接稳定运行。如果遇到链路不通、丢包、吞吐量不达标的问题,可以以0.25ns为步进微调两个方向的延时值,每次修改后重新编译烧录设备树,测试链路稳定性直到找到最优值。 - FIFO深度配置原则:这个参数用于适配MAC与PHY之间的时钟偏差,默认4个半字节深度的兼容性最好,除非你在内核日志里看到明确的FIFO溢出、欠载或者报文错位错误,否则不需要修改这个参数。
- 特殊属性说明:你配置里的
ti,dp83867-rxctrl-strap-quirk是用来兼容部分板卡RX_CTRL引脚硬件strap配置不符合芯片要求的场景,如果你的板卡硬件设计严格遵循了DP83867的参考设计,这个属性可以不添加。
你给出的整段GEM3以太网控制器的设备树配置是DP83867 RGMII-ID模式下的标准参考配置,没有语法问题,可以作为基础配置使用。
内容的提问来源于stack exchange,提问作者user2532296
相关产品推荐
相关产品推荐

