Merge branch 'fix/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'fix/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: ASoC: WM8903: Fix Digital Capture Volume range ASoC: UDA134x: Remove POWER_OFF_ON_STANDBY define. ASoC: SSM2602: Fix reg_cache_size ASoC: SSM2602: Fix 'Mic Boost2' control ASoC: SSM2602: Properly annotate i2c probe and remove functions ASoC: sst_platform: add hw_free callback to fix resource leak ASoC: Don't crash on PM operations ASoC: JZ4740: Fix i2s shutdown
This commit is contained in:
commit
ca1376d108
6 changed files with 15 additions and 9 deletions
|
@ -139,7 +139,7 @@ SOC_DOUBLE_R("Capture Volume", SSM2602_LINVOL, SSM2602_RINVOL, 0, 31, 0),
|
|||
SOC_DOUBLE_R("Capture Switch", SSM2602_LINVOL, SSM2602_RINVOL, 7, 1, 1),
|
||||
|
||||
SOC_SINGLE("Mic Boost (+20dB)", SSM2602_APANA, 0, 1, 0),
|
||||
SOC_SINGLE("Mic Boost2 (+20dB)", SSM2602_APANA, 7, 1, 0),
|
||||
SOC_SINGLE("Mic Boost2 (+20dB)", SSM2602_APANA, 8, 1, 0),
|
||||
SOC_SINGLE("Mic Switch", SSM2602_APANA, 1, 1, 1),
|
||||
|
||||
SOC_SINGLE("Sidetone Playback Volume", SSM2602_APANA, 6, 3, 1),
|
||||
|
@ -602,7 +602,7 @@ static struct snd_soc_codec_driver soc_codec_dev_ssm2602 = {
|
|||
.read = ssm2602_read_reg_cache,
|
||||
.write = ssm2602_write,
|
||||
.set_bias_level = ssm2602_set_bias_level,
|
||||
.reg_cache_size = sizeof(ssm2602_reg),
|
||||
.reg_cache_size = ARRAY_SIZE(ssm2602_reg),
|
||||
.reg_word_size = sizeof(u16),
|
||||
.reg_cache_default = ssm2602_reg,
|
||||
};
|
||||
|
@ -614,7 +614,7 @@ static struct snd_soc_codec_driver soc_codec_dev_ssm2602 = {
|
|||
* low = 0x1a
|
||||
* high = 0x1b
|
||||
*/
|
||||
static int ssm2602_i2c_probe(struct i2c_client *i2c,
|
||||
static int __devinit ssm2602_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct ssm2602_priv *ssm2602;
|
||||
|
@ -635,7 +635,7 @@ static int ssm2602_i2c_probe(struct i2c_client *i2c,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int ssm2602_i2c_remove(struct i2c_client *client)
|
||||
static int __devexit ssm2602_i2c_remove(struct i2c_client *client)
|
||||
{
|
||||
snd_soc_unregister_codec(&client->dev);
|
||||
kfree(i2c_get_clientdata(client));
|
||||
|
@ -655,7 +655,7 @@ static struct i2c_driver ssm2602_i2c_driver = {
|
|||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = ssm2602_i2c_probe,
|
||||
.remove = ssm2602_i2c_remove,
|
||||
.remove = __devexit_p(ssm2602_i2c_remove),
|
||||
.id_table = ssm2602_i2c_id,
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -601,9 +601,7 @@ static struct snd_soc_codec_driver soc_codec_dev_uda134x = {
|
|||
.reg_cache_step = 1,
|
||||
.read = uda134x_read_reg_cache,
|
||||
.write = uda134x_write,
|
||||
#ifdef POWER_OFF_ON_STANDBY
|
||||
.set_bias_level = uda134x_set_bias_level,
|
||||
#endif
|
||||
};
|
||||
|
||||
static int __devinit uda134x_codec_probe(struct platform_device *pdev)
|
||||
|
|
|
@ -692,7 +692,7 @@ SOC_ENUM("DRC Smoothing Threshold", drc_smoothing),
|
|||
SOC_SINGLE_TLV("DRC Startup Volume", WM8903_DRC_0, 6, 18, 0, drc_tlv_startup),
|
||||
|
||||
SOC_DOUBLE_R_TLV("Digital Capture Volume", WM8903_ADC_DIGITAL_VOLUME_LEFT,
|
||||
WM8903_ADC_DIGITAL_VOLUME_RIGHT, 1, 96, 0, digital_tlv),
|
||||
WM8903_ADC_DIGITAL_VOLUME_RIGHT, 1, 120, 0, digital_tlv),
|
||||
SOC_ENUM("ADC Companding Mode", adc_companding),
|
||||
SOC_SINGLE("ADC Companding Switch", WM8903_AUDIO_INTERFACE_0, 3, 1, 0),
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ static void jz4740_i2s_shutdown(struct snd_pcm_substream *substream,
|
|||
struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
|
||||
uint32_t conf;
|
||||
|
||||
if (!dai->active)
|
||||
if (dai->active)
|
||||
return;
|
||||
|
||||
conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
|
||||
|
|
|
@ -376,6 +376,11 @@ static int sst_platform_pcm_hw_params(struct snd_pcm_substream *substream,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int sst_platform_pcm_hw_free(struct snd_pcm_substream *substream)
|
||||
{
|
||||
return snd_pcm_lib_free_pages(substream);
|
||||
}
|
||||
|
||||
static struct snd_pcm_ops sst_platform_ops = {
|
||||
.open = sst_platform_open,
|
||||
.close = sst_platform_close,
|
||||
|
@ -384,6 +389,7 @@ static struct snd_pcm_ops sst_platform_ops = {
|
|||
.trigger = sst_platform_pcm_trigger,
|
||||
.pointer = sst_platform_pcm_pointer,
|
||||
.hw_params = sst_platform_pcm_hw_params,
|
||||
.hw_free = sst_platform_pcm_hw_free,
|
||||
};
|
||||
|
||||
static void sst_pcm_free(struct snd_pcm *pcm)
|
||||
|
|
|
@ -3291,6 +3291,8 @@ int snd_soc_register_card(struct snd_soc_card *card)
|
|||
if (!card->name || !card->dev)
|
||||
return -EINVAL;
|
||||
|
||||
dev_set_drvdata(card->dev, card);
|
||||
|
||||
snd_soc_initialize_card_lists(card);
|
||||
|
||||
soc_init_card_debugfs(card);
|
||||
|
|
Loading…
Reference in a new issue