diff --git a/asoc/codecs/wsa883x/wsa883x.c b/asoc/codecs/wsa883x/wsa883x.c index 8b3d588130..95901e849a 100644 --- a/asoc/codecs/wsa883x/wsa883x.c +++ b/asoc/codecs/wsa883x/wsa883x.c @@ -599,9 +599,14 @@ static int wsa_get_temp(struct snd_kcontrol *kcontrol, { struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); int temp = 0; - wsa883x_get_temperature(component, &temp); + if (test_bit(SPKR_STATUS, &wsa883x->status_mask)) + temp = wsa883x->curr_temp; + else + wsa883x_get_temperature(component, &temp); + ucontrol->value.integer.value[0] = temp; return 0;