主题中讨论的其他器件: TLV320AIC3104
您好!
我们使用 ti-processor-sdk-linux-am57xx-evm-05.02.00.10开发了一款带有 AM5718处理器的定制板。 在播放音频的过程中、我们面临着这个问题、我们列出了补丁和参数、这些补丁和参数是为了获得音频而更改的、但我们无法使音频播放。 对于我们的处理器、为了使音频播放、MCLK 应该是20MHz、但在应用以下更改后、我们将 MCLK 设置为50MHz。 请仔细查看我们 所附的补丁和日志、并建议我们应修改哪些参数、以使 MCLK 达到20MHz、作为核心、从而播放音频。
我们在 Davinci-McAP.c 中添加了突出显示的部分
静态 int Davinci_McASP_SET_SYSCLK (struct snd_soc_dai * dai、int clk_id、
unsigned int freq、int dir)
{
静态空__iomem *mcasp3_base;
uint32_t value/*、ui_temp*/;
struct Davinci_McASP *McASP = snd_soc_da_get_drvdata (dai);
printk (Kern_info "Enter Davinci_McASP_Set_SYSCLK ()\n");
PM_runtime_get_sync (McASP->dev);
printk (Kern_info "dir =snd_SOC_clock_out\n");
McASP_CLR_BIits (McASP、DaVinci_MCASP_AHCLKXCTL_REG、AHCLKXE);
McASP_SET_BITS (McASP、DaVinci_MCASP_AHCLKRCTL_REG、AHCLKRE);
McASP_SET_BITS (McASP、DaVinci_MCASP_Pdir_REG、AHCLKX);
#if 0
if (dir = snd_SOC_clock_in){
switch (clk_id){
案例 MCASP_CLK_HCLK_AHCLK:
McASP_CLR_BIits (McASP、DaVinci_MCASP_AHCLKXCTL_REG、
AHCLKXE);
McASP_CLR_BIits (McASP、DaVinci_MCASP_AHCLKRCTL_REG、
AHCLKRE);
McASP_CLR_BIits (McASP、DaVinci_MCASP_Pdir_REG、AHCLKX);
中断;
案例 MCASP_CLK_HCLK_AUXCLK:
McASP_SET_BITS (McASP、DaVinci_MCASP_AHCLKXCTL_REG、
AHCLKXE);
McASP_SET_BITS (McASP、DaVinci_MCASP_AHCLKRCTL_REG、
AHCLKRE);
中断;
默认值:
dev_err (McASP->dev、"无效的 clk id:%d\n"、clk_id);
转至输出;
}
}否则{
/*选择 AUXCLK 作为 HCLK */
McASP_SET_BITS (McASP、DaVinci_MCASP_AHCLKXCTL_REG、AHCLKXE);
McASP_SET_BITS (McASP、DaVinci_MCASP_AHCLKRCTL_REG、AHCLKRE);
McASP_SET_BITS (McASP、DaVinci_MCASP_Pdir_REG、AHCLKX);
}
#endif
mcasp3_base = ioremap (0x4A00369C、4);
值= __raW_readl (mcasp3_base);
printk (Kern_info "XREF_CLKOUT2 ==%x \n"、value);
(void)__raW_writel (0x10003,mcasp3_base);
mcasp3_base = ioremap (0x4A003774、4);
值= __raW_readl (mcasp3_base);
(void)__raW_writel (0x4000A、mcasp3_base);
mcasp3_base = ioremap (0x48440216-4);
值= __raW_readl (mcasp3_base);
(void)__raW_writel (value|0x2,mcasp3_base);
/*
*当选择 AHCLK X/R 作为输出时、表示 HCLK 为
*相同的时钟-通过 AUXCLK 提供。
*
McASP->SYSCLK_freq = freq;
//输出:
Pm_runtime_put (McASP->dev);
返回0;
}
am571x-idk.dts 文件:
声音0:声音@0{
兼容="简单音频卡";
simple-audio-card、name ="AM571x";
simple-audio-card、小工具=
"线路"、"线路输出"、
"线路"、"线路输入";
简单音频卡,路由=
"线路输出"、 "LLOUT"、
"线路输出"、 "RLOUT"、
"MIC2L"、 "线路输入"、
"MIC2R"、 "线路输入";
simple-audio-card、format ="DSP_b";
simple-audio-card、bitclock-master =<&sound0_master>;
simple-audio-card、frame-master =<&sound0_master>;
简单音频卡、位时钟反转;
简单音频卡、CPU{
Sound-Dai =<&mcasp3>;
系统时钟频率=<564800>;
};
sound0_master:simple-audio-card、codec{
sound-dai =<&tlv320aic3104>;
时钟=<&clkout2_clk>;
//时钟=<&ATL_clkin2_ck>;
};
};
mcasp3_PINS_DEFAULT:mcasp3_PINS_DEFAULT{
pinctrl-single、pins =<
0x29c ((0x40000)|PIN_OUTPUT 上拉| MUX_MODE3)/* clk2。 *
0x328 ((0xC0000)| MUX_MODE0)/* mcasp3_FSX.McASP1_FSX *
0x324 (((0x40000)| MUX_MODE0)/* mcasp3_aclkx.McASP1_aclkx *
0x32c ((0xC0000)| MUX_MODE0)/* mcasp3_axr0.McASP1_axr0 *
0x330 (((0xC0160)| MUX_MODE0)/* mcasp3_axr1.McASP1_axr1 *
>;
};
i2c1{(&I)
状态="正常";
时钟频率=<400000>;
tlv320aic3104:tlv320aic3104@18{
#sound-di-cells =<0>;
兼容="ti、tlv320aic3104";
reg =<0x18>;
分配的时钟=<&clkoutmux2_clk_mux>;
分配的时钟父节点=<&sys_clk2_dclk_ddiv>;
adc -稳定-ms =<40>;
AVDD-SUPPLY =<&VDD_3V3>;
IOVdd-supply =<&VDD_3V3>;
DRVDD-SUPPLY =<&VDD_3V3>;
DVDD 电源=<&AIC_DVDD>;
状态="正常";
};
};
mcasp3{.m&mcasp3}
#sound-di-cells =<0>;
状态="正常";
pinctrl-0 =<&mcasp3_PINS_DEFAULT>;
分配的时钟=<&mcasp3_ahclkx_mux>;
分配的时钟父级=<&sys_clkin2>;
分配的时钟速率=<22579200>;
OP-MODE =<0>; /* MCASP_IIS_MODE */
TDM-SLOTS =<2>;
/* 4个串行器*/
serial-dir =< /* 0:非活动、1:TX、2:Rx *
1 2 0 0
>;
tx-num-evt =<8>;
Rx-num-evt =<8>;
};
谢谢、此致
Prasad。
