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:mcasp4没有 MCLK

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/719082/linux-mcasp4-has-no-mclk

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

工具/软件:Linux

您好!

  我们为编解码器模块设计了一个以“VAYU EVM XC5777X CPU 板”为基准的定制板,

我所指的 devicetree 文件是"dra7-evm.des"、

我们从 mcasp3更改为 mcasp4、因此我在 devicetree 文件"A7-EVM-common.dtsi"中进行了以下更改:

??Sound0:Sound0{
兼容="简单音频卡";
simple-audio-card、name ="DRA7xx-EVMx";
simple-audio-card、小工具=
"耳机"、"耳机插孔"、
"线路"、"线路输出"、
"麦克风"、"麦克风插孔"、
"线路"、"线路输入";
简单音频卡,路由=
"耳机插孔"、"HPLOUT"、
"耳机插孔"、"HPROUT"、
"线路输出"、"LLOUT"、
"线路输出"、"RLOUT"、
"MIC3L"、"Mic Jack"、
"MIC3R"、"Mic Jack"、
"MIC Jack"、"Mic Bias"、
"LINE1L"、"线路输入"、
"LINE1R"、"线路输入";
simple-audio-card、format ="DSP_b";
simple-audio-card、bitclock-master =<&sound0_master>;
simple-audio-card、frame-master =<&sound0_master>;
简单音频卡、位时钟反转;

sound0_master:简单音频卡、CPU{
Sound-Dai =<&mcasp4>;
系统时钟频率=<11289600>;
};

简单音频卡、编解码器{
sound-dai =<&tlv320aic3106>;
时钟=<&ATL_clkin3_ck>;
};
};

&ATL{
分配的时钟=<&ABE_DPLL_SYS_clk_mux>、
<&ATL_gfclk_mux>、
<DPLL_AE_ck >、
<DPLL_AEM2x2_ck >、
&ATL_clkin1_ck>、
<&ATL_clkin3_ck>;
分配的时钟父级=<&sys_clkin2>、<&DPLL_AE_M2_ck>;
分配的时钟速率=<0>、<0>、<180633600>、<361267200>、
<11289600>、<11289600>;

状态="正常";

atl3{
BWS = ;
AWS = ;
};
};

mcasp4{.m&mcasp4}
#sound-di-cells =<0>;

分配的时钟=<&mcasp4_ahclkx_mux>;
分配的时钟父级=<&ATL_clkins3_ck>;

状态="正常";

OP-MODE =<0>;/* MCASP_IIS_MODE */
TDM-SLOTS =<2>;
/* 4串行器*/
serial-dir =</* 0:非活动、1:TX、2:Rx *
1 2 0 0
>;
tx-num-evt =<32>;
Rx-num-evt =<32>;
};

当我运行 aRecord 或 aply 时、没有错误 出现,但我在 MCLK 中无法获得时钟、相应的引脚为 C23。

我的修改是否正确? 我是否需要修改驱动程序?

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

    您的更改看起来正确。 McASP4 ahclkx 时钟与 McASP8的寄存器偏移问题不同 ( 如果您最初问这个问题、这是其他 e2e 帖子的根本原因)。

    您是否已使用多路复用模式5 (ATL_clk3)配置 CTRL_CORE_PAD_XREF_CLK3寄存器(0x4A0036A0)?

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

    谢谢您、Misael。

    以下是我的寄存器值:

    CTRL_CORE_PAD_XREF_CLK3

    在地址 0x4A0036A0 (bb6f4e6a0):0x0005000E 处读取

    但另一方面 、CTRL_CORE_PAD_XREF_CLK2采用多路复用器模式5:

    在地址 0x4A00369A (bb6fee698):0x00040005处读取

     

    当我写入.ko 模块并使用 0x00040005更改 CTRL_CORE_PAD_XREF_CLK3时、

    在地址 0x4A0036A0 (b6f636a0):0x00040005处读取

     

     我可以看到 MCLK 有时钟、频率大约为11.28、这应该是正确的。

     

    我有一些问题:

    我 看到 CTRL_CORE_PAD_XREF_CLK2的配置是正确的(对于 mcasp3)、所以我不需要在驱动程序中添加额外的代码、只需修改它。 我应该修改该寄存器的值、哪个文件的哪个函数?

    2.当我运行 aplay 或 arecord 时、 我看不到 BCLK 有时钟、这是否意味着 I2S 不工作?

     当我运行"omapconf show mcasp4"时,它告诉我:

     omapconf: mcasp4未激活,无法继续

    我还需要做什么?

    谢谢。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 u-boot 中修改了"board/ti/dra7xx/mux_data.h"的配置、
    将引脚(XREF_CLK3、MCASP4等)设置为正确的定义。

    现在、我可以看到 I2S 上的波形。

    但是、当运行"omapconf show mcasp4"时、

    仍有提示:

    omapconf: mcasp4未激活,无法继续

    原因是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否在 aplay 同时运行 omapconf (在后台)?
    例如:
    # aplay -D HW:0、0 -f S16_LE -r44100 -C2 /dev/urandom &
    # omapconf show mcasp4
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 根据您的说明、我可以看到详细信息。
    非常感谢。
x 出现错误。请重试或与管理员联系。