0

我正在阅读 NIC 驱动程序 r8169 的 RTL_ReakTek 驱动程序代码,它执行一些phy寄存器写入/phy config register writing/ 具有这些功能

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代表

用于搬运设备

请解释以上所有这些是什么?以及如何处理它们。

4

1 回答 1

0

PHY 寄存器通过串行管理总线(称为 MDIO、SMI 或 MIIM)上的数据包进行访问,具体取决于您询问的对象。IEEE 803.3 第 22 条定义的该总线上的原始数据包格式支持访问 32 个不同 PHY 地址上的多达 32 个寄存器。前 16 个寄存器由 IEEE 802.3 定义,其余 16 个由 PHY 供应商定义。

如果 PHY 支持超过 32 个寄存器,供应商可以将供应商指定的寄存器之一定义为“页面选择”寄存器,以选择 32 个供应商指定的寄存器的不同组。这就是phy_read_pagedandphy_write_paged函数的作用。他们选择页面,读取或写入寄存器,并恢复原始页面,同时在总线上保持锁定以防止尝试访问寄存器的其他代码干扰。

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

于 2021-02-15T18:30:39.537 回答