您好!
当前我们的处理器芯片为i.MX 6Solo/6DualLite双核,音频Codec芯片使用的TAS2505芯片, Codec芯片主时钟信号由CPU引脚GPIO_19/CCM_CLK01提供,芯片驱动加载完成后,用示波器测量发现主时钟信号无输出,设备树的配置如下所示,不知道哪里出了问题,希望得到您的帮助,谢谢!
sound {
compatible = "fsl,imx-audio-tlv320";
model = "imx-tlv320";
ssi-controller = <&ssi1>;
audio-codec = <&codec>;
audio-routing =
"SPK", "Speaker Jack",
"Headphone Jack", "HPOUT";
mux-int-port = <1>;
mux-ext-port = <4>;
codec-master;
};
codec: tas2505@18 {
compatible = "ti,tas2505";
reg = <0x18>;
clocks = <&clks IMX6QDL_CLK_CKO1>;
clock-frequency = <12000000>;
};
&ssi1 {
fsl,mode = "i2s-slave";
status = "okay";
};
&audmux {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_audmux>;
};
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
imx6qdl-wisehmi {
pinctrl_hog: hoggrp {
fsl,pins = <
MX6QDL_PAD_GPIO_19__CCM_CLKO1 0x1b0b1
>;
};
pinctrl_audmux: audmuxgrp {
fsl,pins = <
MX6QDL_PAD_CSI0_DAT7__AUD3_RXD 0x130b0
MX6QDL_PAD_CSI0_DAT4__AUD3_TXC 0x130b0
MX6QDL_PAD_CSI0_DAT5__AUD3_TXD 0x110b0
MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x130b0
MX6QDL_PAD_DISP0_DAT23__AUD4_RXD 0x130b0
MX6QDL_PAD_DISP0_DAT20__AUD4_TXC 0x130b0
MX6QDL_PAD_DISP0_DAT21__AUD4_TXD 0x110b0
MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
>;
};
Hi Kangmao,
See the code below, please!
codec: tas2505@18 {
compatible = "ti,tas2505";
reg = <0x18>;
clocks = <&clks IMX6QDL_CLK_CKO1>;
clock-frequency = <12000000>;
};
IMX6QDL_CLK_CKO1 should be changed to be "IMX6QDL_CLK_CKO".
try it , please!
Have a nice day!
BR,
weidong
hello Kangmao,
Probably there are 2 ways you will try:
1. Enable and set rate directly in clk-imx6q.c (drivers/clk/imx/clk-imx6q.c).
or
2. play a xxx.wav file on command line, and measure the clock on GPIO_19 pin of CPU
I remember that only when playback begins, the clock will be enabled.
try it , please!
Weidong
Hi Weidong:
第二种方式我已测试,发现无时钟信号输出, 第一种方式,我不太确定在clk-imx6q.c中如何改动代码,烦请提示一下,谢谢!
Hi Kangmao
you can enable clock in clk-imx6q.c ( drivers/clk/imx/clk-imx6q.c) at first, then measure it to see if it is 12MHz
drivers/clk/imx/clk-imx6q.c
static void __init imx6q_clocks_init(struct device_node *ccm_node)
{
......
imx_clk_set_parent(clk[IMX6QDL_CLK_CKO2_SEL], clk[IMX6QDL_CLK_OSC]);
imx_clk_set_parent(clk[IMX6QDL_CLK_CKO], clk[IMX6QDL_CLK_CKO2]);
clk_set_rate(clk[IMX6QDL_CLK_CKO], 12000000);
imx_clk_prepare_enable(clk[IMX6QDL_CLK_CKO]);
... ...
}
Have a nice day!
NXP TIC weidong sun
Hi weidong:
谢谢!我尽快试一下
Hi WeiDong:
不好意思,按照您上次说的,修改时钟初始化的部分,进行了尝试,音频codec芯片的主时钟信号还是没有12M,不知道问题到底出在哪里了 哭!
Hi kangmao,
No any signal or no 12MHz?
weidong
Hi WeiDong:
我用示波器测量了一下,是没有任何信号输出
Hi Kangmao,
I sent an email to you, giving you a detailed document on how to port audio driver to i.MX6, check it, please!
Have a nice day!
BR,
Weidong