Custom ASOC codec driver

Christian N cnegris01 at gmail.com
Tue Oct 11 16:23:40 EDT 2016


Hi All

I'm implementing a driver for TEF663x, and link (machine driver) to
iMX6 (kernel 4.x)
I understand ALSA and ASOC layers and architecture. I have good
knowledge about both chipset (soc and codec). Nevertheless I am really
confused with asoc structures, wich fields are mandatory and some
links between platform, machine and codec.

1-Why teh followin controls are duplicated? When muste ia have to use each one?
struct snd_soc_component_driver{
....
	/* Default control and setup, added after probe() is run */
	const struct snd_kcontrol_new *controls;
	unsigned int num_controls;
	const struct snd_soc_dapm_widget *dapm_widgets;
	unsigned int num_dapm_widgets;
	const struct snd_soc_dapm_route *dapm_routes;
	unsigned int num_dapm_routes;
....
}

but this struct is included in snd_soc_codec_driver, which one has his
own widgets, routes and kcontrols
struct snd_soc_codec_driver {
.....
        struct snd_soc_component_driver component_driver;
	/* Default control and setup, added after probe() is run */
	const struct snd_kcontrol_new *controls;
	int num_controls;
	const struct snd_soc_dapm_widget *dapm_widgets;
	int num_dapm_widgets;
	const struct snd_soc_dapm_route *dapm_routes;
	int num_dapm_routes;
....

}

2-In kernel/Documentation/sound/alsa/soc/platform.txt, states "The
platform drivers only target the SoC CPU and must have no board
specific code", but several CODEC drivers have struct
snd_soc_platform_driver defined
Is it an specifications missleading, or bad codec implementation?

3-Is there any document/guide to implement asoc driver, or ASOC is
under development, and the mess should be organized


I was looking for information at
http://processors.wiki.ti.com/index.php/Sitara_Linux_Audio_DAC_Example
kernel/Documentation/sound/alsa/soc
ALSA home page (of curse writing alsa driver)
http://blog.csdn.net/sepnic/article/category/778492
Several kernel source files (each manufacturer have his own way :( )


Thanks ind advance



More information about the Kernelnewbies mailing list