在线时间27 小时
UID2091976
注册时间2014-5-8
NXP金币0
该用户从未签到
注册会员

- 积分
- 124
- 最后登录
- 1970-1-1
|
环境: mx53+uda1341
我对音频驱动的理解是,codec驱动和SSI驱动已经写好了,我需要做的就是一些配置的工作。但是不管我怎么修改配置,I2S上的FSCLK和bit-clk始终没有信号。由于uda1341只能工作在从模式,所以我的SSI是主模式,2个地方的配置如下:
MX53_PAD_KEY_COL0__AUDMUX_AUD5_TXC,
MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD,
MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS,
MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD,
static struct mxc_audio_platform_data uda134x_data = {
.ssi_num = 0,
.src_port = 1,
.ext_port = 6,
.init = mxc_uda134x_init,
};
看AUDMUX部分的文档,端口对应的是1->6,2->5,3->4。所以这里的src_num就是1,ext_num就是6,是不是说我用(1,6)和(2,5)效果是一样的呢?还是说与引脚的功能配置有关,如果用的是AUDMUX5就是用(2,5)?当我用(2,5)的时候用madplay播放音频得到input/output error,但是用(1,6)播放正常没有错误。
然后就是machine驱动里面对AUDMUX的配置
/* reset port ssi_port & dai_port */
__raw_writel(0, DAM_PTCR(ssi_port));
__raw_writel(0, DAM_PTCR(dai_port));
__raw_writel(0, DAM_PDCR(ssi_port));
__raw_writel(0, DAM_PDCR(dai_port));
/* set to synchronous */
ssi_ptcr |= AUDMUX_PTCR_SYN;
dai_ptcr |= AUDMUX_PTCR_SYN;
/* set Rx sources ssi_port <--> dai_port */
ssi_pdcr |= AUDMUX_PDCR_RXDSEL(dai_port);
dai_pdcr |= AUDMUX_PDCR_RXDSEL(ssi_port);
/* set Tx frame direction and source ssi_port --> dai_port output */
dai_ptcr |= AUDMUX_PTCR_TFSDIR;
dai_ptcr |= AUDMUX_PTCR_TFSSEL(AUDMUX_FROM_TXFS, ssi_port);
/* set Tx Clock direction and source ssi_port--> dai_port output */
dai_ptcr |= AUDMUX_PTCR_TCLKDIR;
dai_ptcr |= AUDMUX_PTCR_TCSEL(AUDMUX_FROM_TXFS, ssi_port);
printk("AUDMUX SSI PTCR=0x%x,PDCR=0x%x\n",ssi_ptcr,ssi_pdcr);
printk("AUDMUX DAI PTCR=0x%x,PDCR=0x%x\n",dai_ptcr,dai_pdcr);
__raw_writel(ssi_ptcr, DAM_PTCR(ssi_port));
__raw_writel(dai_ptcr, DAM_PTCR(dai_port));
__raw_writel(ssi_pdcr, DAM_PDCR(ssi_port));
__raw_writel(dai_pdcr, DAM_PDCR(dai_port));
根据打印信息,dai_ptcr的值应该是ssi的才对,可是即便我将dai_ptcr和ssi_ptcr的位置交换,BCLK和FSCLK还是没有信号。
SSI和AUDMUX的输出值
[ 71.655302] scr 1bb , 1bb
[ 71.659303] sisr 320 , 300
[ 71.663391] stcr 3ed , 3ed
[ 71.667480] srcr 30d , 30d
[ 71.671568] stccr e117 , e117
[ 71.675917] srccr 40100 , 40100
[ 71.680440] sfcsr 8680868 , 8680868
[ 71.685309] stmsk fffffffe , fffffffe
[ 71.690353] srmsk fffffffe , fffffffe
[ 71.695396] sier 180100 , 180100
[ 2.412130] AUDMUX SSI PTCR=0x84000800,PDCR=0x0
[ 2.416685] AUDMUX DAI PTCR=0x800,PDCR=0xa000
为什么把SSI配置成主模式,它没有产生内部时钟给codec呢?还需要配置哪些寄存器吗?在线等这个问题困扰我许久了,多谢各位。
|
评分
-
查看全部评分
|