如何解决什么是“phy_write_paged”函数中的phy页面物理层/phy寄存器
我正在读取 NIC 驱动程序 r8169 的 RTL_ReakTek 驱动程序代码,它执行一些 phy
寄存器写入/phy 配置寄存器写入/具有类似这些功能
pci_write_config_byte(tp->pci_dev,PCI_LATENCY_TIMER,0x40);
// 必须是 phy config register write/ 但什么是 phy_write_paged
/
有内存页吗?在操作系统的物理层处理中,如果是,请告诉我它是否与用于将虚拟内存映射到内核内存的内核页面的概念相同。我假设驱动程序需要做
MMIO registers
Phy registers
Phy Config registers
PHY Paged memory
表示
用于搬运设备
请解释以上所有这些是什么?以及如何处理它们。
解决方法
PHY 寄存器通过称为 MDIO、SMI 或 MIIM 的串行管理总线上的数据包访问,具体取决于您询问的对象。 IEEE 803.3 第 22 条定义的该总线上的原始数据包格式支持访问多达 32 个不同 PHY 地址上的 32 个寄存器。前 16 个寄存器由 IEEE 802.3 定义,其余 16 个由 PHY 供应商定义。
如果 PHY 支持 32 个以上的寄存器,供应商可以将供应商指定的寄存器之一定义为“页面选择”寄存器,以选择不同的 32 个供应商指定寄存器组。这就是 phy_read_paged
和 phy_write_paged
函数所做的。他们选择页面,读取或写入寄存器,并恢复原始页面,同时在总线上保持锁定以防止试图访问寄存器的其他代码的干扰。
IEEE 802.3 的后续修订版在第 45 条中定义了 MDIO 数据包格式的可选扩展,允许 32 个 PHY 地址中的每一个支持多达 32 个设备地址(不同的地址用于不同的、定义的用途)最多每个设备地址有 65536 个“MMD”寄存器。更晚的修订版定义了原始第 22 条寄存器的寄存器 13 和 14,用于间接访问 MMD 寄存器。 phy_read_mmd
和 phy_write_mmd
函数用于访问这些 MMD 寄存器(如果支持)。一些PHY芯片可能直接支持Clause 45,其他的可能使用Clause 22的寄存器13和14来访问MMD寄存器,其他的可能有一些自定义的方式来访问MMD寄存器,还有一些可能根本不支持MMD寄存器。 phy_read_mmd
和 phy_write_mmd
处理访问 MMD 寄存器的方法的差异。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。