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/66AK2G02:如何描述器件树中的计时器、时钟多路复用器选择。

Guru**** 2553450 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/616317/linux-66ak2g02-how-to-describe-timers-clock-mux-selection-in-device-tree

器件型号:66AK2G02

工具/软件:Linux

您好!

我想在 Linux 环境中控制以下行为。
如果器件树说明支持它们、这会很有帮助。
请告诉我它是否受支持。 如果是、请提供示例代码或指向文档的指针。

环境:
- TI Linux SDK v04.00.04
K2GEVM

1.将 BOOTCFG_ETHERNET_CLKCTL 的 RMII_MII_CLKSEL 设为1 (MII_CLK)。
-在 include/dt-bindings/clock/k2g.h 中、K2G_DEV_Board_OBSCLK_parent_*定义用于 K2G_DEV_Board_OBSCLK、但没有针对 K2G_DEV_Board_MII_CLKOUT 的父定义。

2.通过 Timi/Timo Pad 连接设置定时器
-我想将 Timer4用作64位 GP 定时器。 TIMIP1连接到 TINPL、TOUTL 连接到 TIMO1。

此致、
Tommy

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

    我将查看此内容并进行更新。

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

    [引述]1. 将 BOOTCFG_ETHERNET_CLKCTL 的 RMII_MII_CLKSEL 设为1 (MII_CLK)。
    -在 include/dt-bindings/clock/k2g.h 中、K2G_DEV_Board_OBSCLK_parent_*定义用于 K2G_DEV_Board_OBSCLK、但没有针对 K2G_DEV_Board_MII_CLKOUT 的父定义。[/QUEST]

    请看一下 keystone-clocks.dtsi。 您可能需要根据您的用例修改文件。
    否则、您可以在电源睡眠控制器驱动程序中写入该寄存器:
    arch/arm/mach-davinci/psc.c

    [引述]2. 通过 Timi/Timo Pad 连接进行计时器设置
    -我想将 Timer4用作64位 GP 定时器。 TIMIP1连接到 TINPL、TOUTL 连接到 TIMO1。

    为此、您需要在 keystone-k2g-evm.dts 中配置 pinmux、进行 pinmux 设置的位置是在&k2g_pinctrl 节点中。
    此外、您还需要启用状态为=的计时器模块 ;

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

    感谢您的支持。

    1.将 BOOTCFG_ETHERNET_CLKCTL 的 RMII_MII_CLKSEL 设为1 (MII_CLK)。
    >查看 keystone-clocks.dtsi。 您可能需要根据您的用例修改文件。

    我在时钟部分和器件部分的时钟选择部分中添加了以下说明。
    在设备驱动程序中,使用 devm_clk_get()获取时钟。
    结果始终为-EPROBE_DEPRE。

    时间
    时钟=<&miiclk>;
    如器件部分所述、devm_clk_get()没有错误、但 MUX 位没有变化。
    时钟=<&rmiimuxclk>;
    结果为-EPROBE_DEPRE。

    因此、它必须被定义为多路复用时钟的所选父时钟。
    我想知道如何在内核驱动程序或器件树中选择多路复用时钟的父级。

    --从这里----
    时钟{
    #address-cells =<1>;
    #size-cells =<0>;

    rmiiclk:rmiiclk{
    #clock-cells =<0>;
    兼容="固定时钟";
    时钟频率=<50000000>;
    clock-output-names ="rmiiclk";
    };

    miiclk:miiclk{
    #clock-cells =<0>;
    兼容="固定因子时钟";
    时钟=<&rmiiclk>;
    clock-div =<2>;
    时钟多路复用=<1>;
    Clock-output-names ="miiclk";
    };

    rmiimuxclk:rmiimuxclk@02620698{
    #clock-cells =<0>;
    兼容="ti、mux-clock";
    时钟=<&rmiiclk>、<&miiclk>;
    reg =<0x02620698>;
    位掩码=<1>;
    TI、bit-shift =<1>;
    clock-output-names ="rmiimuxclk";
    };

    RMII_clkout:RMII_clkout@02620698{
    #clock-cells =<0>;
    兼容="ti、栅极时钟";
    时钟=<&rmiimuxclk>;
    reg =<0x02620698>;
    位掩码=<1>;
    TI、bit-shift =<2>;
    时钟输出名称="RMII_clkout";
    };
    };

    器件:器件@ADR{

    时钟=<&RMII_clkout>;



    RMII_clkout{
    状态="正常";
    };

    设备{(&S)
    状态="正常";
    };
    结束于此---

    2.通过 Timi/Timo Pad 连接设置定时器
    >为此、您需要在 keystone-k2g-evm.dts 中配置 pinmux、进行 pinmux 设置的位置是在&k2g_pinctrl 节点中。

    不仅需要引脚复用设置、还需要 BOOTCFG_TINPSEL0 / BOOTCFG_TOUTPSEL0寄存器设置。
    是否有任何方法可以在设备树说明中定义上述寄存器?

    此致、
    Tommy

    P.S. 8月11日至20日是我的暑假 因此、我的下一次访问将是21。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我们将对此进行研究。 反馈将发布在此处。

    此致、
    Yordan