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/processor-SDK-AM335X:ePWMSS0的器件树设置

Guru**** 2589265 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/634847/linux-processor-sdk-am335x-device-tree-setup-for-epwmss0

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Linux

您好!

我正在尝试设置一个驱动程序以使用 eqep0、我注意到 CM_PER_EPWMSS0_CLKCTRL 未启用。  我针对这些模块进行了以下器件树设置。  除了这些更改外、am33xx.dtsi 与 SDK 匹配。  我认为 ti、hwmids ="epwmss0"应该启用该门、但看起来不是。  我是否缺少一些设置?  我已经验证了"my-eQEP"驱动程序正在启动、我在日志中没有看到任何有关 hwmods 未启动 epwms0的投诉。

am33xx.dtsi

OCP{

epwms0:epwmss@48300000{

兼容="ti、am33xx-pwms";
REG =<0x48300000 0x10>;
ti、hwmonds ="epwmss0";
#address-cells =<1>;
大小单元格=<1>;
STATUS ="禁用";
范围=<0x48300100 0x48300100 0x80 //* ECAP *
0x48300180 0x48300180 0x80 // eQEP *
0x48300200 0x48300200 0x80>;/* EHRPWM */

ecap0:ECAP@48300100{

兼容="ti、am3352-ecap"、
"TI、am33xx-ECAP";
#PWM-Cells =<3>;
REG =<0x48300100 0x80>;
时钟=<&l4ls_gclk>;
时钟名称="Fck";
中断=<31>;
中断名称="ecap0";
STATUS ="禁用";

};

ehrpwm0:PWM@48300200{

兼容="ti、am3352-ehrpwm"、
"TI、am33xx-ehrpwm";
#PWM-Cells =<3>;
REG =<0x48300200 0x80>;
时钟=<&ehrpwm0_TBCLK>、<&l4ls_gclk>;
时钟名称="TBCLK"、"fck";
STATUS ="禁用";

};

eqep0:eQEP@0x48300180{

兼容="my-eQEP";
REG =<0x48300180 0x80>;
时钟=<&eqep0_TBCLK>、<&l4ls_gclk>;
时钟名称="TBCLK"、"fck";
interrupt-parent =<&INTc>;
中断=<79>;
STATUS ="禁用";

};

};

AM335x-min.dts

eqep0{(&E)

状态="正常";
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&eqep0_default>;
pinctrl-1 =<&eqep0_sleep>;

};

epwms0{(&E)

状态="正常";

};

ehrpwm0{(&E)

状态="正常";

};

am33xx_pinmux{(am33xx_pinmux)}

eqep0_default:eqep0_default{

pinctrl-single、pins =<
/*正交编码器0 */
0x1a0 (PIN_INPUT | MUX_MODE1)/*(B12) McASP0_aclkr.eQEP0A_IN *
0x1a4 (PIN_INPUT | MUX_MODE1)/*(C13) McASP0_fsr.eQEP0B_IN *
0x1a8 (PIN_INPUT | MUX_MODE1)/*(D13) McASP0_axr1.eQEP0_INDEX */
0x1ac (PIN_INPUT | MUX_MODE1)//(A14) McASP0_ahclkx.eQEP0_STROBE */
>;

};
eqep0_sleep:eqep0_sleep{

pinctrl-single、pins =<
/*正交编码器0 */
0x1a0 (PIN_INPUT | MUX_MODE7)/*(B12) McASP0_aclkr.eQEP0A_IN *
0x1a4 (PIN_INPUT | MUX_MODE7)/*(C13) McASP0_fsr.eQEP0B_IN *
0x1a8 (PIN_INPUT | MUX_MODE7)/*(D13) McASP0_axr1.eQEP0_INDEX */
0x1ac (PIN_INPUT | MUX_MODE7)//(A14) McASP0_ahclkx.eQEP0_STROBE */
>;

};

};

am33xx-clocks.dtsi

&SCM_Clocks{

eqep0_TBCLK:eqep0_TBCLK@44e10664{

#clock-cells =<0>;
兼容="ti、栅极时钟";
时钟=<&l4ls_gclk>;
TI、bit-shift =<0>;
reg =<0x0664>;

};

eqep1_TBCLK:eqep1_TBCLK@0d8{

#clock-cells =<0>;
兼容="ti、栅极时钟";
时钟=<&l4ls_gclk>;
TI、bit-shift =<1>;
reg =<0x0664>;

};

eqep2_TBCLK:eqep2_TBCLK@0dc{

#clock-cells =<0>;
兼容="ti、栅极时钟";
时钟=<&l4ls_gclk>;
TI、bit-shift =<2>;
reg =<0x0664>;

};

};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Matt、

    您的 AM335x-min.dts 文件看起来不正确。 所有子节点(ECAP、eQEP、EHRPWM)应填充在 PWMSS DT 节点下。 有关 AM335x-EVM.dts 文件的示例、请参阅:

    epwms0{(&E)
    状态="正常";

    ecap0:ECAP@48300100{
    状态="正常";
    pinctrl-names ="default";
    pinctrl-0 =<&ecap0_PINs>;
    };
    };

    另请参见以下文件:

    Linux-kernel/Documentation/devicetree/bindings/PWM/pwm-tipwmss.txt

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