Edit online

接口设计

3 Mar 2025
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:参数非法

注意事项

通过该函数,可以开始或停止音频的播放或录音