Commit 23bbce34 authored by Dimitris Papastamos's avatar Dimitris Papastamos Committed by Mark Brown

ASoC: Add compress_type as a member to snd_soc_codec

We need to keep a copy of the compress_type supplied by the codec driver
so that we can override it if necessary with whatever the machine driver
has provided us with.  The reason for not modifying the codec->driver
struct directly is that ideally we'd like to keep it const.

Adjust the code in soc-cache and soc-core to make use of the compress_type
member in the snd_soc_codec struct.
Signed-off-by: default avatarDimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 676ad98a
...@@ -460,6 +460,7 @@ struct snd_soc_codec { ...@@ -460,6 +460,7 @@ struct snd_soc_codec {
struct list_head list; struct list_head list;
struct list_head card_list; struct list_head card_list;
int num_dai; int num_dai;
enum snd_soc_compress_type compress_type;
/* runtime */ /* runtime */
struct snd_ac97 *ac97; /* for ad-hoc ac97 devices */ struct snd_ac97 *ac97; /* for ad-hoc ac97 devices */
......
...@@ -1550,11 +1550,11 @@ int snd_soc_cache_init(struct snd_soc_codec *codec) ...@@ -1550,11 +1550,11 @@ int snd_soc_cache_init(struct snd_soc_codec *codec)
int i; int i;
for (i = 0; i < ARRAY_SIZE(cache_types); ++i) for (i = 0; i < ARRAY_SIZE(cache_types); ++i)
if (cache_types[i].id == codec->driver->compress_type) if (cache_types[i].id == codec->compress_type)
break; break;
if (i == ARRAY_SIZE(cache_types)) { if (i == ARRAY_SIZE(cache_types)) {
dev_err(codec->dev, "Could not match compress type: %d\n", dev_err(codec->dev, "Could not match compress type: %d\n",
codec->driver->compress_type); codec->compress_type);
return -EINVAL; return -EINVAL;
} }
......
...@@ -3450,6 +3450,11 @@ int snd_soc_register_codec(struct device *dev, ...@@ -3450,6 +3450,11 @@ int snd_soc_register_codec(struct device *dev,
return -ENOMEM; return -ENOMEM;
} }
if (codec_drv->compress_type)
codec->compress_type = codec_drv->compress_type;
else
codec->compress_type = SND_SOC_FLAT_COMPRESSION;
INIT_LIST_HEAD(&codec->dapm.widgets); INIT_LIST_HEAD(&codec->dapm.widgets);
INIT_LIST_HEAD(&codec->dapm.paths); INIT_LIST_HEAD(&codec->dapm.paths);
codec->write = codec_drv->write; codec->write = codec_drv->write;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment