diff options
Diffstat (limited to 'sound/soc/codecs/wm5100.c')
| -rw-r--r-- | sound/soc/codecs/wm5100.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c index 66f0611e68b..89f2af77b1c 100644 --- a/sound/soc/codecs/wm5100.c +++ b/sound/soc/codecs/wm5100.c @@ -1405,6 +1405,7 @@ static int wm5100_set_bias_level(struct snd_soc_codec *codec,  	case SND_SOC_BIAS_OFF:  		regcache_cache_only(wm5100->regmap, true); +		regcache_mark_dirty(wm5100->regmap);  		if (wm5100->pdata.ldo_ena)  			gpio_set_value_cansleep(wm5100->pdata.ldo_ena, 0);  		regulator_bulk_disable(ARRAY_SIZE(wm5100->core_supplies), @@ -2183,6 +2184,7 @@ static void wm5100_micd_irq(struct snd_soc_codec *codec)  		if (wm5100->jack_detecting) {  			dev_dbg(codec->dev, "Microphone detected\n");  			wm5100->jack_mic = true; +			wm5100->jack_detecting = false;  			snd_soc_jack_report(wm5100->jack,  					    SND_JACK_HEADSET,  					    SND_JACK_HEADSET | SND_JACK_BTN_0); @@ -2221,6 +2223,7 @@ static void wm5100_micd_irq(struct snd_soc_codec *codec)  					    SND_JACK_BTN_0);  		} else if (wm5100->jack_detecting) {  			dev_dbg(codec->dev, "Headphone detected\n"); +			wm5100->jack_detecting = false;  			snd_soc_jack_report(wm5100->jack, SND_JACK_HEADPHONE,  					    SND_JACK_HEADPHONE); @@ -2610,6 +2613,13 @@ static const struct regmap_config wm5100_regmap = {  	.cache_type = REGCACHE_RBTREE,  }; +static const unsigned int wm5100_mic_ctrl_reg[] = { +	WM5100_IN1L_CONTROL, +	WM5100_IN2L_CONTROL, +	WM5100_IN3L_CONTROL, +	WM5100_IN4L_CONTROL, +}; +  static __devinit int wm5100_i2c_probe(struct i2c_client *i2c,  				      const struct i2c_device_id *id)  { @@ -2742,7 +2752,7 @@ static __devinit int wm5100_i2c_probe(struct i2c_client *i2c,  	}  	for (i = 0; i < ARRAY_SIZE(wm5100->pdata.in_mode); i++) { -		regmap_update_bits(wm5100->regmap, WM5100_IN1L_CONTROL, +		regmap_update_bits(wm5100->regmap, wm5100_mic_ctrl_reg[i],  				   WM5100_IN1_MODE_MASK |  				   WM5100_IN1_DMIC_SUP_MASK,  				   (wm5100->pdata.in_mode[i] <<  |