什么是 "phy_write_paged" 函数中的 phy 页(物理 layer/phy 寄存器)

What are phy page (physical layer/phy register) as in "phy_write_paged" function

我正在阅读 RTL_ReakTek driver NIC driver r8169 的代码,它执行一些 phy 寄存器 writing/phy 配置寄存器写入/具有这些功能

pci_write_config_byte(tp->pci_dev, PCI_LATENCY_TIMER, 0x40);// 肯定是为了phy config register write/ 但是什么是phy_write_paged/

有记忆页吗?在操作系统的物理层处理中,如果是,请告诉我它是否与用于将虚拟内存映射到内核内存的内核页面的概念相同。我假设 driver 需要用

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 个寄存器,供应商可以将供应商指定的寄存器之一定义为“页面 select”寄存器,以 select 32 个供应商指定寄存器的不同组.这就是 phy_read_pagedphy_write_paged 函数的作用。他们 select 页面,读取或写入寄存器,并恢复原始页面,同时持有总线上的锁以防止来自其他试图访问寄存器的代码的干扰。

IEEE 802.3 的后来修订版在第 45 条中定义了 MDIO 数据包格式的可选扩展,允许 32 个 PHY 地址中的每一个最多支持 32 个设备地址(不同的地址用于不同的定义用途)每个设备地址最多 65536 个“MMD”寄存器。更晚的修订定义了原始 Clause 22 寄存器的寄存器 13 和 14 用于间接访问 MMD 寄存器。 phy_read_mmdphy_write_mmd 函数用于访问这些 MMD 寄存器(如果支持)。一些 PHY 芯片可能直接支持 Clause 45,其他可能使用 Clause 22 寄存器 13 和 14 访问 MMD 寄存器,其他可能有一些自定义方式来访问 MMD 寄存器,还有一些可能根本不支持 MMD 寄存器。 phy_read_mmdphy_write_mmd 处理访问 MMD 寄存器的方法的差异。