This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DP83867IS:Linux 驱动程序支持从 ACPI 表中检索设置和参数

Guru**** 2481465 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1432704/dp83867is-linux-driver-supports-retrieving-settings-and-parameters-from-acpi-tables

器件型号:DP83867IS

工具与软件:

团队、  

我的客户正在使用运行 Linux 的 Intel x86平台通过 SGMII 接口连接和控制 DP86867。  

关于 Linux 驱动程序有两个问题。  

1.为了在 Linux 启动前更改 LED 寄存器以进行当前设置、客户将 通过 BIOS 中的 MDIO 将 LED 寄存器设置为0x18 = 0xb56和0x19 = 0x444、并且运行正常。  

但是、在 x86启动 Linux 后、我们发现 DP83867驱动程序将通过 SGMII 发送重置推荐、以将 DP83867重置为默认值。 客户可以通过硬编码来重新修改 LED 寄存器设置、但他们想知道是否有可在 Linux 驱动程序中设置的配置文件或设置文件来设置正确的 LED 设置? 客户声称 x86 Linux 中没有 DTS。  

产生此请求的原因是、如果客户从社区更新 DP83867驱动程序、并且他们需要保持设置一致且不更改该设置。  

修改 LED 寄存器的建议方式是什么?  

2. Linux 驱动程序是否支持从 ACPI 表中检索设置和参数?  

BR、丰富  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Rich!

    感谢您提交问题、我很乐意提供帮助。 首先、我想让您了解一下我们的 Github、您可以在这里找到 我们最新的驱动程序。

    您能告诉我更多有关此评论的信息吗?

    [报价用户 id="9853" url="~/support/interface-group/interface/f/interface-forum/1432704/dp83867is-linux-driver-supports-retrieving-settings-and-parameters-from-acpi-tables ]DP83867驱动程序将通过 SGMII 发送重置推荐以将 DP83867重置为默认值[/QUOT]

    我想确认的是、您说的是在加载 Linux 后、PHY 会通过 SGMII 向 SoC 发送复位命令、在这里对 PHY 应用引脚复位? "你怎么知道的? 驱动程序不应修改 LED 寄存器、客户在 BIOS 中写入寄存器的实现应该可以正常工作。

    不管 PHY 是否复位(即复位引脚上的低信号)、所有寄存器值都将恢复为默认自举设置。  

    Eric Ding 说:
    2. Linux 驱动程序是否支持从 ACPI 表中检索设置和参数?[/QUOT]

    驱动程序不支持此功能。

    此致、

    Alvaro

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Alvaro,  

    1.在 x86上启动 Linux 时、我们在 Linux 驱动程序中添加调试日志、发现 RESET 命令将通过 SGMII 从 x86发送到 DP83867、因此 DP83867中的所有寄存器均已复位。 这不是用于复位 DP83867的硬件引脚、我们已确认 RESET 引脚状态不大可能。

    2.感谢您的确认。  

    BR、丰富  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rich:

    感谢您的确认。 在 x86引导至 Linux 之前和之后是否可以读取 PHY 的寄存器? 我需要了解在电路板启动期间寄存器进行复位的位置。 下面是测试程序。

    • 读取寄存器0x0 - 0x1F、0x6E 和0x6F  
      • BIOS 初始化期间
      • 下载到 Linux 内核之后
        • 读取内核寄存器后、您可以写入寄存器0x1F = 8000吗
          • 这是 PHY 中的数字重新启动、会将所有寄存器恢复为默认的捆绑状态
        •  运行命令:
          • ifconfig  接口关闭
          • ifconfig  接口启动
            • 接口可以是 eth0 (无论系统中有哪个 DP83867)、可以通过运行以下命令来确认:
              • dmesg | grep mdio
            • 该命令的目的是重新加载驱动程序、以查看它是否对默认值进行了任何更改(通过运行寄存器0x1F = 8000获取)

    您能否在如下表格中捕获请求的数据? 这将使查看更改更容易。

    注意:寄存器0x6E 和0x6F 是 扩展寄存器、 有关更多信息、请参阅数据表中的第7.4.2.1.3节。  

    非常重要

    电路板状态

    Linux 从 BIOS 启动之前

    Linux 内核

    寄存器0x1F=8000后的 Linux 内核

    ifconfig down/up 后的 Linux 内核

    0x0

     

     

     

     

     

     

    0x1F

     

     

     

    0x6E

     

     

     

    0x6F

     

     

     

    此致、

    Alvaro

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvaro:

    我们在 dp83867驱动程序中添加了一些调试消息、以便在进入驱动程序初始化函数"dp83867_of_init"时读取 LED 寄存器值。 这些值与 BIOS 中配置的值相匹配。 但是、在进入驱动器的复位功能"dp83867_phy_reset"时、LED 寄存器值恢复为其默认设置。

    在"dp83867_phy_reset"中、驱动程序将寄存器0x1F 的位15写入1。 根据数据表、这将启动完全复位、包括复位所有寄存器。

    我们在没有 DTS 的 x86 Linux 系统上工作、因此我们在 BIOS 阶段配置 LED 设置。 遗憾的是、这些设置在"dp83867_phy_reset"之后丢失

    要解决该问题、驱动程序可能需要在执行"软件复位"之前检查寄存器设置、存储当前设置、然后在复位完成后恢复它们。 请提供建议。 谢谢!

    此致、
    艾米·施
    Advantech ICVG x86软件
    02-7732-3399分机1249.  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Amy、

    感谢您确认、这就是问题所在。 Github 上的 DP83867驱动程序 (见下方链接)不会设置寄存器0x1F 的位15。

    但是、 Kernel.org 上提供的驱动程序 具有您所描述的重置功能。 下面的屏幕截图来自 Kernel.org 链接。

    这是一个非常简单的修复、只需要更改一个变量! 请在下面找到说明。

    1. 确认您要使用的驱动程序已声明以下两个宏: DP83867_SW_RESET 和  DP83867_SW_RESTART
    2. 在 phy_reset 函数中、将 DP83867_SW_RESET 更改为  DP83867_SW_RESTART
    3. 确保在测试之前重新编译文件

    此致、

    Alvaro

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvaro:

    感谢您的跟进。

    我在 Kernel.org 上`D 了` ip83867.c 的日志、并发现提交的"net: phy:dp83867:execute soft reset and retain stabled" 链接 引入了`"DP83867_SW_RESTON"`。 但是、后续提交"恢复'net:phy:dp83867:执行软复位并保留已建立 链路"链接 回滚至`"DP83867_SW_RESET"`、导致完全复位、包括寄存器。

    我们的客户更喜欢不使用硬编码或重建驱动程序、作为解决此问题的权变措施。 根据您的说明、执行"DP83867_SW_RESET"可能不是正确的操作。 在这种情况下、最佳解决方案是 TI 将更新的驱动程序上行到 Kernel.org。 能否告诉我这是否可行? 谢谢!

    此致、
    艾米·施
    Advantech ICVG x86软件
    02-7732-3399分机1249.  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Amy、

    我的团队目前正在学习上游流程。 我们最终会将所有最新的驱动程序推送到 kernel.org、之前这是由第三方完成的。 很遗憾、驱动程序还需要一些时间才能上传到主线内核。  

    此致、

    Alvaro

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvaro:

    感谢您的跟进。
    目前、我们将使用 GitHub 中的 DP83867驱动程序。 同时、请告知我们该驱动程序何时已上传到主线内核。

    此致、

    艾米·施
    Advantech ICVG x86软件
    02-7732-3399分机1249.  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Amy、

    听起来不错、

    此致、

    Alvaro