首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ALSA ASoC中配置I2C和I2S

在ALSA ASoC中配置I2C和I2S
EN

Stack Overflow用户
提问于 2013-11-22 03:33:38
回答 1查看 5.3K关注 0票数 2

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

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

顺便说一句,有没有我不知道的关于如何做的隐藏文档?

EN

回答 1

Stack Overflow用户

发布于 2013-11-22 03:53:29

查看文件sound/soc/omap/omap3beagle.cinclude/sound/soc-dai.h

第一个有一个函数:

代码语言:javascript
复制
static int omap3beagle_hw_params(struct snd_pcm_substream *substream,
    struct snd_pcm_hw_params *params)
{
    /* couple of lines */
    switch (params_channels(params)) {
    case 2: /* Stereo I2S mode */
        fmt =   SND_SOC_DAIFMT_I2S |
            SND_SOC_DAIFMT_NB_NF |
            SND_SOC_DAIFMT_CBM_CFM;
        break;
    case 4: /* Four channel TDM mode */
        fmt =   SND_SOC_DAIFMT_DSP_A |
            SND_SOC_DAIFMT_IB_NF |
            SND_SOC_DAIFMT_CBM_CFM;
        break;
    default:
        return -EINVAL;
    }
    /* some stuff */
}

第二个定义是宏定义:

代码语言:javascript
复制
/*
 * DAI hardware clock masters.
 *
 * This is wrt the codec, the inverse is true for the interface
 * i.e. if the codec is clk and FRM master then the interface is
 * clk and frame slave.
 */
#define SND_SOC_DAIFMT_CBM_CFM      (1 << 12) /* codec clk & FRM master */
#define SND_SOC_DAIFMT_CBS_CFM      (2 << 12) /* codec clk slave & FRM master */
#define SND_SOC_DAIFMT_CBM_CFS      (3 << 12) /* codec clk master & frame slave */
#define SND_SOC_DAIFMT_CBS_CFS      (4 << 12) /* codec clk & FRM slave */

因此,使用它们,您可以调整“立体声I2S模式”的I2S时钟,你需要。还有很多其他的选择,但我想这些正是你所需要的。

可以在Documentation/sound/alsa/soc上找到一些文档。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20130266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档