Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff819b83 authored by Dimitris Papastamos's avatar Dimitris Papastamos Committed by Mark Brown
Browse files

ASoC: soc-core: Generalize snd_soc_prefix_map and rename to snd_soc_codec_conf



The snd_soc_codec_conf struct now holds codec specific configuration
information.

A new configuration option has been added to allow machine drivers to
override the compression type set by the codec driver.

In the absence of providing an snd_soc_codec_conf struct or when providing
one but not setting the compress_type member to anything, the one supplied
by the codec driver will be used instead.  In all other cases the one
set in the snd_soc_codec_conf struct takes effect.

Signed-off-by: default avatarDimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: default avatarJarkko Nikula <jhnikula@gmail.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 119bd789
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -581,9 +581,20 @@ struct snd_soc_dai_link {
	struct snd_soc_ops *ops;
};

struct snd_soc_prefix_map {
struct snd_soc_codec_conf {
	const char *dev_name;

	/*
	 * optional map of kcontrol, widget and path name prefixes that are
	 * associated per device
	 */
	const char *name_prefix;

	/*
	 * set this to the desired compression type if you want to
	 * override the one supplied in codec->driver->compress_type
	 */
	enum snd_soc_compress_type compress_type;
};

struct snd_soc_aux_dev {
@@ -628,12 +639,9 @@ struct snd_soc_card {
	struct snd_soc_pcm_runtime *rtd;
	int num_rtd;

	/*
	 * optional map of kcontrol, widget and path name prefixes that are
	 * associated per device
	 */
	struct snd_soc_prefix_map *prefix_map;
	int num_prefixes;
	/* optional codec specific configuration */
	struct snd_soc_codec_conf *codec_conf;
	int num_configs;

	/*
	 * optional auxiliary devices such as amplifiers or codecs with DAI
+3 −3
Original line number Diff line number Diff line
@@ -1401,11 +1401,11 @@ static void soc_set_name_prefix(struct snd_soc_card *card,
{
	int i;

	if (card->prefix_map == NULL)
	if (card->codec_conf == NULL)
		return;

	for (i = 0; i < card->num_prefixes; i++) {
		struct snd_soc_prefix_map *map = &card->prefix_map[i];
	for (i = 0; i < card->num_configs; i++) {
		struct snd_soc_codec_conf *map = &card->codec_conf[i];
		if (map->dev_name && !strcmp(codec->name, map->dev_name)) {
			codec->name_prefix = map->name_prefix;
			break;