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.

[参考译文] Linux:在 SDK 4.00.0.4中使用器件树 fe Linux 如何在 CFGCHIP 寄存器中启用 RMII_SEL 标志?

Guru**** 2569255 points
Other Parts Discussed in Thread: AM3517

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/626996/linux-in-sdk-4-00-0-4-using-device-tree-foe-linux-how-to-enable-rmii_sel-flag-in-cfgchip-register

主题中讨论的其他器件:OMAPL138AM3517

工具/软件:Linux

你(们)好。

如果仍有人要写入 OMAPL138 SoC 上的 cfgchip 寄存器、请告诉我吗?  

设备树中。

这是从 da850/dtsi 复制的  

cfgchip:芯片控制器@1417c{
兼容="ti,DA830-cfgchip"、"SYSCON"、"simple-MFD";
reg =<0x1417c 0x14>;

USB_phy:USB-phy{
兼容="ti、DA830-USB-phy";
phy-cells =<1>;
STATUS ="禁用";
};
};

我想在 cfgchip3寄存器中设置 RMII_SEL 标志、以便可以在 EMAC PHY 中启用 RMII。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已通知软件团队。 反馈将发布在此处。

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

    dtsi 文件中的 cfgchip 节点定义了这5个 cfgchip 寄存器的起始地址。 您将需要为 RMII_SEL 定义一个类似于访问 cfgchip2的 USB_phy 的节点。 您还需要解析驱动程序代码中的新 DTS 节点以在 cfgchip3中设置 RMII_SEL。

    我的问题是、您为什么需要担心设置它? RMII_SEL 是否默认设置为1、哪一个是 RMII 启用?

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

    尊敬的 Rex:

    您是对的、CFGCHIP3寄存器中的 RMII_SEL 标志默认设置。 但 u-boot 加载程序会将 Linux 设置为在 MII 模式下使用以太网。 我已经对 u-boot 进行了更改、以将以太网配置为 RMII 模式。  

    但我还是注意到以下 RMII-EN 标志不会设置驱动程序。

    eth0:以太网@220000{
    兼容="TI、DaVinci-DM6467 - EMAC";
    reg =<0x220000 0x4000>;
    TI、Davinci-Ctrl-reg-offset =<0x3000>;
    TI、Davinci-Ctrl-mod-reg-offset =<0x2000>;
    TI、Davinci-Ctrl-ram-offset =<0>;
    TI、Davinci-Ctrl-ram-size =<0x2000>;
    TI、Davinci-RMII-en =<1>;
    local-mac-address =[ 00 00 00 00 00 00];
    中断=<33
    34
    35.
    36.
    >;
    STATUS ="禁用";
    };

    我必须对该标志进行硬接线、才能在驱动程序代码中设置该 RMII-EN 位。

    该驱动程序为 /opt/ti-processor-sdk-linux-omapl138-lcdk-04.00.00.04/board-support/linux-4.9.28 +gitAUTOINC+e43d1050-geed43d1050/drivers/net/sethernet/ti/davinci_emac.c

    通过执行此更改、以太网 PHY 可以正常工作、但我不愿意在驱动程序中进行更改。  

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

    通过跟踪代码、dtsi 文件中的 RMII-en 设置不配置 cfgchip3、而是设置 EMAC_MACCONTROL 的位15。 这是因为它是在以太网节点中定义的。 我认为您需要在 cfgchip node 中添加与 USB_phy 相同的节点级别、并编写驱动程序代码来解析和配置它。 如果您不需要在系统中进行配置、则可以在 u-boot 中进行设置。 某些电路板配置(可能包括此 cfgchip)应在 u-boot 中完成、而不是在内核中完成。

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

    尊敬的 Rex:

    感谢您的检查。 是的、我将把 PHY EMAC 设置保留在 U-boot 中完成。

    但是、如何在 dtsi 文件中设置 EMAC_MACCONTROL 的位15?  

    谢谢。

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

    您提到的 DTS 文件中"ti,davinci-RMII-en=<1>;"的条款是在 DTS 文件中设置 EMAC_MACCONTROL 的位15。

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    雷克斯,是的,但它不是这样做的。 我必须将驱动器中的 RMII-EN 硬接线才能使其正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mitesh、

    我查看了代码、有一个条件。 如果可以、请跟踪代码。

    if (priv->speed =speed_1000 &&(priv->version == emac_version_2)){
    MAC_CONTROL = EMAC_READ (EMAC_MACCONTROL);
    MAC_CONTROL |=(EMAC_DM646x_MACCONTORL_GIG |
    EMAC_DM646x_MACCONTORL_GIGFORCE);
    }否则{
    /*清除 gig 位和 GIGFORCE 位*/
    MAC_CONTROL &=~(EMAC_DM646x_MACCONTORL_GIGFORCE |
    EMAC_DM646x_MACCONTORL_GIG);

    if (priv->RMII_en &&(priv->speed == speed_100))
    MAC_CONTROL |= EMAC_MACCONTROL_RMIISPEED_MASK;
    其他
    MAC_CONTROL &=~EMAC_MACCONTROL_RMIISPEED_MASK;


    /*如果更改,则更新 mac_control */
    EMAC_WRITE (EMAC_MACCONTROL、MAC_CONTROL);

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

    在同一个文件中、我必须执行以下操作:

    /* MAC addr 和 PHY mask,RMII 启用来自 platform_data 的信息*/
    memcpy (priv->mac_addr、pdata->mac_addr、ETH_Alen);
    PRIV->phy_id = pdata->phy_id;
    PRIV->RMII_EN = 1;// pdata->RMII_EN;
    PRIV->version = pdata -> version;
    PRIV->int_enable = pdata->interrupt_enable;
    PRIV->int_disable = pdata->interrupt_disable;


    出于某种原因,从未设置"pdata->RMII_en"。 我想、这应该只在 DTS 文件中设置。 我已经完成了、但它仍然可以工作。 因此,在驱动程序中添加了以下代码"priv->RMII_en=1;// pdata->RMII_en;"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mitesh、

    您是否确认 pdata->RMII_en 为1? 否则、它将需要追溯到 Fif_函数、最终跟踪 DTS 文件。 我在 AM3517.dtsi 文件中看到、RMII-en 的定义与您的定义不同。 这是您无法设置它的原因吗?

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

    Rex、

    它可能非常好。

    我所做的就是在 da850/dtsi 文件中添加 RMII-EN。 代码如下:

    eth0:以太网@220000{
    兼容="TI、DaVinci-DM6467 - EMAC";
    reg =<0x220000 0x4000>;
    TI、Davinci-Ctrl-reg-offset =<0x3000>;
    TI、Davinci-Ctrl-mod-reg-offset =<0x2000>;
    TI、Davinci-Ctrl-ram-offset =<0>;
    TI、Davinci-Ctrl-ram-size =<0x2000>;
    TI、Davinci-RMII-en =<1>;
    local-mac-address =[ 00 00 00 00 00 00];
    中断=<33
    34
    35.
    36.
    >;
    STATUS ="禁用";
    };

    我将尝试根据 AM3517.dtsi 文件对其进行更改、但我想知道为什么这样做?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rex、
    是的、语法错误。 它现在可以工作了。 感谢您对此的支持。

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

    这是 DTS 语法。 请参阅开源 DTS 文档。

    雷克斯