IMX6的相关音频结构体的定义
2016-08-09 10:06
309 查看
在IMX上的音频接口主要有3种接口,分别为SSI, SPDIF, ESAI 等;
platform 连接 codec 与 cpu 的驱动时,通过内核函数结构体static struct snd_soc_dai_link 来设置两边的接口;
SSI接口中,IMX6中的SSI接口有3对可以接着路I2S;三路SSI可以每路SSI 单独作为一个声卡,也可以是一个声卡包含多个设备;
以下的定义模式是一个声卡多个设备;相关结构体成员定义如下;
static struct snd_soc_dai_link imx_alc5642_dai[] = {
#if 1
{
.name
= "HiFi_0",
.stream_name
= "HiFi_0",
.codec_dai_name=
"alc5642_0",
.cpu_dai_name
= "imx-ssi.1", //代表的是同一个声卡中的第一个设备与SSI1相连;I2SX X代表0,1,2;ssi.1代表SSI1
.codec_name
= "alc5642.2-001c", //alc5642.2代表的是用I2C2来控制codec,其I2C地址为0x1c;I2CX, X代表的是0,1,2,开始;
.platform_name=
"imx-pcm-audio.1", //代表的连接接口与SSI来对应,用哪路SSI,其后面的数字就是几;
.init
= imx_3stack_alc5642_init,
.ops
= &imx_alc5642_hifi_ops,
},
#endif
{
.name
= "HiFi_1",
.stream_name
= "HiFi_1",
.codec_dai_name=
"alc5642_1",
.cpu_dai_name
= "imx-ssi.2", //代表的是同一个声卡中的第一个设备与SSI1相连;I2SX X代表0,1,2;ssi.2代表SSI2
.codec_name
= "alc5642.2-001c", //alc5642.2代表的是用I2C2来控制codec,其I2C地址为0x1c;I2CX, X代表的是0,1,2,开始;
.platform_name=
"imx-pcm-audio.2", //代表的是与SSI来对应,用哪路SSI,其后面的数字就是几;
.init
= imx_3stack_alc5642_init_1,
.ops
= &imx_alc5642_hifi_ops,
},
};
ESAI接口中,IMX6的ESAI接口为多声道的接口;如5.1声道,7.1声道,按独立的I2S来考虑的话,
其可接三路I2S;相关结构体成员定义如下;
static struct snd_soc_dai_link imx_3stack_dai[] = {
{
.name = "HiFi",
.stream_name = "HiFi",
.codec_dai_name = "AK7757",
.codec_name = "ak7757-i2c.1-0054", //代表的是用I2C2来控制codec,其I2C地址为0x1c;I2CX,
X代表的是0,1,2,开始;
.cpu_dai_name = "imx-esai.0", //代表的是同一个声卡中的第一个设备与ESAI0相连;ESAIX
X代表0,1,2; esai.0 代表ESAI0,其实IMX6上只有一个ESAI接口
.platform_name = "imx-pcm-audio.3", //代表的是与ESAI来对应,在其连接的连接接口文件中将其排成3为了是不与SSI进行冲突;
.init = imx_3stack_ak7757_init,
.ops = &imx_3stack_surround_ops,
},
};
platform 连接 codec 与 cpu 的驱动时,通过内核函数结构体static struct snd_soc_dai_link 来设置两边的接口;
SSI接口中,IMX6中的SSI接口有3对可以接着路I2S;三路SSI可以每路SSI 单独作为一个声卡,也可以是一个声卡包含多个设备;
以下的定义模式是一个声卡多个设备;相关结构体成员定义如下;
static struct snd_soc_dai_link imx_alc5642_dai[] = {
#if 1
{
.name
= "HiFi_0",
.stream_name
= "HiFi_0",
.codec_dai_name=
"alc5642_0",
.cpu_dai_name
= "imx-ssi.1", //代表的是同一个声卡中的第一个设备与SSI1相连;I2SX X代表0,1,2;ssi.1代表SSI1
.codec_name
= "alc5642.2-001c", //alc5642.2代表的是用I2C2来控制codec,其I2C地址为0x1c;I2CX, X代表的是0,1,2,开始;
.platform_name=
"imx-pcm-audio.1", //代表的连接接口与SSI来对应,用哪路SSI,其后面的数字就是几;
.init
= imx_3stack_alc5642_init,
.ops
= &imx_alc5642_hifi_ops,
},
#endif
{
.name
= "HiFi_1",
.stream_name
= "HiFi_1",
.codec_dai_name=
"alc5642_1",
.cpu_dai_name
= "imx-ssi.2", //代表的是同一个声卡中的第一个设备与SSI1相连;I2SX X代表0,1,2;ssi.2代表SSI2
.codec_name
= "alc5642.2-001c", //alc5642.2代表的是用I2C2来控制codec,其I2C地址为0x1c;I2CX, X代表的是0,1,2,开始;
.platform_name=
"imx-pcm-audio.2", //代表的是与SSI来对应,用哪路SSI,其后面的数字就是几;
.init
= imx_3stack_alc5642_init_1,
.ops
= &imx_alc5642_hifi_ops,
},
};
ESAI接口中,IMX6的ESAI接口为多声道的接口;如5.1声道,7.1声道,按独立的I2S来考虑的话,
其可接三路I2S;相关结构体成员定义如下;
static struct snd_soc_dai_link imx_3stack_dai[] = {
{
.name = "HiFi",
.stream_name = "HiFi",
.codec_dai_name = "AK7757",
.codec_name = "ak7757-i2c.1-0054", //代表的是用I2C2来控制codec,其I2C地址为0x1c;I2CX,
X代表的是0,1,2,开始;
.cpu_dai_name = "imx-esai.0", //代表的是同一个声卡中的第一个设备与ESAI0相连;ESAIX
X代表0,1,2; esai.0 代表ESAI0,其实IMX6上只有一个ESAI接口
.platform_name = "imx-pcm-audio.3", //代表的是与ESAI来对应,在其连接的连接接口文件中将其排成3为了是不与SSI进行冲突;
.init = imx_3stack_ak7757_init,
.ops = &imx_3stack_surround_ops,
},
};
相关文章推荐
- IMX6的相关音频结构体的定义
- IMX6的相关音频结构体的定义 .
- IMX6的相关音频结构体的定义
- 结构体定义相关
- LPC1768的USB-相关结构体定义
- 链表的定义以及结构体,指针相关小结
- C规范(1) - 结构体或类定义的好习惯
- 详解C++程序中定义struct结构体的方法
- 结构体的定义和使用和位段的使用
- panda库中 reindex重新定义索引函数相关用法
- 结构体定义
- C++可以这样定义结构体(为成员指定有效位数)
- linux如何查找一个结构体的原始定义
- Linux设备驱动--块设备(二)之相关结构体
- 转:结构体定义 typedef struct 用法详解和用法小结
- 单链表的结构体定义和声明
- C语言 结构体成员定义及使用问题
- iMX6 音频编解码器 SGTL5000 扩展
- 顺序栈的定义及相关操作
- 1100: C语言程序设计教程(第三版)课后习题11.1--定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天。【两种方法】