Edit online

接口设计

5 Jul 2024
Read time: 2 minute(s)
1. aic_i2s_set_sysclk
函数原型 static int aic_i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int freq, int dir)
功能说明 设置 S 模块输出的 mclk 时钟频率
参数定义 dai:指向 dai 的指针 | clk_id:要设置的时钟 id | freq:设置的时钟频率 | dir: unused
返回值 0:执行成功 | -EINVAL:参数非法
注意事项 -
2. aic_i2s_set_bclk_ratio
函数原型 static int aic_i2s_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio)
功能说明 设置 S 模块 LRCK 与 BCLK 时钟频率的比率
参数定义 dai:指向 dai 的指针 | ratio:需要设置的比率
返回值 0:执行成功 | -EINVAL:参数非法
注意事项 -
3. aic_i2s_set_fmt
函数原型 static int aic_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
功能说明 设置 S 模块的格式
参数定义 dai:指向 dai 的指针 | fmt:需要设置的格式
返回值 0:执行成功 | -EINVAL:参数非法
注意事项 通过该函数可以设置的格式有: | 1. I2S 的主从模式 | 2. BCLK 和 LRCK 的极性 | 3. I2S 的数据格式
4. aic_i2s_set_tdm_slot
函数原型 static int aic_i2s_set_tdm_slot(struct snd_soc_dai *dai,unsigned int tx_mask, unsigned int rx_mask,int slots, int slot_width)
功能说明 设置 S 模块 TDM 模式下的通道个数和宽度
参数定义 dai:指向 dai 的指针 | tx_mask:tx slot 的 mask | rx_mask:rx slot 的 mask | slots:设置的通道个数 | slot_width:设置的通道宽度
返回值 0:执行成功 | -EINVAL:参数非法
注意事项 -
5. aic_i2s_hw_params
函数原型 static int aic_i2s_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
功能说明 设置 S 模块硬件参数
参数定义 substream:指向 playback 或 capture 的 substream | params:指向硬件参数指针 | dai:指向 dai 的指针
返回值 0:执行成功 | -EINVAL:参数非法
注意事项 通过该函数,可以设置采样精度,帧率,以及时钟等参数
6. aic_i2s_trigger
函数原型 static int aic_i2s_trigger(struct snd_pcm_substream *substream, int cmd, struct snd_soc_dai *dai)
功能说明 I2S 的触发函数
参数定义 substream:指向 playback 或 capture 的 substream | cmd:触发的命令 | dai:指向 dai 的指针
返回值 0:执行成功 | -EINVAL:参数非法
注意事项 通过该函数,可以开始或停止音频的播放或录音