第4篇 machine,platform,codec

发布时间 2023-09-05 09:34:53作者: charlie12345

参考:韦东山Linux教程

(1)machine : 单板相关								//结构体: struct snd_soc_card -> struct snd_soc_dai_link
	1)表明 platform 是哪个, 通过 snd_soc_dai_link 指定名字,进行匹配
		1. 指定 CPU DAI (IIS)
		2. snd_soc_platform_driver(指定 DMA)
	2)表明 codec 是哪个, 通过 snd_soc_dai_link 指定名字,进行匹配
		1. 指定 codec DAI 
		2. snd_soc_code_driver(指定控制接口 (L3) )
		
(2)platform: 	//2440板
	1)CPU DAI (IIS): 设置接口, 					//结构体: struct snd_soc_dai_driver
		1. 实现对2440板 IIS 控制器的设置(hw_params, fmt, clkdiv, sysclk)
		2. 与 IIS 和 音频数据传输 的控制(trigger)
	2)snd_soc_platform_driver(指定 DMA): 配合 IIS 实现音频数据的传输  		//结构体: struct snd_soc_platform_driver	//应该理解为 
		1. request_irq, 触发DMA传输, 中断处理
		
(3)codec: 		//编解码芯片
	1)DAI (IIS): 									//结构体: struct snd_soc_dai_driver
		1. 与 IIS 和 音频数据传输 的控制(startup)
		2. 与 IIS 和 音频数据传输 相关的参数设置,比如时钟设置,格式(hw_params, fmt, sysclk)		//可能会用到 L3 操作
	2)snd_soc_code_driver(指定控制接口 (L3) ): 							//结构体: struct snd_soc_codec_driver		//应该理解为 codec_driver
		1. 实现 L3 引脚的初始化, 用 GPIO 模拟
		2. 实现对寄存器操作函数 (UDA1341的寄存器),按时序(read, write, reg地址)

注意: 
	DAI (Digital Audio Interface)

Machine : struct snd_soc_dai_link
	指定下面的 Platform 和 Codec : 
		codec_name, platform_name, cpu_dai_name, codec_dai_name, ops
Platform : 
	CPU_DAI : struct snd_soc_dai_driver
						.name		//machine 中的 dai_link 通过 cpu_dai_name 来匹配 cpu_dai
						.palyback 	//回放数据流性能描述信息
						.capture	//录制数据流性能描述信息
						.ops		//操作函数集合,将数据从 I2S_Tx_buf --> Codec 
	PCM_DMA : struct snd_soc_platform_driver
						.name
						.struct snd_kcontrol_new *controls;	//音频控件指针
						.ops		//操作函数集合,操作 DMA_buf --> I2S_Tx_buf
Codec: 
	Codec : struct snd_soc_code_driver
						.struct snd_kcontrol_new *controls;	//音频控件指针
						.set_sysclk : 时钟配置函数
						.read :  读取 Codec 寄存器接口, 如可通过 /dev/controlC0 读取 Codec 的音量
						.write : 写入 Codec 寄存器接口, 如可通过 /dev/controlC0 设置 Codec 的音量
						
	Codec_DAI: struct snd_soc_dai_driver
						.name		//machine 中的 dai_link 通过 codec_dai_name 来匹配 codec_dai
						.palyback 	//回放数据流性能描述信息
						.capture	//录制数据流性能描述信息
						.ops		//操作函数集合,配置 DAI 时钟,格式 等