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/AM6548:ehrpwm

Guru**** 2540720 points
Other Parts Discussed in Thread: AM6548, AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/748195/linux-am6548-ehrpwm

器件型号:AM6548
主题中讨论的其他器件: AM3352

工具/软件:Linux

尊敬的 TI

SDK:EVM-05.01.00.11

我想在 AM6548板上使用 Ehrpwm。

我按如下方式配置 DTS

ehrpwm0:PWM@3000000{
兼容="ti、am654-ehrpwm"、"ti、am3352-ehrpwm";
#PWM-Cells =<3>;
REG =<0x0 0x3000000 0x0 0x42>;
电源域=<&K3_PDS 40>;
时钟=<&K3_CLKS 40 0>;
       时钟名称="TBCLK"、"fck";
        STATUS ="禁用";
};

ehrpwm0{(&E)
    pinctrl-names ="default";
    pinctrl-0 =<&ehrpwm0_PINS_DEFAULT>;
    状态="正常";
};

但 在 Linux 命令中

root@am65xx-EVM:~# dmesg | grep PWM                                                                                
[1.528055]   错误:无法获取时钟/soc0/PWM@3000000:fck (1)                                                 
[1.533996]   ehrpwm 3000000.PWM:无法获取时钟                                                             
[1.538894]   ehrpwm:探测3000000.PWM 失败,错误-2   

无法获取 clock.can 未探测驱动程序。

请帮我找出问题所在。

现在、AM6548是否可以支持使用 ehrpwm? 如果可以、您能否为我提供一些有关如何在 AM6548上使用 ehrpwm 的指南

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

    ehrpwm 应该可用。

    在我看来、您在以下几行中遇到了一些问题:

    时钟=<&K3_CLKS 40 0>;
    时钟名称="TBCLK"、"fck";

    在第一行中、您只描述了一个时钟、而在下一行中、您有两个时钟信号:TBCLK 和 FCK

    我建议您在"Clocks =<&K3_CLKS 40 0>;"行中再添加一个时钟。 例如、请参阅 K3-am6.dtsi 中的一些 DTS 时钟条目

    DSS:DSS@04a00000{
    时钟=<&K3_CLKS 67 1>、
    <&K3_CLKS 216 1>、
    <&K3_CLKS 67 2>;
    时钟名称="Fck、"Vp1"、"Vp2";


    sdhci0:sdhci@0{
    时钟=<&K3_CLKS 47 0>、<&K3_CLKS 47 1>;
    时钟名称="clk_AHB"、"clk_xin";

    sdhci1:sdhci@0{
    时钟=<&K3_CLKS 48 0>、<&K3_CLKS 48 1>;
    时钟名称="clk_AHB"、"clk_xin";

    GPU:GPU@7000000{
    时钟=<&K3_CLKS 65 0>、<&K3_CLKS 65 1>、
    <&K3_CLKS 65 2>、<&K3_CLKS 65 3>;
    时钟名称="mem_clk"、"hyd_clk"、
    "SGX_clk"、"sys_clk";


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

    尊敬的 Pavel

     实际上、在 downloads.ti.com/.../clocks.html 文档中

    我找到这样的描述

    通过这个,我可以找到器件 ID 等于40,并且只有一个时钟存在,时钟 ID 为零。

    因此、我尝试像这样修改 DTS  

    时钟名称="TBCLK"或时钟名称="fck"

    ehrpwm0:PWM@3000000{
    兼容="ti、am654-ehrpwm"、"ti、am3352-ehrpwm";
    #PWM-Cells =<3>;
    REG =<0x0 0x3000000 0x0 0x42>;
    电源域=<&K3_PDS 40>;
    时钟=<&K3_CLKS 40 0>;
           时钟名称="TBCLK";
            STATUS ="禁用";
    };

    结果与无法正确探测 PWM 驱动器的结果相同。

    能不能帮我提供正确的 ehrpwm DTS 配置。

    非常感谢

    阿苏拉

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

    阿苏拉

    请尝试以下更新并报告结果。

    ehrpwm0:PWM@3000000{
    兼容="ti、am654-ehrpwm"、"ti、am3352-ehrpwm";
    #PWM-Cells =<3>;
    REG =<0x0 0x03000000 0x0 0x42>;
    电源域=<&K3_PDS 40>;
    时钟=<&K3_CLKS 40 0>;
    时钟名称="Fck";
    STATUS ="禁用";
    };

    似乎只有 FCK (MAIN_SYSCLK0/4)可通过 DTS 启用。

    关于 CTRL_MMR0 TBCLK、您需要在驱动程序文件(pwm-tiehrpwm.c)中启用它、您需要使用寄存器 CTRLMMR_EPWM0_CTRL/0x00104140。

    请参阅、了解以下文件中如何使用 CTRLMMR_OLDI_DAT0_IO_CTRL/0x001041E0寄存器的示例:

    Linux-4.14.67/drivers/GPU/DRM/tids/tidss_dispc7.h
    Linux-4.14.67/drivers/GPU/DRM/tids/tids_dispc7.c

    此致、
    帕维尔

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

    你(们)好,Paval

    我之前已经尝试过这个 DTS 配置。我已经尝试过 fck 或 TBCLK 的时钟名称。它 也无法获得时钟。

    我能不能?ehrpwm 实际上还没有为最新的 SDK 中的 am6548做好准备

    或者在 DTS。中配置 ethrpwm 时出错

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

    您的 DTS 文件似乎是正确的、我在下面的 DTS 代码中没有看到有关 AM65x ehrpwm 的错误:

    ehrpwm0:PWM@3000000{
    兼容="ti、am654-ehrpwm"、"ti、am3352-ehrpwm";
    #PWM-Cells =<3>;
    REG =<0x0 0x03000000 0x0 0x42>;
    电源域=<&K3_PDS 40>;
    时钟=<&K3_CLKS 40 0>;
    时钟名称="Fck";
    STATUS ="禁用";
    };

    ehrpwm0{(&E)
    pinctrl-names ="default";
    pinctrl-0 =<&ehrpwm0_PINS_DEFAULT>;
    状态="正常";
    };


    但是、PSDK 5.1似乎不支持 EHRPWM、我不确定自己需要花费多大的精力来实现它。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Pavel
    在 ehrpwm,中、我发现可能需要 fck 和 TBCLK 时钟。、但在文档中,只有一个时钟 ID。am3352 ethpwm 驱动器不适合 am6548?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    阿苏拉

    是的、ehrpwm 驱动程序(pwm-tiehrpwm.c)当前不支持 am65x 器件、请查看以下文档:

    Linux-4.14.67/Documentation/devicetree/bindings/PWM/pwm-tiehrpwm.txt

    此外、在 arch/arm64/configs/ti_sdk_arm64_release_defconfig 中默认不启用此 ehrpwm 驱动程序、未设置 CONFIG_PWM_TIEHRPWM。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为了进行确认、我们目前不支持 AM65x 上的 ehrpwm。 我将在2019年提交一份申请、要求软件团队进行调查。

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

    如果您没有其他与主题相关的问题、请关闭/验证/解决此主题。

    此致、
    帕维尔