提交 6627a653 编写于 作者: M Mark Brown

ASoC: Push the codec runtime storage into the card structure

This is a further stage on the road to refactoring away the ASoC
platform device.
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 0db4d070
...@@ -418,6 +418,8 @@ struct snd_soc_card { ...@@ -418,6 +418,8 @@ struct snd_soc_card {
struct snd_soc_device *socdev; struct snd_soc_device *socdev;
struct snd_soc_codec *codec;
struct snd_soc_platform *platform; struct snd_soc_platform *platform;
struct delayed_work delayed_work; struct delayed_work delayed_work;
struct work_struct deferred_resume_work; struct work_struct deferred_resume_work;
...@@ -427,7 +429,6 @@ struct snd_soc_card { ...@@ -427,7 +429,6 @@ struct snd_soc_card {
struct snd_soc_device { struct snd_soc_device {
struct device *dev; struct device *dev;
struct snd_soc_card *card; struct snd_soc_card *card;
struct snd_soc_codec *codec;
struct snd_soc_codec_device *codec_dev; struct snd_soc_codec_device *codec_dev;
void *codec_data; void *codec_data;
}; };
......
...@@ -30,7 +30,7 @@ static int ac97_prepare(struct snd_pcm_substream *substream, ...@@ -30,7 +30,7 @@ static int ac97_prepare(struct snd_pcm_substream *substream,
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int reg = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ? int reg = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
AC97_PCM_FRONT_DAC_RATE : AC97_PCM_LR_ADC_RATE; AC97_PCM_FRONT_DAC_RATE : AC97_PCM_LR_ADC_RATE;
...@@ -84,10 +84,10 @@ static int ac97_soc_probe(struct platform_device *pdev) ...@@ -84,10 +84,10 @@ static int ac97_soc_probe(struct platform_device *pdev)
printk(KERN_INFO "AC97 SoC Audio Codec %s\n", AC97_VERSION); printk(KERN_INFO "AC97 SoC Audio Codec %s\n", AC97_VERSION);
socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
if (!socdev->codec) if (!socdev->card->codec)
return -ENOMEM; return -ENOMEM;
codec = socdev->codec; codec = socdev->card->codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
codec->name = "AC97"; codec->name = "AC97";
...@@ -123,21 +123,21 @@ static int ac97_soc_probe(struct platform_device *pdev) ...@@ -123,21 +123,21 @@ static int ac97_soc_probe(struct platform_device *pdev)
snd_soc_free_pcms(socdev); snd_soc_free_pcms(socdev);
err: err:
kfree(socdev->codec); kfree(socdev->card->codec);
socdev->codec = NULL; socdev->card->codec = NULL;
return ret; return ret;
} }
static int ac97_soc_remove(struct platform_device *pdev) static int ac97_soc_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (!codec) if (!codec)
return 0; return 0;
snd_soc_free_pcms(socdev); snd_soc_free_pcms(socdev);
kfree(socdev->codec); kfree(socdev->card->codec);
return 0; return 0;
} }
...@@ -147,7 +147,7 @@ static int ac97_soc_suspend(struct platform_device *pdev, pm_message_t msg) ...@@ -147,7 +147,7 @@ static int ac97_soc_suspend(struct platform_device *pdev, pm_message_t msg)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
snd_ac97_suspend(socdev->codec->ac97); snd_ac97_suspend(socdev->card->codec->ac97);
return 0; return 0;
} }
...@@ -156,7 +156,7 @@ static int ac97_soc_resume(struct platform_device *pdev) ...@@ -156,7 +156,7 @@ static int ac97_soc_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
snd_ac97_resume(socdev->codec->ac97); snd_ac97_resume(socdev->card->codec->ac97);
return 0; return 0;
} }
......
...@@ -186,10 +186,10 @@ static int ad1980_soc_probe(struct platform_device *pdev) ...@@ -186,10 +186,10 @@ static int ad1980_soc_probe(struct platform_device *pdev)
printk(KERN_INFO "AD1980 SoC Audio Codec\n"); printk(KERN_INFO "AD1980 SoC Audio Codec\n");
socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
if (socdev->codec == NULL) if (socdev->card->codec == NULL)
return -ENOMEM; return -ENOMEM;
codec = socdev->codec; codec = socdev->card->codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
codec->reg_cache = codec->reg_cache =
...@@ -275,15 +275,15 @@ static int ad1980_soc_probe(struct platform_device *pdev) ...@@ -275,15 +275,15 @@ static int ad1980_soc_probe(struct platform_device *pdev)
kfree(codec->reg_cache); kfree(codec->reg_cache);
cache_err: cache_err:
kfree(socdev->codec); kfree(socdev->card->codec);
socdev->codec = NULL; socdev->card->codec = NULL;
return ret; return ret;
} }
static int ad1980_soc_remove(struct platform_device *pdev) static int ad1980_soc_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec == NULL) if (codec == NULL)
return 0; return 0;
......
...@@ -53,7 +53,7 @@ static int ad73311_soc_probe(struct platform_device *pdev) ...@@ -53,7 +53,7 @@ static int ad73311_soc_probe(struct platform_device *pdev)
codec->owner = THIS_MODULE; codec->owner = THIS_MODULE;
codec->dai = &ad73311_dai; codec->dai = &ad73311_dai;
codec->num_dai = 1; codec->num_dai = 1;
socdev->codec = codec; socdev->card->codec = codec;
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -75,15 +75,15 @@ static int ad73311_soc_probe(struct platform_device *pdev) ...@@ -75,15 +75,15 @@ static int ad73311_soc_probe(struct platform_device *pdev)
register_err: register_err:
snd_soc_free_pcms(socdev); snd_soc_free_pcms(socdev);
pcm_err: pcm_err:
kfree(socdev->codec); kfree(socdev->card->codec);
socdev->codec = NULL; socdev->card->codec = NULL;
return ret; return ret;
} }
static int ad73311_soc_remove(struct platform_device *pdev) static int ad73311_soc_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec == NULL) if (codec == NULL)
return 0; return 0;
......
...@@ -329,7 +329,7 @@ static int ak4535_hw_params(struct snd_pcm_substream *substream, ...@@ -329,7 +329,7 @@ static int ak4535_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct ak4535_priv *ak4535 = codec->private_data; struct ak4535_priv *ak4535 = codec->private_data;
u8 mode2 = ak4535_read_reg_cache(codec, AK4535_MODE2) & ~(0x3 << 5); u8 mode2 = ak4535_read_reg_cache(codec, AK4535_MODE2) & ~(0x3 << 5);
int rate = params_rate(params), fs = 256; int rate = params_rate(params), fs = 256;
...@@ -447,7 +447,7 @@ EXPORT_SYMBOL_GPL(ak4535_dai); ...@@ -447,7 +447,7 @@ EXPORT_SYMBOL_GPL(ak4535_dai);
static int ak4535_suspend(struct platform_device *pdev, pm_message_t state) static int ak4535_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
ak4535_set_bias_level(codec, SND_SOC_BIAS_OFF); ak4535_set_bias_level(codec, SND_SOC_BIAS_OFF);
return 0; return 0;
...@@ -456,7 +456,7 @@ static int ak4535_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -456,7 +456,7 @@ static int ak4535_suspend(struct platform_device *pdev, pm_message_t state)
static int ak4535_resume(struct platform_device *pdev) static int ak4535_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
ak4535_sync(codec); ak4535_sync(codec);
ak4535_set_bias_level(codec, SND_SOC_BIAS_STANDBY); ak4535_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
ak4535_set_bias_level(codec, codec->suspend_bias_level); ak4535_set_bias_level(codec, codec->suspend_bias_level);
...@@ -469,7 +469,7 @@ static int ak4535_resume(struct platform_device *pdev) ...@@ -469,7 +469,7 @@ static int ak4535_resume(struct platform_device *pdev)
*/ */
static int ak4535_init(struct snd_soc_device *socdev) static int ak4535_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret = 0; int ret = 0;
codec->name = "AK4535"; codec->name = "AK4535";
...@@ -523,7 +523,7 @@ static int ak4535_i2c_probe(struct i2c_client *i2c, ...@@ -523,7 +523,7 @@ static int ak4535_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = ak4535_socdev; struct snd_soc_device *socdev = ak4535_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -622,7 +622,7 @@ static int ak4535_probe(struct platform_device *pdev) ...@@ -622,7 +622,7 @@ static int ak4535_probe(struct platform_device *pdev)
} }
codec->private_data = ak4535; codec->private_data = ak4535;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -649,7 +649,7 @@ static int ak4535_probe(struct platform_device *pdev) ...@@ -649,7 +649,7 @@ static int ak4535_probe(struct platform_device *pdev)
static int ak4535_remove(struct platform_device *pdev) static int ak4535_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
ak4535_set_bias_level(codec, SND_SOC_BIAS_OFF); ak4535_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -350,7 +350,7 @@ static int cs4270_hw_params(struct snd_pcm_substream *substream, ...@@ -350,7 +350,7 @@ static int cs4270_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct cs4270_private *cs4270 = codec->private_data; struct cs4270_private *cs4270 = codec->private_data;
int ret; int ret;
unsigned int i; unsigned int i;
...@@ -575,7 +575,7 @@ static int cs4270_i2c_probe(struct i2c_client *i2c_client, ...@@ -575,7 +575,7 @@ static int cs4270_i2c_probe(struct i2c_client *i2c_client,
return -ENOMEM; return -ENOMEM;
} }
codec = &cs4270->codec; codec = &cs4270->codec;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
...@@ -653,7 +653,7 @@ static int cs4270_i2c_probe(struct i2c_client *i2c_client, ...@@ -653,7 +653,7 @@ static int cs4270_i2c_probe(struct i2c_client *i2c_client,
static int cs4270_i2c_remove(struct i2c_client *i2c_client) static int cs4270_i2c_remove(struct i2c_client *i2c_client)
{ {
struct snd_soc_device *socdev = i2c_get_clientdata(i2c_client); struct snd_soc_device *socdev = i2c_get_clientdata(i2c_client);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct cs4270_private *cs4270 = codec->private_data; struct cs4270_private *cs4270 = codec->private_data;
snd_soc_free_pcms(socdev); snd_soc_free_pcms(socdev);
......
...@@ -67,11 +67,11 @@ static int pcm3008_soc_probe(struct platform_device *pdev) ...@@ -67,11 +67,11 @@ static int pcm3008_soc_probe(struct platform_device *pdev)
printk(KERN_INFO "PCM3008 SoC Audio Codec %s\n", PCM3008_VERSION); printk(KERN_INFO "PCM3008 SoC Audio Codec %s\n", PCM3008_VERSION);
socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
if (!socdev->codec) if (!socdev->card->codec)
return -ENOMEM; return -ENOMEM;
codec = socdev->codec; codec = socdev->card->codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
codec->name = "PCM3008"; codec->name = "PCM3008";
...@@ -139,7 +139,7 @@ static int pcm3008_soc_probe(struct platform_device *pdev) ...@@ -139,7 +139,7 @@ static int pcm3008_soc_probe(struct platform_device *pdev)
card_err: card_err:
snd_soc_free_pcms(socdev); snd_soc_free_pcms(socdev);
pcm_err: pcm_err:
kfree(socdev->codec); kfree(socdev->card->codec);
return ret; return ret;
} }
...@@ -147,7 +147,7 @@ static int pcm3008_soc_probe(struct platform_device *pdev) ...@@ -147,7 +147,7 @@ static int pcm3008_soc_probe(struct platform_device *pdev)
static int pcm3008_soc_remove(struct platform_device *pdev) static int pcm3008_soc_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct pcm3008_setup_data *setup = socdev->codec_data; struct pcm3008_setup_data *setup = socdev->codec_data;
if (!codec) if (!codec)
...@@ -155,7 +155,7 @@ static int pcm3008_soc_remove(struct platform_device *pdev) ...@@ -155,7 +155,7 @@ static int pcm3008_soc_remove(struct platform_device *pdev)
pcm3008_gpio_free(setup); pcm3008_gpio_free(setup);
snd_soc_free_pcms(socdev); snd_soc_free_pcms(socdev);
kfree(socdev->codec); kfree(socdev->card->codec);
return 0; return 0;
} }
......
...@@ -276,7 +276,7 @@ static int ssm2602_hw_params(struct snd_pcm_substream *substream, ...@@ -276,7 +276,7 @@ static int ssm2602_hw_params(struct snd_pcm_substream *substream,
u16 srate; u16 srate;
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct ssm2602_priv *ssm2602 = codec->private_data; struct ssm2602_priv *ssm2602 = codec->private_data;
struct i2c_client *i2c = codec->control_data; struct i2c_client *i2c = codec->control_data;
u16 iface = ssm2602_read_reg_cache(codec, SSM2602_IFACE) & 0xfff3; u16 iface = ssm2602_read_reg_cache(codec, SSM2602_IFACE) & 0xfff3;
...@@ -321,7 +321,7 @@ static int ssm2602_startup(struct snd_pcm_substream *substream, ...@@ -321,7 +321,7 @@ static int ssm2602_startup(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct ssm2602_priv *ssm2602 = codec->private_data; struct ssm2602_priv *ssm2602 = codec->private_data;
struct i2c_client *i2c = codec->control_data; struct i2c_client *i2c = codec->control_data;
struct snd_pcm_runtime *master_runtime; struct snd_pcm_runtime *master_runtime;
...@@ -358,7 +358,7 @@ static int ssm2602_pcm_prepare(struct snd_pcm_substream *substream, ...@@ -358,7 +358,7 @@ static int ssm2602_pcm_prepare(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
/* set active */ /* set active */
ssm2602_write(codec, SSM2602_ACTIVE, ACTIVE_ACTIVATE_CODEC); ssm2602_write(codec, SSM2602_ACTIVE, ACTIVE_ACTIVATE_CODEC);
...@@ -370,7 +370,7 @@ static void ssm2602_shutdown(struct snd_pcm_substream *substream, ...@@ -370,7 +370,7 @@ static void ssm2602_shutdown(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct ssm2602_priv *ssm2602 = codec->private_data; struct ssm2602_priv *ssm2602 = codec->private_data;
/* deactivate */ /* deactivate */
if (!codec->active) if (!codec->active)
...@@ -535,7 +535,7 @@ EXPORT_SYMBOL_GPL(ssm2602_dai); ...@@ -535,7 +535,7 @@ EXPORT_SYMBOL_GPL(ssm2602_dai);
static int ssm2602_suspend(struct platform_device *pdev, pm_message_t state) static int ssm2602_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF); ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF);
return 0; return 0;
...@@ -544,7 +544,7 @@ static int ssm2602_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -544,7 +544,7 @@ static int ssm2602_suspend(struct platform_device *pdev, pm_message_t state)
static int ssm2602_resume(struct platform_device *pdev) static int ssm2602_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u8 data[2]; u8 data[2];
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -566,7 +566,7 @@ static int ssm2602_resume(struct platform_device *pdev) ...@@ -566,7 +566,7 @@ static int ssm2602_resume(struct platform_device *pdev)
*/ */
static int ssm2602_init(struct snd_soc_device *socdev) static int ssm2602_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int reg, ret = 0; int reg, ret = 0;
codec->name = "SSM2602"; codec->name = "SSM2602";
...@@ -639,7 +639,7 @@ static int ssm2602_i2c_probe(struct i2c_client *i2c, ...@@ -639,7 +639,7 @@ static int ssm2602_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = ssm2602_socdev; struct snd_soc_device *socdev = ssm2602_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -733,7 +733,7 @@ static int ssm2602_probe(struct platform_device *pdev) ...@@ -733,7 +733,7 @@ static int ssm2602_probe(struct platform_device *pdev)
} }
codec->private_data = ssm2602; codec->private_data = ssm2602;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -754,7 +754,7 @@ static int ssm2602_probe(struct platform_device *pdev) ...@@ -754,7 +754,7 @@ static int ssm2602_probe(struct platform_device *pdev)
static int ssm2602_remove(struct platform_device *pdev) static int ssm2602_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF); ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -405,7 +405,7 @@ static int tlv320aic23_hw_params(struct snd_pcm_substream *substream, ...@@ -405,7 +405,7 @@ static int tlv320aic23_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 iface_reg; u16 iface_reg;
int ret; int ret;
struct aic23 *aic23 = container_of(codec, struct aic23, codec); struct aic23 *aic23 = container_of(codec, struct aic23, codec);
...@@ -453,7 +453,7 @@ static int tlv320aic23_pcm_prepare(struct snd_pcm_substream *substream, ...@@ -453,7 +453,7 @@ static int tlv320aic23_pcm_prepare(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
/* set active */ /* set active */
tlv320aic23_write(codec, TLV320AIC23_ACTIVE, 0x0001); tlv320aic23_write(codec, TLV320AIC23_ACTIVE, 0x0001);
...@@ -466,7 +466,7 @@ static void tlv320aic23_shutdown(struct snd_pcm_substream *substream, ...@@ -466,7 +466,7 @@ static void tlv320aic23_shutdown(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct aic23 *aic23 = container_of(codec, struct aic23, codec); struct aic23 *aic23 = container_of(codec, struct aic23, codec);
/* deactivate */ /* deactivate */
...@@ -609,7 +609,7 @@ static int tlv320aic23_suspend(struct platform_device *pdev, ...@@ -609,7 +609,7 @@ static int tlv320aic23_suspend(struct platform_device *pdev,
pm_message_t state) pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
tlv320aic23_write(codec, TLV320AIC23_ACTIVE, 0x0); tlv320aic23_write(codec, TLV320AIC23_ACTIVE, 0x0);
tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_OFF); tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_OFF);
...@@ -620,7 +620,7 @@ static int tlv320aic23_suspend(struct platform_device *pdev, ...@@ -620,7 +620,7 @@ static int tlv320aic23_suspend(struct platform_device *pdev,
static int tlv320aic23_resume(struct platform_device *pdev) static int tlv320aic23_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u16 reg; u16 reg;
...@@ -642,7 +642,7 @@ static int tlv320aic23_resume(struct platform_device *pdev) ...@@ -642,7 +642,7 @@ static int tlv320aic23_resume(struct platform_device *pdev)
*/ */
static int tlv320aic23_init(struct snd_soc_device *socdev) static int tlv320aic23_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret = 0; int ret = 0;
u16 reg; u16 reg;
...@@ -729,7 +729,7 @@ static int tlv320aic23_codec_probe(struct i2c_client *i2c, ...@@ -729,7 +729,7 @@ static int tlv320aic23_codec_probe(struct i2c_client *i2c,
const struct i2c_device_id *i2c_id) const struct i2c_device_id *i2c_id)
{ {
struct snd_soc_device *socdev = tlv320aic23_socdev; struct snd_soc_device *socdev = tlv320aic23_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
if (!i2c_check_functionality(i2c->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) if (!i2c_check_functionality(i2c->adapter, I2C_FUNC_SMBUS_BYTE_DATA))
...@@ -787,7 +787,7 @@ static int tlv320aic23_probe(struct platform_device *pdev) ...@@ -787,7 +787,7 @@ static int tlv320aic23_probe(struct platform_device *pdev)
if (aic23 == NULL) if (aic23 == NULL)
return -ENOMEM; return -ENOMEM;
codec = &aic23->codec; codec = &aic23->codec;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -806,7 +806,7 @@ static int tlv320aic23_probe(struct platform_device *pdev) ...@@ -806,7 +806,7 @@ static int tlv320aic23_probe(struct platform_device *pdev)
static int tlv320aic23_remove(struct platform_device *pdev) static int tlv320aic23_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct aic23 *aic23 = container_of(codec, struct aic23, codec); struct aic23 *aic23 = container_of(codec, struct aic23, codec);
if (codec->control_data) if (codec->control_data)
......
...@@ -130,7 +130,7 @@ static int aic26_hw_params(struct snd_pcm_substream *substream, ...@@ -130,7 +130,7 @@ static int aic26_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct aic26 *aic26 = codec->private_data; struct aic26 *aic26 = codec->private_data;
int fsref, divisor, wlen, pval, jval, dval, qval; int fsref, divisor, wlen, pval, jval, dval, qval;
u16 reg; u16 reg;
...@@ -338,7 +338,7 @@ static int aic26_probe(struct platform_device *pdev) ...@@ -338,7 +338,7 @@ static int aic26_probe(struct platform_device *pdev)
return -ENODEV; return -ENODEV;
} }
codec = &aic26->codec; codec = &aic26->codec;
socdev->codec = codec; socdev->card->codec = codec;
dev_dbg(&pdev->dev, "Registering PCMs, dev=%p, socdev->dev=%p\n", dev_dbg(&pdev->dev, "Registering PCMs, dev=%p, socdev->dev=%p\n",
&pdev->dev, socdev->dev); &pdev->dev, socdev->dev);
......
...@@ -727,7 +727,7 @@ static int aic3x_hw_params(struct snd_pcm_substream *substream, ...@@ -727,7 +727,7 @@ static int aic3x_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct aic3x_priv *aic3x = codec->private_data; struct aic3x_priv *aic3x = codec->private_data;
int codec_clk = 0, bypass_pll = 0, fsref, last_clk = 0; int codec_clk = 0, bypass_pll = 0, fsref, last_clk = 0;
u8 data, r, p, pll_q, pll_p = 1, pll_r = 1, pll_j = 1; u8 data, r, p, pll_q, pll_p = 1, pll_r = 1, pll_j = 1;
...@@ -1079,7 +1079,7 @@ EXPORT_SYMBOL_GPL(aic3x_dai); ...@@ -1079,7 +1079,7 @@ EXPORT_SYMBOL_GPL(aic3x_dai);
static int aic3x_suspend(struct platform_device *pdev, pm_message_t state) static int aic3x_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
aic3x_set_bias_level(codec, SND_SOC_BIAS_OFF); aic3x_set_bias_level(codec, SND_SOC_BIAS_OFF);
...@@ -1089,7 +1089,7 @@ static int aic3x_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -1089,7 +1089,7 @@ static int aic3x_suspend(struct platform_device *pdev, pm_message_t state)
static int aic3x_resume(struct platform_device *pdev) static int aic3x_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u8 data[2]; u8 data[2];
u8 *cache = codec->reg_cache; u8 *cache = codec->reg_cache;
...@@ -1112,7 +1112,7 @@ static int aic3x_resume(struct platform_device *pdev) ...@@ -1112,7 +1112,7 @@ static int aic3x_resume(struct platform_device *pdev)
*/ */
static int aic3x_init(struct snd_soc_device *socdev) static int aic3x_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct aic3x_setup_data *setup = socdev->codec_data; struct aic3x_setup_data *setup = socdev->codec_data;
int reg, ret = 0; int reg, ret = 0;
...@@ -1243,7 +1243,7 @@ static int aic3x_i2c_probe(struct i2c_client *i2c, ...@@ -1243,7 +1243,7 @@ static int aic3x_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = aic3x_socdev; struct snd_soc_device *socdev = aic3x_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -1348,7 +1348,7 @@ static int aic3x_probe(struct platform_device *pdev) ...@@ -1348,7 +1348,7 @@ static int aic3x_probe(struct platform_device *pdev)
} }
codec->private_data = aic3x; codec->private_data = aic3x;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -1374,7 +1374,7 @@ static int aic3x_probe(struct platform_device *pdev) ...@@ -1374,7 +1374,7 @@ static int aic3x_probe(struct platform_device *pdev)
static int aic3x_remove(struct platform_device *pdev) static int aic3x_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
/* power down chip */ /* power down chip */
if (codec->control_data) if (codec->control_data)
......
...@@ -981,7 +981,7 @@ static int twl4030_hw_params(struct snd_pcm_substream *substream, ...@@ -981,7 +981,7 @@ static int twl4030_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u8 mode, old_mode, format, old_format; u8 mode, old_mode, format, old_format;
...@@ -1166,7 +1166,7 @@ EXPORT_SYMBOL_GPL(twl4030_dai); ...@@ -1166,7 +1166,7 @@ EXPORT_SYMBOL_GPL(twl4030_dai);
static int twl4030_suspend(struct platform_device *pdev, pm_message_t state) static int twl4030_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
twl4030_set_bias_level(codec, SND_SOC_BIAS_OFF); twl4030_set_bias_level(codec, SND_SOC_BIAS_OFF);
...@@ -1176,7 +1176,7 @@ static int twl4030_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -1176,7 +1176,7 @@ static int twl4030_suspend(struct platform_device *pdev, pm_message_t state)
static int twl4030_resume(struct platform_device *pdev) static int twl4030_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
twl4030_set_bias_level(codec, SND_SOC_BIAS_STANDBY); twl4030_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
twl4030_set_bias_level(codec, codec->suspend_bias_level); twl4030_set_bias_level(codec, codec->suspend_bias_level);
...@@ -1190,7 +1190,7 @@ static int twl4030_resume(struct platform_device *pdev) ...@@ -1190,7 +1190,7 @@ static int twl4030_resume(struct platform_device *pdev)
static int twl4030_init(struct snd_soc_device *socdev) static int twl4030_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret = 0; int ret = 0;
printk(KERN_INFO "TWL4030 Audio Codec init \n"); printk(KERN_INFO "TWL4030 Audio Codec init \n");
...@@ -1251,7 +1251,7 @@ static int twl4030_probe(struct platform_device *pdev) ...@@ -1251,7 +1251,7 @@ static int twl4030_probe(struct platform_device *pdev)
if (codec == NULL) if (codec == NULL)
return -ENOMEM; return -ENOMEM;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -1265,7 +1265,7 @@ static int twl4030_probe(struct platform_device *pdev) ...@@ -1265,7 +1265,7 @@ static int twl4030_probe(struct platform_device *pdev)
static int twl4030_remove(struct platform_device *pdev) static int twl4030_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
printk(KERN_INFO "TWL4030 Audio Codec remove\n"); printk(KERN_INFO "TWL4030 Audio Codec remove\n");
snd_soc_free_pcms(socdev); snd_soc_free_pcms(socdev);
......
...@@ -173,7 +173,7 @@ static int uda134x_startup(struct snd_pcm_substream *substream, ...@@ -173,7 +173,7 @@ static int uda134x_startup(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct uda134x_priv *uda134x = codec->private_data; struct uda134x_priv *uda134x = codec->private_data;
struct snd_pcm_runtime *master_runtime; struct snd_pcm_runtime *master_runtime;
...@@ -206,7 +206,7 @@ static void uda134x_shutdown(struct snd_pcm_substream *substream, ...@@ -206,7 +206,7 @@ static void uda134x_shutdown(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct uda134x_priv *uda134x = codec->private_data; struct uda134x_priv *uda134x = codec->private_data;
if (uda134x->master_substream == substream) if (uda134x->master_substream == substream)
...@@ -221,7 +221,7 @@ static int uda134x_hw_params(struct snd_pcm_substream *substream, ...@@ -221,7 +221,7 @@ static int uda134x_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct uda134x_priv *uda134x = codec->private_data; struct uda134x_priv *uda134x = codec->private_data;
u8 hw_params; u8 hw_params;
...@@ -492,11 +492,11 @@ static int uda134x_soc_probe(struct platform_device *pdev) ...@@ -492,11 +492,11 @@ static int uda134x_soc_probe(struct platform_device *pdev)
return -EINVAL; return -EINVAL;
} }
socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
if (socdev->codec == NULL) if (socdev->card->codec == NULL)
return ret; return ret;
codec = socdev->codec; codec = socdev->card->codec;
uda134x = kzalloc(sizeof(struct uda134x_priv), GFP_KERNEL); uda134x = kzalloc(sizeof(struct uda134x_priv), GFP_KERNEL);
if (uda134x == NULL) if (uda134x == NULL)
...@@ -584,7 +584,7 @@ static int uda134x_soc_probe(struct platform_device *pdev) ...@@ -584,7 +584,7 @@ static int uda134x_soc_probe(struct platform_device *pdev)
static int uda134x_soc_remove(struct platform_device *pdev) static int uda134x_soc_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
uda134x_set_bias_level(codec, SND_SOC_BIAS_STANDBY); uda134x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
uda134x_set_bias_level(codec, SND_SOC_BIAS_OFF); uda134x_set_bias_level(codec, SND_SOC_BIAS_OFF);
...@@ -604,7 +604,7 @@ static int uda134x_soc_suspend(struct platform_device *pdev, ...@@ -604,7 +604,7 @@ static int uda134x_soc_suspend(struct platform_device *pdev,
pm_message_t state) pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
uda134x_set_bias_level(codec, SND_SOC_BIAS_STANDBY); uda134x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
uda134x_set_bias_level(codec, SND_SOC_BIAS_OFF); uda134x_set_bias_level(codec, SND_SOC_BIAS_OFF);
...@@ -614,7 +614,7 @@ static int uda134x_soc_suspend(struct platform_device *pdev, ...@@ -614,7 +614,7 @@ static int uda134x_soc_suspend(struct platform_device *pdev,
static int uda134x_soc_resume(struct platform_device *pdev) static int uda134x_soc_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
uda134x_set_bias_level(codec, SND_SOC_BIAS_PREPARE); uda134x_set_bias_level(codec, SND_SOC_BIAS_PREPARE);
uda134x_set_bias_level(codec, SND_SOC_BIAS_ON); uda134x_set_bias_level(codec, SND_SOC_BIAS_ON);
......
...@@ -397,7 +397,7 @@ static int uda1380_pcm_prepare(struct snd_pcm_substream *substream, ...@@ -397,7 +397,7 @@ static int uda1380_pcm_prepare(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int reg, reg_start, reg_end, clk; int reg, reg_start, reg_end, clk;
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
...@@ -430,7 +430,7 @@ static int uda1380_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -430,7 +430,7 @@ static int uda1380_pcm_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK); u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK);
/* set WSPLL power and divider if running from this clock */ /* set WSPLL power and divider if running from this clock */
...@@ -469,7 +469,7 @@ static void uda1380_pcm_shutdown(struct snd_pcm_substream *substream, ...@@ -469,7 +469,7 @@ static void uda1380_pcm_shutdown(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK); u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK);
/* shut down WSPLL power if running from this clock */ /* shut down WSPLL power if running from this clock */
...@@ -591,7 +591,7 @@ EXPORT_SYMBOL_GPL(uda1380_dai); ...@@ -591,7 +591,7 @@ EXPORT_SYMBOL_GPL(uda1380_dai);
static int uda1380_suspend(struct platform_device *pdev, pm_message_t state) static int uda1380_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
uda1380_set_bias_level(codec, SND_SOC_BIAS_OFF); uda1380_set_bias_level(codec, SND_SOC_BIAS_OFF);
return 0; return 0;
...@@ -600,7 +600,7 @@ static int uda1380_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -600,7 +600,7 @@ static int uda1380_suspend(struct platform_device *pdev, pm_message_t state)
static int uda1380_resume(struct platform_device *pdev) static int uda1380_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u8 data[2]; u8 data[2];
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -622,7 +622,7 @@ static int uda1380_resume(struct platform_device *pdev) ...@@ -622,7 +622,7 @@ static int uda1380_resume(struct platform_device *pdev)
*/ */
static int uda1380_init(struct snd_soc_device *socdev, int dac_clk) static int uda1380_init(struct snd_soc_device *socdev, int dac_clk)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret = 0; int ret = 0;
codec->name = "UDA1380"; codec->name = "UDA1380";
...@@ -688,7 +688,7 @@ static int uda1380_i2c_probe(struct i2c_client *i2c, ...@@ -688,7 +688,7 @@ static int uda1380_i2c_probe(struct i2c_client *i2c,
{ {
struct snd_soc_device *socdev = uda1380_socdev; struct snd_soc_device *socdev = uda1380_socdev;
struct uda1380_setup_data *setup = socdev->codec_data; struct uda1380_setup_data *setup = socdev->codec_data;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -779,7 +779,7 @@ static int uda1380_probe(struct platform_device *pdev) ...@@ -779,7 +779,7 @@ static int uda1380_probe(struct platform_device *pdev)
if (codec == NULL) if (codec == NULL)
return -ENOMEM; return -ENOMEM;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -803,7 +803,7 @@ static int uda1380_probe(struct platform_device *pdev) ...@@ -803,7 +803,7 @@ static int uda1380_probe(struct platform_device *pdev)
static int uda1380_remove(struct platform_device *pdev) static int uda1380_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
uda1380_set_bias_level(codec, SND_SOC_BIAS_OFF); uda1380_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -1301,7 +1301,7 @@ static int wm8350_set_bias_level(struct snd_soc_codec *codec, ...@@ -1301,7 +1301,7 @@ static int wm8350_set_bias_level(struct snd_soc_codec *codec,
static int wm8350_suspend(struct platform_device *pdev, pm_message_t state) static int wm8350_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm8350_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8350_set_bias_level(codec, SND_SOC_BIAS_OFF);
return 0; return 0;
...@@ -1310,7 +1310,7 @@ static int wm8350_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -1310,7 +1310,7 @@ static int wm8350_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8350_resume(struct platform_device *pdev) static int wm8350_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm8350_set_bias_level(codec, SND_SOC_BIAS_STANDBY); wm8350_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
...@@ -1423,8 +1423,8 @@ static int wm8350_probe(struct platform_device *pdev) ...@@ -1423,8 +1423,8 @@ static int wm8350_probe(struct platform_device *pdev)
BUG_ON(!wm8350_codec); BUG_ON(!wm8350_codec);
socdev->codec = wm8350_codec; socdev->card->codec = wm8350_codec;
codec = socdev->codec; codec = socdev->card->codec;
wm8350 = codec->control_data; wm8350 = codec->control_data;
priv = codec->private_data; priv = codec->private_data;
...@@ -1498,7 +1498,7 @@ static int wm8350_probe(struct platform_device *pdev) ...@@ -1498,7 +1498,7 @@ static int wm8350_probe(struct platform_device *pdev)
static int wm8350_remove(struct platform_device *pdev) static int wm8350_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8350 *wm8350 = codec->control_data; struct wm8350 *wm8350 = codec->control_data;
struct wm8350_data *priv = codec->private_data; struct wm8350_data *priv = codec->private_data;
int ret; int ret;
......
...@@ -452,7 +452,7 @@ static int wm8510_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -452,7 +452,7 @@ static int wm8510_pcm_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 iface = wm8510_read_reg_cache(codec, WM8510_IFACE) & 0x19f; u16 iface = wm8510_read_reg_cache(codec, WM8510_IFACE) & 0x19f;
u16 adn = wm8510_read_reg_cache(codec, WM8510_ADD) & 0x1f1; u16 adn = wm8510_read_reg_cache(codec, WM8510_ADD) & 0x1f1;
...@@ -581,7 +581,7 @@ EXPORT_SYMBOL_GPL(wm8510_dai); ...@@ -581,7 +581,7 @@ EXPORT_SYMBOL_GPL(wm8510_dai);
static int wm8510_suspend(struct platform_device *pdev, pm_message_t state) static int wm8510_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm8510_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8510_set_bias_level(codec, SND_SOC_BIAS_OFF);
return 0; return 0;
...@@ -590,7 +590,7 @@ static int wm8510_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -590,7 +590,7 @@ static int wm8510_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8510_resume(struct platform_device *pdev) static int wm8510_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u8 data[2]; u8 data[2];
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -612,7 +612,7 @@ static int wm8510_resume(struct platform_device *pdev) ...@@ -612,7 +612,7 @@ static int wm8510_resume(struct platform_device *pdev)
*/ */
static int wm8510_init(struct snd_soc_device *socdev) static int wm8510_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret = 0; int ret = 0;
codec->name = "WM8510"; codec->name = "WM8510";
...@@ -670,7 +670,7 @@ static int wm8510_i2c_probe(struct i2c_client *i2c, ...@@ -670,7 +670,7 @@ static int wm8510_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = wm8510_socdev; struct snd_soc_device *socdev = wm8510_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -751,7 +751,7 @@ static int wm8510_add_i2c_device(struct platform_device *pdev, ...@@ -751,7 +751,7 @@ static int wm8510_add_i2c_device(struct platform_device *pdev,
static int __devinit wm8510_spi_probe(struct spi_device *spi) static int __devinit wm8510_spi_probe(struct spi_device *spi)
{ {
struct snd_soc_device *socdev = wm8510_socdev; struct snd_soc_device *socdev = wm8510_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
codec->control_data = spi; codec->control_data = spi;
...@@ -817,7 +817,7 @@ static int wm8510_probe(struct platform_device *pdev) ...@@ -817,7 +817,7 @@ static int wm8510_probe(struct platform_device *pdev)
if (codec == NULL) if (codec == NULL)
return -ENOMEM; return -ENOMEM;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -847,7 +847,7 @@ static int wm8510_probe(struct platform_device *pdev) ...@@ -847,7 +847,7 @@ static int wm8510_probe(struct platform_device *pdev)
static int wm8510_remove(struct platform_device *pdev) static int wm8510_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
wm8510_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8510_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -539,7 +539,7 @@ static int wm8580_paif_hw_params(struct snd_pcm_substream *substream, ...@@ -539,7 +539,7 @@ static int wm8580_paif_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 paifb = wm8580_read(codec, WM8580_PAIF3 + dai->id); u16 paifb = wm8580_read(codec, WM8580_PAIF3 + dai->id);
paifb &= ~WM8580_AIF_LENGTH_MASK; paifb &= ~WM8580_AIF_LENGTH_MASK;
...@@ -816,7 +816,7 @@ EXPORT_SYMBOL_GPL(wm8580_dai); ...@@ -816,7 +816,7 @@ EXPORT_SYMBOL_GPL(wm8580_dai);
*/ */
static int wm8580_init(struct snd_soc_device *socdev) static int wm8580_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret = 0; int ret = 0;
codec->name = "WM8580"; codec->name = "WM8580";
...@@ -888,7 +888,7 @@ static int wm8580_i2c_probe(struct i2c_client *i2c, ...@@ -888,7 +888,7 @@ static int wm8580_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = wm8580_socdev; struct snd_soc_device *socdev = wm8580_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -986,7 +986,7 @@ static int wm8580_probe(struct platform_device *pdev) ...@@ -986,7 +986,7 @@ static int wm8580_probe(struct platform_device *pdev)
} }
codec->private_data = wm8580; codec->private_data = wm8580;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -1007,7 +1007,7 @@ static int wm8580_probe(struct platform_device *pdev) ...@@ -1007,7 +1007,7 @@ static int wm8580_probe(struct platform_device *pdev)
static int wm8580_remove(struct platform_device *pdev) static int wm8580_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
wm8580_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8580_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -137,7 +137,7 @@ static int wm8728_hw_params(struct snd_pcm_substream *substream, ...@@ -137,7 +137,7 @@ static int wm8728_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 dac = wm8728_read_reg_cache(codec, WM8728_DACCTL); u16 dac = wm8728_read_reg_cache(codec, WM8728_DACCTL);
dac &= ~0x18; dac &= ~0x18;
...@@ -264,7 +264,7 @@ EXPORT_SYMBOL_GPL(wm8728_dai); ...@@ -264,7 +264,7 @@ EXPORT_SYMBOL_GPL(wm8728_dai);
static int wm8728_suspend(struct platform_device *pdev, pm_message_t state) static int wm8728_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm8728_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8728_set_bias_level(codec, SND_SOC_BIAS_OFF);
...@@ -274,7 +274,7 @@ static int wm8728_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -274,7 +274,7 @@ static int wm8728_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8728_resume(struct platform_device *pdev) static int wm8728_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm8728_set_bias_level(codec, codec->suspend_bias_level); wm8728_set_bias_level(codec, codec->suspend_bias_level);
...@@ -287,7 +287,7 @@ static int wm8728_resume(struct platform_device *pdev) ...@@ -287,7 +287,7 @@ static int wm8728_resume(struct platform_device *pdev)
*/ */
static int wm8728_init(struct snd_soc_device *socdev) static int wm8728_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret = 0; int ret = 0;
codec->name = "WM8728"; codec->name = "WM8728";
...@@ -349,7 +349,7 @@ static int wm8728_i2c_probe(struct i2c_client *i2c, ...@@ -349,7 +349,7 @@ static int wm8728_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = wm8728_socdev; struct snd_soc_device *socdev = wm8728_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -430,7 +430,7 @@ static int wm8728_add_i2c_device(struct platform_device *pdev, ...@@ -430,7 +430,7 @@ static int wm8728_add_i2c_device(struct platform_device *pdev,
static int __devinit wm8728_spi_probe(struct spi_device *spi) static int __devinit wm8728_spi_probe(struct spi_device *spi)
{ {
struct snd_soc_device *socdev = wm8728_socdev; struct snd_soc_device *socdev = wm8728_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
codec->control_data = spi; codec->control_data = spi;
...@@ -494,7 +494,7 @@ static int wm8728_probe(struct platform_device *pdev) ...@@ -494,7 +494,7 @@ static int wm8728_probe(struct platform_device *pdev)
if (codec == NULL) if (codec == NULL)
return -ENOMEM; return -ENOMEM;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -527,7 +527,7 @@ static int wm8728_probe(struct platform_device *pdev) ...@@ -527,7 +527,7 @@ static int wm8728_probe(struct platform_device *pdev)
static int wm8728_remove(struct platform_device *pdev) static int wm8728_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
wm8728_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8728_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -253,7 +253,7 @@ static int wm8731_hw_params(struct snd_pcm_substream *substream, ...@@ -253,7 +253,7 @@ static int wm8731_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8731_priv *wm8731 = codec->private_data; struct wm8731_priv *wm8731 = codec->private_data;
u16 iface = wm8731_read_reg_cache(codec, WM8731_IFACE) & 0xfff3; u16 iface = wm8731_read_reg_cache(codec, WM8731_IFACE) & 0xfff3;
int i = get_coeff(wm8731->sysclk, params_rate(params)); int i = get_coeff(wm8731->sysclk, params_rate(params));
...@@ -283,7 +283,7 @@ static int wm8731_pcm_prepare(struct snd_pcm_substream *substream, ...@@ -283,7 +283,7 @@ static int wm8731_pcm_prepare(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
/* set active */ /* set active */
wm8731_write(codec, WM8731_ACTIVE, 0x0001); wm8731_write(codec, WM8731_ACTIVE, 0x0001);
...@@ -296,7 +296,7 @@ static void wm8731_shutdown(struct snd_pcm_substream *substream, ...@@ -296,7 +296,7 @@ static void wm8731_shutdown(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
/* deactivate */ /* deactivate */
if (!codec->active) { if (!codec->active) {
...@@ -458,7 +458,7 @@ EXPORT_SYMBOL_GPL(wm8731_dai); ...@@ -458,7 +458,7 @@ EXPORT_SYMBOL_GPL(wm8731_dai);
static int wm8731_suspend(struct platform_device *pdev, pm_message_t state) static int wm8731_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm8731_write(codec, WM8731_ACTIVE, 0x0); wm8731_write(codec, WM8731_ACTIVE, 0x0);
wm8731_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8731_set_bias_level(codec, SND_SOC_BIAS_OFF);
...@@ -468,7 +468,7 @@ static int wm8731_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -468,7 +468,7 @@ static int wm8731_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8731_resume(struct platform_device *pdev) static int wm8731_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u8 data[2]; u8 data[2];
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -490,7 +490,7 @@ static int wm8731_resume(struct platform_device *pdev) ...@@ -490,7 +490,7 @@ static int wm8731_resume(struct platform_device *pdev)
*/ */
static int wm8731_init(struct snd_soc_device *socdev) static int wm8731_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int reg, ret = 0; int reg, ret = 0;
codec->name = "WM8731"; codec->name = "WM8731";
...@@ -561,7 +561,7 @@ static int wm8731_i2c_probe(struct i2c_client *i2c, ...@@ -561,7 +561,7 @@ static int wm8731_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = wm8731_socdev; struct snd_soc_device *socdev = wm8731_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -642,7 +642,7 @@ static int wm8731_add_i2c_device(struct platform_device *pdev, ...@@ -642,7 +642,7 @@ static int wm8731_add_i2c_device(struct platform_device *pdev,
static int __devinit wm8731_spi_probe(struct spi_device *spi) static int __devinit wm8731_spi_probe(struct spi_device *spi)
{ {
struct snd_soc_device *socdev = wm8731_socdev; struct snd_soc_device *socdev = wm8731_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
codec->control_data = spi; codec->control_data = spi;
...@@ -716,7 +716,7 @@ static int wm8731_probe(struct platform_device *pdev) ...@@ -716,7 +716,7 @@ static int wm8731_probe(struct platform_device *pdev)
} }
codec->private_data = wm8731; codec->private_data = wm8731;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -750,7 +750,7 @@ static int wm8731_probe(struct platform_device *pdev) ...@@ -750,7 +750,7 @@ static int wm8731_probe(struct platform_device *pdev)
static int wm8731_remove(struct platform_device *pdev) static int wm8731_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
wm8731_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8731_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -604,7 +604,7 @@ static int wm8750_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -604,7 +604,7 @@ static int wm8750_pcm_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8750_priv *wm8750 = codec->private_data; struct wm8750_priv *wm8750 = codec->private_data;
u16 iface = wm8750_read_reg_cache(codec, WM8750_IFACE) & 0x1f3; u16 iface = wm8750_read_reg_cache(codec, WM8750_IFACE) & 0x1f3;
u16 srate = wm8750_read_reg_cache(codec, WM8750_SRATE) & 0x1c0; u16 srate = wm8750_read_reg_cache(codec, WM8750_SRATE) & 0x1c0;
...@@ -712,7 +712,7 @@ static void wm8750_work(struct work_struct *work) ...@@ -712,7 +712,7 @@ static void wm8750_work(struct work_struct *work)
static int wm8750_suspend(struct platform_device *pdev, pm_message_t state) static int wm8750_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm8750_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8750_set_bias_level(codec, SND_SOC_BIAS_OFF);
return 0; return 0;
...@@ -721,7 +721,7 @@ static int wm8750_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -721,7 +721,7 @@ static int wm8750_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8750_resume(struct platform_device *pdev) static int wm8750_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u8 data[2]; u8 data[2];
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -754,7 +754,7 @@ static int wm8750_resume(struct platform_device *pdev) ...@@ -754,7 +754,7 @@ static int wm8750_resume(struct platform_device *pdev)
*/ */
static int wm8750_init(struct snd_soc_device *socdev) static int wm8750_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int reg, ret = 0; int reg, ret = 0;
codec->name = "WM8750"; codec->name = "WM8750";
...@@ -836,7 +836,7 @@ static int wm8750_i2c_probe(struct i2c_client *i2c, ...@@ -836,7 +836,7 @@ static int wm8750_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = wm8750_socdev; struct snd_soc_device *socdev = wm8750_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -917,7 +917,7 @@ static int wm8750_add_i2c_device(struct platform_device *pdev, ...@@ -917,7 +917,7 @@ static int wm8750_add_i2c_device(struct platform_device *pdev,
static int __devinit wm8750_spi_probe(struct spi_device *spi) static int __devinit wm8750_spi_probe(struct spi_device *spi)
{ {
struct snd_soc_device *socdev = wm8750_socdev; struct snd_soc_device *socdev = wm8750_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
codec->control_data = spi; codec->control_data = spi;
...@@ -989,7 +989,7 @@ static int wm8750_probe(struct platform_device *pdev) ...@@ -989,7 +989,7 @@ static int wm8750_probe(struct platform_device *pdev)
} }
codec->private_data = wm8750; codec->private_data = wm8750;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -1043,7 +1043,7 @@ static int run_delayed_work(struct delayed_work *dwork) ...@@ -1043,7 +1043,7 @@ static int run_delayed_work(struct delayed_work *dwork)
static int wm8750_remove(struct platform_device *pdev) static int wm8750_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
wm8750_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8750_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -912,7 +912,7 @@ static int wm8753_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -912,7 +912,7 @@ static int wm8753_pcm_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8753_priv *wm8753 = codec->private_data; struct wm8753_priv *wm8753 = codec->private_data;
u16 voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x01f3; u16 voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x01f3;
u16 srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x017f; u16 srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x017f;
...@@ -1146,7 +1146,7 @@ static int wm8753_i2s_hw_params(struct snd_pcm_substream *substream, ...@@ -1146,7 +1146,7 @@ static int wm8753_i2s_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8753_priv *wm8753 = codec->private_data; struct wm8753_priv *wm8753 = codec->private_data;
u16 srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x01c0; u16 srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x01c0;
u16 hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x01f3; u16 hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x01f3;
...@@ -1483,7 +1483,7 @@ static void wm8753_work(struct work_struct *work) ...@@ -1483,7 +1483,7 @@ static void wm8753_work(struct work_struct *work)
static int wm8753_suspend(struct platform_device *pdev, pm_message_t state) static int wm8753_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
/* we only need to suspend if we are a valid card */ /* we only need to suspend if we are a valid card */
if (!codec->card) if (!codec->card)
...@@ -1496,7 +1496,7 @@ static int wm8753_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -1496,7 +1496,7 @@ static int wm8753_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8753_resume(struct platform_device *pdev) static int wm8753_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u8 data[2]; u8 data[2];
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -1533,7 +1533,7 @@ static int wm8753_resume(struct platform_device *pdev) ...@@ -1533,7 +1533,7 @@ static int wm8753_resume(struct platform_device *pdev)
*/ */
static int wm8753_init(struct snd_soc_device *socdev) static int wm8753_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int reg, ret = 0; int reg, ret = 0;
codec->name = "WM8753"; codec->name = "WM8753";
...@@ -1624,7 +1624,7 @@ static int wm8753_i2c_probe(struct i2c_client *i2c, ...@@ -1624,7 +1624,7 @@ static int wm8753_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = wm8753_socdev; struct snd_soc_device *socdev = wm8753_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -1705,7 +1705,7 @@ static int wm8753_add_i2c_device(struct platform_device *pdev, ...@@ -1705,7 +1705,7 @@ static int wm8753_add_i2c_device(struct platform_device *pdev,
static int __devinit wm8753_spi_probe(struct spi_device *spi) static int __devinit wm8753_spi_probe(struct spi_device *spi)
{ {
struct snd_soc_device *socdev = wm8753_socdev; struct snd_soc_device *socdev = wm8753_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
codec->control_data = spi; codec->control_data = spi;
...@@ -1780,7 +1780,7 @@ static int wm8753_probe(struct platform_device *pdev) ...@@ -1780,7 +1780,7 @@ static int wm8753_probe(struct platform_device *pdev)
} }
codec->private_data = wm8753; codec->private_data = wm8753;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -1832,7 +1832,7 @@ static int run_delayed_work(struct delayed_work *dwork) ...@@ -1832,7 +1832,7 @@ static int run_delayed_work(struct delayed_work *dwork)
static int wm8753_remove(struct platform_device *pdev) static int wm8753_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
wm8753_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8753_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -720,7 +720,7 @@ static int wm8900_hw_params(struct snd_pcm_substream *substream, ...@@ -720,7 +720,7 @@ static int wm8900_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 reg; u16 reg;
reg = wm8900_read(codec, WM8900_REG_AUDIO1) & ~0x60; reg = wm8900_read(codec, WM8900_REG_AUDIO1) & ~0x60;
...@@ -1210,7 +1210,7 @@ static int wm8900_set_bias_level(struct snd_soc_codec *codec, ...@@ -1210,7 +1210,7 @@ static int wm8900_set_bias_level(struct snd_soc_codec *codec,
static int wm8900_suspend(struct platform_device *pdev, pm_message_t state) static int wm8900_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8900_priv *wm8900 = codec->private_data; struct wm8900_priv *wm8900 = codec->private_data;
int fll_out = wm8900->fll_out; int fll_out = wm8900->fll_out;
int fll_in = wm8900->fll_in; int fll_in = wm8900->fll_in;
...@@ -1234,7 +1234,7 @@ static int wm8900_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -1234,7 +1234,7 @@ static int wm8900_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8900_resume(struct platform_device *pdev) static int wm8900_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8900_priv *wm8900 = codec->private_data; struct wm8900_priv *wm8900 = codec->private_data;
u16 *cache; u16 *cache;
int i, ret; int i, ret;
...@@ -1414,7 +1414,7 @@ static int wm8900_probe(struct platform_device *pdev) ...@@ -1414,7 +1414,7 @@ static int wm8900_probe(struct platform_device *pdev)
} }
codec = wm8900_codec; codec = wm8900_codec;
socdev->codec = codec; socdev->card->codec = codec;
/* Register pcms */ /* Register pcms */
ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1); ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
......
...@@ -1261,7 +1261,7 @@ static int wm8903_startup(struct snd_pcm_substream *substream, ...@@ -1261,7 +1261,7 @@ static int wm8903_startup(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8903_priv *wm8903 = codec->private_data; struct wm8903_priv *wm8903 = codec->private_data;
struct i2c_client *i2c = codec->control_data; struct i2c_client *i2c = codec->control_data;
struct snd_pcm_runtime *master_runtime; struct snd_pcm_runtime *master_runtime;
...@@ -1303,7 +1303,7 @@ static void wm8903_shutdown(struct snd_pcm_substream *substream, ...@@ -1303,7 +1303,7 @@ static void wm8903_shutdown(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8903_priv *wm8903 = codec->private_data; struct wm8903_priv *wm8903 = codec->private_data;
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
...@@ -1323,7 +1323,7 @@ static int wm8903_hw_params(struct snd_pcm_substream *substream, ...@@ -1323,7 +1323,7 @@ static int wm8903_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8903_priv *wm8903 = codec->private_data; struct wm8903_priv *wm8903 = codec->private_data;
struct i2c_client *i2c = codec->control_data; struct i2c_client *i2c = codec->control_data;
int fs = params_rate(params); int fs = params_rate(params);
...@@ -1527,7 +1527,7 @@ EXPORT_SYMBOL_GPL(wm8903_dai); ...@@ -1527,7 +1527,7 @@ EXPORT_SYMBOL_GPL(wm8903_dai);
static int wm8903_suspend(struct platform_device *pdev, pm_message_t state) static int wm8903_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF);
...@@ -1537,7 +1537,7 @@ static int wm8903_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -1537,7 +1537,7 @@ static int wm8903_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8903_resume(struct platform_device *pdev) static int wm8903_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct i2c_client *i2c = codec->control_data; struct i2c_client *i2c = codec->control_data;
int i; int i;
u16 *reg_cache = codec->reg_cache; u16 *reg_cache = codec->reg_cache;
...@@ -1713,7 +1713,7 @@ static int wm8903_probe(struct platform_device *pdev) ...@@ -1713,7 +1713,7 @@ static int wm8903_probe(struct platform_device *pdev)
goto err; goto err;
} }
socdev->codec = wm8903_codec; socdev->card->codec = wm8903_codec;
/* register pcms */ /* register pcms */
ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1); ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
...@@ -1722,9 +1722,9 @@ static int wm8903_probe(struct platform_device *pdev) ...@@ -1722,9 +1722,9 @@ static int wm8903_probe(struct platform_device *pdev)
goto err; goto err;
} }
snd_soc_add_controls(socdev->codec, wm8903_snd_controls, snd_soc_add_controls(socdev->card->codec, wm8903_snd_controls,
ARRAY_SIZE(wm8903_snd_controls)); ARRAY_SIZE(wm8903_snd_controls));
wm8903_add_widgets(socdev->codec); wm8903_add_widgets(socdev->card->codec);
ret = snd_soc_init_card(socdev); ret = snd_soc_init_card(socdev);
if (ret < 0) { if (ret < 0) {
...@@ -1745,7 +1745,7 @@ static int wm8903_probe(struct platform_device *pdev) ...@@ -1745,7 +1745,7 @@ static int wm8903_probe(struct platform_device *pdev)
static int wm8903_remove(struct platform_device *pdev) static int wm8903_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -531,7 +531,7 @@ static int wm8971_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -531,7 +531,7 @@ static int wm8971_pcm_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm8971_priv *wm8971 = codec->private_data; struct wm8971_priv *wm8971 = codec->private_data;
u16 iface = wm8971_read_reg_cache(codec, WM8971_IFACE) & 0x1f3; u16 iface = wm8971_read_reg_cache(codec, WM8971_IFACE) & 0x1f3;
u16 srate = wm8971_read_reg_cache(codec, WM8971_SRATE) & 0x1c0; u16 srate = wm8971_read_reg_cache(codec, WM8971_SRATE) & 0x1c0;
...@@ -637,7 +637,7 @@ static void wm8971_work(struct work_struct *work) ...@@ -637,7 +637,7 @@ static void wm8971_work(struct work_struct *work)
static int wm8971_suspend(struct platform_device *pdev, pm_message_t state) static int wm8971_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm8971_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8971_set_bias_level(codec, SND_SOC_BIAS_OFF);
return 0; return 0;
...@@ -646,7 +646,7 @@ static int wm8971_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -646,7 +646,7 @@ static int wm8971_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8971_resume(struct platform_device *pdev) static int wm8971_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u8 data[2]; u8 data[2];
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -677,7 +677,7 @@ static int wm8971_resume(struct platform_device *pdev) ...@@ -677,7 +677,7 @@ static int wm8971_resume(struct platform_device *pdev)
static int wm8971_init(struct snd_soc_device *socdev) static int wm8971_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int reg, ret = 0; int reg, ret = 0;
codec->name = "WM8971"; codec->name = "WM8971";
...@@ -758,7 +758,7 @@ static int wm8971_i2c_probe(struct i2c_client *i2c, ...@@ -758,7 +758,7 @@ static int wm8971_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = wm8971_socdev; struct snd_soc_device *socdev = wm8971_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -859,7 +859,7 @@ static int wm8971_probe(struct platform_device *pdev) ...@@ -859,7 +859,7 @@ static int wm8971_probe(struct platform_device *pdev)
} }
codec->private_data = wm8971; codec->private_data = wm8971;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -894,7 +894,7 @@ static int wm8971_probe(struct platform_device *pdev) ...@@ -894,7 +894,7 @@ static int wm8971_probe(struct platform_device *pdev)
static int wm8971_remove(struct platform_device *pdev) static int wm8971_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
wm8971_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8971_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -1162,7 +1162,7 @@ static int wm8990_hw_params(struct snd_pcm_substream *substream, ...@@ -1162,7 +1162,7 @@ static int wm8990_hw_params(struct snd_pcm_substream *substream,
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 audio1 = wm8990_read_reg_cache(codec, WM8990_AUDIO_INTERFACE_1); u16 audio1 = wm8990_read_reg_cache(codec, WM8990_AUDIO_INTERFACE_1);
audio1 &= ~WM8990_AIF_WL_MASK; audio1 &= ~WM8990_AIF_WL_MASK;
...@@ -1361,7 +1361,7 @@ EXPORT_SYMBOL_GPL(wm8990_dai); ...@@ -1361,7 +1361,7 @@ EXPORT_SYMBOL_GPL(wm8990_dai);
static int wm8990_suspend(struct platform_device *pdev, pm_message_t state) static int wm8990_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
/* we only need to suspend if we are a valid card */ /* we only need to suspend if we are a valid card */
if (!codec->card) if (!codec->card)
...@@ -1374,7 +1374,7 @@ static int wm8990_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -1374,7 +1374,7 @@ static int wm8990_suspend(struct platform_device *pdev, pm_message_t state)
static int wm8990_resume(struct platform_device *pdev) static int wm8990_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i; int i;
u8 data[2]; u8 data[2];
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -1402,7 +1402,7 @@ static int wm8990_resume(struct platform_device *pdev) ...@@ -1402,7 +1402,7 @@ static int wm8990_resume(struct platform_device *pdev)
*/ */
static int wm8990_init(struct snd_soc_device *socdev) static int wm8990_init(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 reg; u16 reg;
int ret = 0; int ret = 0;
...@@ -1480,7 +1480,7 @@ static int wm8990_i2c_probe(struct i2c_client *i2c, ...@@ -1480,7 +1480,7 @@ static int wm8990_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct snd_soc_device *socdev = wm8990_socdev; struct snd_soc_device *socdev = wm8990_socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int ret; int ret;
i2c_set_clientdata(i2c, codec); i2c_set_clientdata(i2c, codec);
...@@ -1579,7 +1579,7 @@ static int wm8990_probe(struct platform_device *pdev) ...@@ -1579,7 +1579,7 @@ static int wm8990_probe(struct platform_device *pdev)
} }
codec->private_data = wm8990; codec->private_data = wm8990;
socdev->codec = codec; socdev->card->codec = codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_widgets);
INIT_LIST_HEAD(&codec->dapm_paths); INIT_LIST_HEAD(&codec->dapm_paths);
...@@ -1605,7 +1605,7 @@ static int wm8990_probe(struct platform_device *pdev) ...@@ -1605,7 +1605,7 @@ static int wm8990_probe(struct platform_device *pdev)
static int wm8990_remove(struct platform_device *pdev) static int wm8990_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec->control_data) if (codec->control_data)
wm8990_set_bias_level(codec, SND_SOC_BIAS_OFF); wm8990_set_bias_level(codec, SND_SOC_BIAS_OFF);
......
...@@ -249,7 +249,7 @@ static int ac97_prepare(struct snd_pcm_substream *substream, ...@@ -249,7 +249,7 @@ static int ac97_prepare(struct snd_pcm_substream *substream,
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int reg; int reg;
u16 vra; u16 vra;
...@@ -323,10 +323,11 @@ static int wm9705_soc_probe(struct platform_device *pdev) ...@@ -323,10 +323,11 @@ static int wm9705_soc_probe(struct platform_device *pdev)
printk(KERN_INFO "WM9705 SoC Audio Codec\n"); printk(KERN_INFO "WM9705 SoC Audio Codec\n");
socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec),
if (socdev->codec == NULL) GFP_KERNEL);
if (socdev->card->codec == NULL)
return -ENOMEM; return -ENOMEM;
codec = socdev->codec; codec = socdev->card->codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
codec->reg_cache = kmemdup(wm9705_reg, sizeof(wm9705_reg), GFP_KERNEL); codec->reg_cache = kmemdup(wm9705_reg, sizeof(wm9705_reg), GFP_KERNEL);
...@@ -380,15 +381,15 @@ static int wm9705_soc_probe(struct platform_device *pdev) ...@@ -380,15 +381,15 @@ static int wm9705_soc_probe(struct platform_device *pdev)
codec_err: codec_err:
kfree(codec->reg_cache); kfree(codec->reg_cache);
cache_err: cache_err:
kfree(socdev->codec); kfree(socdev->card->codec);
socdev->codec = NULL; socdev->card->codec = NULL;
return ret; return ret;
} }
static int wm9705_soc_remove(struct platform_device *pdev) static int wm9705_soc_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec == NULL) if (codec == NULL)
return 0; return 0;
......
...@@ -478,7 +478,7 @@ static int ac97_prepare(struct snd_pcm_substream *substream, ...@@ -478,7 +478,7 @@ static int ac97_prepare(struct snd_pcm_substream *substream,
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int reg; int reg;
u16 vra; u16 vra;
...@@ -499,7 +499,7 @@ static int ac97_aux_prepare(struct snd_pcm_substream *substream, ...@@ -499,7 +499,7 @@ static int ac97_aux_prepare(struct snd_pcm_substream *substream,
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_device *socdev = rtd->socdev; struct snd_soc_device *socdev = rtd->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 vra, xsle; u16 vra, xsle;
vra = ac97_read(codec, AC97_EXTENDED_STATUS); vra = ac97_read(codec, AC97_EXTENDED_STATUS);
...@@ -592,7 +592,7 @@ static int wm9712_soc_suspend(struct platform_device *pdev, ...@@ -592,7 +592,7 @@ static int wm9712_soc_suspend(struct platform_device *pdev,
pm_message_t state) pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
wm9712_set_bias_level(codec, SND_SOC_BIAS_OFF); wm9712_set_bias_level(codec, SND_SOC_BIAS_OFF);
return 0; return 0;
...@@ -601,7 +601,7 @@ static int wm9712_soc_suspend(struct platform_device *pdev, ...@@ -601,7 +601,7 @@ static int wm9712_soc_suspend(struct platform_device *pdev,
static int wm9712_soc_resume(struct platform_device *pdev) static int wm9712_soc_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i, ret; int i, ret;
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -637,10 +637,11 @@ static int wm9712_soc_probe(struct platform_device *pdev) ...@@ -637,10 +637,11 @@ static int wm9712_soc_probe(struct platform_device *pdev)
printk(KERN_INFO "WM9711/WM9712 SoC Audio Codec %s\n", WM9712_VERSION); printk(KERN_INFO "WM9711/WM9712 SoC Audio Codec %s\n", WM9712_VERSION);
socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec),
if (socdev->codec == NULL) GFP_KERNEL);
if (socdev->card->codec == NULL)
return -ENOMEM; return -ENOMEM;
codec = socdev->codec; codec = socdev->card->codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
codec->reg_cache = kmemdup(wm9712_reg, sizeof(wm9712_reg), GFP_KERNEL); codec->reg_cache = kmemdup(wm9712_reg, sizeof(wm9712_reg), GFP_KERNEL);
...@@ -704,15 +705,15 @@ static int wm9712_soc_probe(struct platform_device *pdev) ...@@ -704,15 +705,15 @@ static int wm9712_soc_probe(struct platform_device *pdev)
kfree(codec->reg_cache); kfree(codec->reg_cache);
cache_err: cache_err:
kfree(socdev->codec); kfree(socdev->card->codec);
socdev->codec = NULL; socdev->card->codec = NULL;
return ret; return ret;
} }
static int wm9712_soc_remove(struct platform_device *pdev) static int wm9712_soc_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec == NULL) if (codec == NULL)
return 0; return 0;
......
...@@ -1115,7 +1115,7 @@ static int wm9713_soc_suspend(struct platform_device *pdev, ...@@ -1115,7 +1115,7 @@ static int wm9713_soc_suspend(struct platform_device *pdev,
pm_message_t state) pm_message_t state)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
u16 reg; u16 reg;
/* Disable everything except touchpanel - that will be handled /* Disable everything except touchpanel - that will be handled
...@@ -1133,7 +1133,7 @@ static int wm9713_soc_suspend(struct platform_device *pdev, ...@@ -1133,7 +1133,7 @@ static int wm9713_soc_suspend(struct platform_device *pdev,
static int wm9713_soc_resume(struct platform_device *pdev) static int wm9713_soc_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
struct wm9713_priv *wm9713 = codec->private_data; struct wm9713_priv *wm9713 = codec->private_data;
int i, ret; int i, ret;
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
...@@ -1174,10 +1174,11 @@ static int wm9713_soc_probe(struct platform_device *pdev) ...@@ -1174,10 +1174,11 @@ static int wm9713_soc_probe(struct platform_device *pdev)
printk(KERN_INFO "WM9713/WM9714 SoC Audio Codec %s\n", WM9713_VERSION); printk(KERN_INFO "WM9713/WM9714 SoC Audio Codec %s\n", WM9713_VERSION);
socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec),
if (socdev->codec == NULL) GFP_KERNEL);
if (socdev->card->codec == NULL)
return -ENOMEM; return -ENOMEM;
codec = socdev->codec; codec = socdev->card->codec;
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
codec->reg_cache = kmemdup(wm9713_reg, sizeof(wm9713_reg), GFP_KERNEL); codec->reg_cache = kmemdup(wm9713_reg, sizeof(wm9713_reg), GFP_KERNEL);
...@@ -1249,15 +1250,15 @@ static int wm9713_soc_probe(struct platform_device *pdev) ...@@ -1249,15 +1250,15 @@ static int wm9713_soc_probe(struct platform_device *pdev)
kfree(codec->reg_cache); kfree(codec->reg_cache);
cache_err: cache_err:
kfree(socdev->codec); kfree(socdev->card->codec);
socdev->codec = NULL; socdev->card->codec = NULL;
return ret; return ret;
} }
static int wm9713_soc_remove(struct platform_device *pdev) static int wm9713_soc_remove(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
if (codec == NULL) if (codec == NULL)
return 0; return 0;
......
...@@ -234,7 +234,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) ...@@ -234,7 +234,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
cpu_dai->capture.active = codec_dai->capture.active = 1; cpu_dai->capture.active = codec_dai->capture.active = 1;
cpu_dai->active = codec_dai->active = 1; cpu_dai->active = codec_dai->active = 1;
cpu_dai->runtime = runtime; cpu_dai->runtime = runtime;
socdev->codec->active++; card->codec->active++;
mutex_unlock(&pcm_mutex); mutex_unlock(&pcm_mutex);
return 0; return 0;
...@@ -264,7 +264,7 @@ static void close_delayed_work(struct work_struct *work) ...@@ -264,7 +264,7 @@ static void close_delayed_work(struct work_struct *work)
struct snd_soc_card *card = container_of(work, struct snd_soc_card, struct snd_soc_card *card = container_of(work, struct snd_soc_card,
delayed_work.work); delayed_work.work);
struct snd_soc_device *socdev = card->socdev; struct snd_soc_device *socdev = card->socdev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = card->codec;
struct snd_soc_dai *codec_dai; struct snd_soc_dai *codec_dai;
int i; int i;
...@@ -319,7 +319,7 @@ static int soc_codec_close(struct snd_pcm_substream *substream) ...@@ -319,7 +319,7 @@ static int soc_codec_close(struct snd_pcm_substream *substream)
struct snd_soc_platform *platform = card->platform; struct snd_soc_platform *platform = card->platform;
struct snd_soc_dai *cpu_dai = machine->cpu_dai; struct snd_soc_dai *cpu_dai = machine->cpu_dai;
struct snd_soc_dai *codec_dai = machine->codec_dai; struct snd_soc_dai *codec_dai = machine->codec_dai;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = card->codec;
mutex_lock(&pcm_mutex); mutex_lock(&pcm_mutex);
...@@ -387,7 +387,7 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream) ...@@ -387,7 +387,7 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream)
struct snd_soc_platform *platform = card->platform; struct snd_soc_platform *platform = card->platform;
struct snd_soc_dai *cpu_dai = machine->cpu_dai; struct snd_soc_dai *cpu_dai = machine->cpu_dai;
struct snd_soc_dai *codec_dai = machine->codec_dai; struct snd_soc_dai *codec_dai = machine->codec_dai;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = card->codec;
int ret = 0; int ret = 0;
mutex_lock(&pcm_mutex); mutex_lock(&pcm_mutex);
...@@ -553,7 +553,7 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream) ...@@ -553,7 +553,7 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
struct snd_soc_platform *platform = card->platform; struct snd_soc_platform *platform = card->platform;
struct snd_soc_dai *cpu_dai = machine->cpu_dai; struct snd_soc_dai *cpu_dai = machine->cpu_dai;
struct snd_soc_dai *codec_dai = machine->codec_dai; struct snd_soc_dai *codec_dai = machine->codec_dai;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = card->codec;
mutex_lock(&pcm_mutex); mutex_lock(&pcm_mutex);
...@@ -629,7 +629,7 @@ static int soc_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -629,7 +629,7 @@ static int soc_suspend(struct platform_device *pdev, pm_message_t state)
struct snd_soc_card *card = socdev->card; struct snd_soc_card *card = socdev->card;
struct snd_soc_platform *platform = card->platform; struct snd_soc_platform *platform = card->platform;
struct snd_soc_codec_device *codec_dev = socdev->codec_dev; struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = card->codec;
int i; int i;
/* Due to the resume being scheduled into a workqueue we could /* Due to the resume being scheduled into a workqueue we could
...@@ -705,7 +705,7 @@ static void soc_resume_deferred(struct work_struct *work) ...@@ -705,7 +705,7 @@ static void soc_resume_deferred(struct work_struct *work)
struct snd_soc_device *socdev = card->socdev; struct snd_soc_device *socdev = card->socdev;
struct snd_soc_platform *platform = card->platform; struct snd_soc_platform *platform = card->platform;
struct snd_soc_codec_device *codec_dev = socdev->codec_dev; struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = card->codec;
struct platform_device *pdev = to_platform_device(socdev->dev); struct platform_device *pdev = to_platform_device(socdev->dev);
int i; int i;
...@@ -982,8 +982,8 @@ static struct platform_driver soc_driver = { ...@@ -982,8 +982,8 @@ static struct platform_driver soc_driver = {
static int soc_new_pcm(struct snd_soc_device *socdev, static int soc_new_pcm(struct snd_soc_device *socdev,
struct snd_soc_dai_link *dai_link, int num) struct snd_soc_dai_link *dai_link, int num)
{ {
struct snd_soc_codec *codec = socdev->codec;
struct snd_soc_card *card = socdev->card; struct snd_soc_card *card = socdev->card;
struct snd_soc_codec *codec = card->codec;
struct snd_soc_platform *platform = card->platform; struct snd_soc_platform *platform = card->platform;
struct snd_soc_dai *codec_dai = dai_link->codec_dai; struct snd_soc_dai *codec_dai = dai_link->codec_dai;
struct snd_soc_dai *cpu_dai = dai_link->cpu_dai; struct snd_soc_dai *cpu_dai = dai_link->cpu_dai;
...@@ -998,7 +998,7 @@ static int soc_new_pcm(struct snd_soc_device *socdev, ...@@ -998,7 +998,7 @@ static int soc_new_pcm(struct snd_soc_device *socdev,
rtd->dai = dai_link; rtd->dai = dai_link;
rtd->socdev = socdev; rtd->socdev = socdev;
codec_dai->codec = socdev->codec; codec_dai->codec = card->codec;
/* check client and interface hw capabilities */ /* check client and interface hw capabilities */
sprintf(new_name, "%s %s-%d", dai_link->stream_name, codec_dai->name, sprintf(new_name, "%s %s-%d", dai_link->stream_name, codec_dai->name,
...@@ -1048,9 +1048,8 @@ static int soc_new_pcm(struct snd_soc_device *socdev, ...@@ -1048,9 +1048,8 @@ static int soc_new_pcm(struct snd_soc_device *socdev,
} }
/* codec register dump */ /* codec register dump */
static ssize_t soc_codec_reg_show(struct snd_soc_device *devdata, char *buf) static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf)
{ {
struct snd_soc_codec *codec = devdata->codec;
int i, step = 1, count = 0; int i, step = 1, count = 0;
if (!codec->reg_cache_size) if (!codec->reg_cache_size)
...@@ -1090,7 +1089,7 @@ static ssize_t codec_reg_show(struct device *dev, ...@@ -1090,7 +1089,7 @@ static ssize_t codec_reg_show(struct device *dev,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
{ {
struct snd_soc_device *devdata = dev_get_drvdata(dev); struct snd_soc_device *devdata = dev_get_drvdata(dev);
return soc_codec_reg_show(devdata, buf); return soc_codec_reg_show(devdata->card->codec, buf);
} }
static DEVICE_ATTR(codec_reg, 0444, codec_reg_show, NULL); static DEVICE_ATTR(codec_reg, 0444, codec_reg_show, NULL);
...@@ -1107,12 +1106,10 @@ static ssize_t codec_reg_read_file(struct file *file, char __user *user_buf, ...@@ -1107,12 +1106,10 @@ static ssize_t codec_reg_read_file(struct file *file, char __user *user_buf,
{ {
ssize_t ret; ssize_t ret;
struct snd_soc_codec *codec = file->private_data; struct snd_soc_codec *codec = file->private_data;
struct device *card_dev = codec->card->dev;
struct snd_soc_device *devdata = card_dev->driver_data;
char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL); char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
if (!buf) if (!buf)
return -ENOMEM; return -ENOMEM;
ret = soc_codec_reg_show(devdata, buf); ret = soc_codec_reg_show(codec, buf);
if (ret >= 0) if (ret >= 0)
ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
kfree(buf); kfree(buf);
...@@ -1309,8 +1306,8 @@ EXPORT_SYMBOL_GPL(snd_soc_test_bits); ...@@ -1309,8 +1306,8 @@ EXPORT_SYMBOL_GPL(snd_soc_test_bits);
*/ */
int snd_soc_new_pcms(struct snd_soc_device *socdev, int idx, const char *xid) int snd_soc_new_pcms(struct snd_soc_device *socdev, int idx, const char *xid)
{ {
struct snd_soc_codec *codec = socdev->codec;
struct snd_soc_card *card = socdev->card; struct snd_soc_card *card = socdev->card;
struct snd_soc_codec *codec = card->codec;
int ret = 0, i; int ret = 0, i;
mutex_lock(&codec->mutex); mutex_lock(&codec->mutex);
...@@ -1355,8 +1352,8 @@ EXPORT_SYMBOL_GPL(snd_soc_new_pcms); ...@@ -1355,8 +1352,8 @@ EXPORT_SYMBOL_GPL(snd_soc_new_pcms);
*/ */
int snd_soc_init_card(struct snd_soc_device *socdev) int snd_soc_init_card(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec;
struct snd_soc_card *card = socdev->card; struct snd_soc_card *card = socdev->card;
struct snd_soc_codec *codec = card->codec;
int ret = 0, i, ac97 = 0, err = 0; int ret = 0, i, ac97 = 0, err = 0;
for (i = 0; i < card->num_links; i++) { for (i = 0; i < card->num_links; i++) {
...@@ -1404,7 +1401,7 @@ int snd_soc_init_card(struct snd_soc_device *socdev) ...@@ -1404,7 +1401,7 @@ int snd_soc_init_card(struct snd_soc_device *socdev)
if (err < 0) if (err < 0)
printk(KERN_WARNING "asoc: failed to add codec sysfs files\n"); printk(KERN_WARNING "asoc: failed to add codec sysfs files\n");
soc_init_codec_debugfs(socdev->codec); soc_init_codec_debugfs(codec);
mutex_unlock(&codec->mutex); mutex_unlock(&codec->mutex);
out: out:
...@@ -1421,14 +1418,14 @@ EXPORT_SYMBOL_GPL(snd_soc_init_card); ...@@ -1421,14 +1418,14 @@ EXPORT_SYMBOL_GPL(snd_soc_init_card);
*/ */
void snd_soc_free_pcms(struct snd_soc_device *socdev) void snd_soc_free_pcms(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
#ifdef CONFIG_SND_SOC_AC97_BUS #ifdef CONFIG_SND_SOC_AC97_BUS
struct snd_soc_dai *codec_dai; struct snd_soc_dai *codec_dai;
int i; int i;
#endif #endif
mutex_lock(&codec->mutex); mutex_lock(&codec->mutex);
soc_cleanup_codec_debugfs(socdev->codec); soc_cleanup_codec_debugfs(codec);
#ifdef CONFIG_SND_SOC_AC97_BUS #ifdef CONFIG_SND_SOC_AC97_BUS
for (i = 0; i < codec->num_dai; i++) { for (i = 0; i < codec->num_dai; i++) {
codec_dai = &codec->dai[i]; codec_dai = &codec->dai[i];
......
...@@ -817,7 +817,7 @@ static ssize_t dapm_widget_show(struct device *dev, ...@@ -817,7 +817,7 @@ static ssize_t dapm_widget_show(struct device *dev,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
{ {
struct snd_soc_device *devdata = dev_get_drvdata(dev); struct snd_soc_device *devdata = dev_get_drvdata(dev);
struct snd_soc_codec *codec = devdata->codec; struct snd_soc_codec *codec = devdata->card->codec;
struct snd_soc_dapm_widget *w; struct snd_soc_dapm_widget *w;
int count = 0; int count = 0;
char *state = "not set"; char *state = "not set";
...@@ -1552,8 +1552,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dapm_stream_event); ...@@ -1552,8 +1552,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dapm_stream_event);
int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev, int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
enum snd_soc_bias_level level) enum snd_soc_bias_level level)
{ {
struct snd_soc_codec *codec = socdev->codec;
struct snd_soc_card *card = socdev->card; struct snd_soc_card *card = socdev->card;
struct snd_soc_codec *codec = socdev->card->codec;
int ret = 0; int ret = 0;
if (card->set_bias_level) if (card->set_bias_level)
...@@ -1645,7 +1645,7 @@ EXPORT_SYMBOL_GPL(snd_soc_dapm_get_pin_status); ...@@ -1645,7 +1645,7 @@ EXPORT_SYMBOL_GPL(snd_soc_dapm_get_pin_status);
*/ */
void snd_soc_dapm_free(struct snd_soc_device *socdev) void snd_soc_dapm_free(struct snd_soc_device *socdev)
{ {
struct snd_soc_codec *codec = socdev->codec; struct snd_soc_codec *codec = socdev->card->codec;
snd_soc_dapm_sys_remove(socdev->dev); snd_soc_dapm_sys_remove(socdev->dev);
dapm_free_widgets(codec); dapm_free_widgets(codec);
......
...@@ -34,7 +34,7 @@ int snd_soc_jack_new(struct snd_soc_card *card, const char *id, int type, ...@@ -34,7 +34,7 @@ int snd_soc_jack_new(struct snd_soc_card *card, const char *id, int type,
jack->card = card; jack->card = card;
INIT_LIST_HEAD(&jack->pins); INIT_LIST_HEAD(&jack->pins);
return snd_jack_new(card->socdev->codec->card, id, type, &jack->jack); return snd_jack_new(card->codec->card, id, type, &jack->jack);
} }
EXPORT_SYMBOL_GPL(snd_soc_jack_new); EXPORT_SYMBOL_GPL(snd_soc_jack_new);
...@@ -54,7 +54,7 @@ EXPORT_SYMBOL_GPL(snd_soc_jack_new); ...@@ -54,7 +54,7 @@ EXPORT_SYMBOL_GPL(snd_soc_jack_new);
*/ */
void snd_soc_jack_report(struct snd_soc_jack *jack, int status, int mask) void snd_soc_jack_report(struct snd_soc_jack *jack, int status, int mask)
{ {
struct snd_soc_codec *codec = jack->card->socdev->codec; struct snd_soc_codec *codec = jack->card->codec;
struct snd_soc_jack_pin *pin; struct snd_soc_jack_pin *pin;
int enable; int enable;
int oldstatus; int oldstatus;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册