接口设计
5 Jul 2024
Read time: 2 minute(s)
函数原型 | 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:参数非法 |
注意事项 | - |
函数原型 | static int aic_i2s_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio) |
---|---|
功能说明 | 设置 S 模块 LRCK 与 BCLK 时钟频率的比率 |
参数定义 | dai:指向 dai 的指针 | ratio:需要设置的比率 |
返回值 | 0:执行成功 | -EINVAL:参数非法 |
注意事项 | - |
函数原型 | 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 的数据格式 |
函数原型 | 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:参数非法 |
注意事项 | - |
函数原型 | 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:参数非法 |
注意事项 | 通过该函数,可以设置采样精度,帧率,以及时钟等参数 |
函数原型 | 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:参数非法 |
注意事项 | 通过该函数,可以开始或停止音频的播放或录音 |