IMX6的相关音频结构体的定义
生活随笔
收集整理的這篇文章主要介紹了
IMX6的相关音频结构体的定义
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在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的相关音频结构体的定义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux电源管理(10)_autosl
- 下一篇: 查看内核中每个函数花费的时间 initc