Linux kernel 在ALSA ASoC中配置I2C和I2S

Linux kernel 在ALSA ASoC中配置I2C和I2S,linux-kernel,alsa,beagleboard,system-on-chip,Linux Kernel,Alsa,Beagleboard,System On Chip,我正在使用运行Linux3.0.63的BeagleBoard,我正在尝试让I2C和I2S接口正常工作,最终目标是在BeagleBoard上播放.wav文件,并正确设置I2C和I2S 我目前一直在将BeagleBoard设置为I2S线路的主时钟。或者从时钟也可以工作。在任何情况下,我都不知道I2S在内核代码中的位置。我在arch/arm/mach-omap3/board-omap3beagle.c中假设,但我找不到它 顺便说一句,是否有我不知道的关于如何执行此操作的隐藏文档?查看文件和: 第一个有

我正在使用运行Linux3.0.63的BeagleBoard,我正在尝试让I2C和I2S接口正常工作,最终目标是在BeagleBoard上播放.wav文件,并正确设置I2C和I2S

我目前一直在将BeagleBoard设置为I2S线路的主时钟。或者从时钟也可以工作。在任何情况下,我都不知道I2S在内核代码中的位置。我在
arch/arm/mach-omap3/board-omap3beagle.c
中假设,但我找不到它

顺便说一句,是否有我不知道的关于如何执行此操作的隐藏文档?

查看文件和:

第一个有一个功能:

static int-omap3beagle_-hw_参数(结构snd_-pcm_子流*子流,
结构snd_pcm_硬件_参数*参数)
{
/*几行*/
开关(参数通道(参数)){
案例2:/*立体声I2S模式*/
fmt=SND_SOC_DAIFMT_I2S|
SND_SOC_DAIFMT_NB_NF|
SNDúu SOCúu DAIFMTúu CBMúCFM;
打破
情况4:/*四通道TDM模式*/
fmt=SND_SOC_DAIFMT_DSP_A|
SND_SOC_DAIFMT_IB_NF|
SNDúu SOCúu DAIFMTúu CBMúCFM;
打破
违约:
返回-艾因瓦尔;
}
/*一些东西*/
}
第二个有宏定义:

/*
*DAI硬件时钟主机。
*
*这是编解码器,相反的是接口
*也就是说,如果编解码器是clk和FRM主机,则接口是
*时钟和帧从机。
*/

#定义SND_SOC_DAIFMT_CBM_CFM(1当您在omap3beagle.c中时,请参阅SND_SOC_DAIFMT_CBM_CFM,您如何定位此宏的定义位置?(我当前的方法是一个需要9分钟的grep…哈哈)我正在使用Eclipse,但F3不会像它会带我到函数定义那样带我到宏定义。(编辑:您提供的内容很有帮助,但我想问的是,如果您没有告诉我在哪里可以找到SND_SOC_DAIFMT_CBM_CFM该怎么办。例如,SND_SOC_DAIFMT_I2S在哪里?@SwimBikeRun我使用ctags/utags并为所有必要的文件夹生成标记。然后使用vim来创建此标记文件,只需逐步完成任何函数/宏等。例如SND_SOC_DAIFMT I2S在我的内核第27行的soc dai.h中。@SwimBikeRun也可以使用或只使用谷歌。