Commit 367b1301 authored by Mark Brown's avatar Mark Brown

Merge remote-tracking branches 'asoc/fix/adsp', 'asoc/fix/atmel',...

Merge remote-tracking branches 'asoc/fix/adsp', 'asoc/fix/atmel', 'asoc/fix/hdac-hdmi' and 'asoc/fix/mtk' into asoc-linus
...@@ -349,7 +349,7 @@ static int atmel_classd_codec_dai_digital_mute(struct snd_soc_dai *codec_dai, ...@@ -349,7 +349,7 @@ static int atmel_classd_codec_dai_digital_mute(struct snd_soc_dai *codec_dai,
} }
#define CLASSD_ACLK_RATE_11M2896_MPY_8 (112896 * 100 * 8) #define CLASSD_ACLK_RATE_11M2896_MPY_8 (112896 * 100 * 8)
#define CLASSD_ACLK_RATE_12M288_MPY_8 (12228 * 1000 * 8) #define CLASSD_ACLK_RATE_12M288_MPY_8 (12288 * 1000 * 8)
static struct { static struct {
int rate; int rate;
......
...@@ -1534,21 +1534,20 @@ static void hdac_hdmi_eld_notify_cb(void *aptr, int port, int pipe) ...@@ -1534,21 +1534,20 @@ static void hdac_hdmi_eld_notify_cb(void *aptr, int port, int pipe)
pin->mst_capable = false; pin->mst_capable = false;
/* if not MST, default is port[0] */ /* if not MST, default is port[0] */
hport = &pin->ports[0]; hport = &pin->ports[0];
goto out;
} else { } else {
for (i = 0; i < pin->num_ports; i++) { for (i = 0; i < pin->num_ports; i++) {
pin->mst_capable = true; pin->mst_capable = true;
if (pin->ports[i].id == pipe) { if (pin->ports[i].id == pipe) {
hport = &pin->ports[i]; hport = &pin->ports[i];
goto out; break;
} }
} }
} }
if (hport)
hdac_hdmi_present_sense(pin, hport);
} }
out:
if (pin && hport)
hdac_hdmi_present_sense(pin, hport);
} }
static struct i915_audio_component_audio_ops aops = { static struct i915_audio_component_audio_ops aops = {
...@@ -1998,7 +1997,7 @@ static int hdac_hdmi_dev_remove(struct hdac_ext_device *edev) ...@@ -1998,7 +1997,7 @@ static int hdac_hdmi_dev_remove(struct hdac_ext_device *edev)
struct hdac_hdmi_pin *pin, *pin_next; struct hdac_hdmi_pin *pin, *pin_next;
struct hdac_hdmi_cvt *cvt, *cvt_next; struct hdac_hdmi_cvt *cvt, *cvt_next;
struct hdac_hdmi_pcm *pcm, *pcm_next; struct hdac_hdmi_pcm *pcm, *pcm_next;
struct hdac_hdmi_port *port; struct hdac_hdmi_port *port, *port_next;
int i; int i;
snd_soc_unregister_codec(&edev->hdac.dev); snd_soc_unregister_codec(&edev->hdac.dev);
...@@ -2008,8 +2007,9 @@ static int hdac_hdmi_dev_remove(struct hdac_ext_device *edev) ...@@ -2008,8 +2007,9 @@ static int hdac_hdmi_dev_remove(struct hdac_ext_device *edev)
if (list_empty(&pcm->port_list)) if (list_empty(&pcm->port_list))
continue; continue;
list_for_each_entry(port, &pcm->port_list, head) list_for_each_entry_safe(port, port_next,
port = NULL; &pcm->port_list, head)
list_del(&port->head);
list_del(&pcm->head); list_del(&pcm->head);
kfree(pcm); kfree(pcm);
......
...@@ -899,7 +899,10 @@ static int wm_coeff_put(struct snd_kcontrol *kctl, ...@@ -899,7 +899,10 @@ static int wm_coeff_put(struct snd_kcontrol *kctl,
mutex_lock(&ctl->dsp->pwr_lock); mutex_lock(&ctl->dsp->pwr_lock);
memcpy(ctl->cache, p, ctl->len); if (ctl->flags & WMFW_CTL_FLAG_VOLATILE)
ret = -EPERM;
else
memcpy(ctl->cache, p, ctl->len);
ctl->set = 1; ctl->set = 1;
if (ctl->enabled && ctl->dsp->running) if (ctl->enabled && ctl->dsp->running)
...@@ -926,6 +929,8 @@ static int wm_coeff_tlv_put(struct snd_kcontrol *kctl, ...@@ -926,6 +929,8 @@ static int wm_coeff_tlv_put(struct snd_kcontrol *kctl,
ctl->set = 1; ctl->set = 1;
if (ctl->enabled && ctl->dsp->running) if (ctl->enabled && ctl->dsp->running)
ret = wm_coeff_write_control(ctl, ctl->cache, size); ret = wm_coeff_write_control(ctl, ctl->cache, size);
else if (ctl->flags & WMFW_CTL_FLAG_VOLATILE)
ret = -EPERM;
} }
mutex_unlock(&ctl->dsp->pwr_lock); mutex_unlock(&ctl->dsp->pwr_lock);
...@@ -947,7 +952,7 @@ static int wm_coeff_put_acked(struct snd_kcontrol *kctl, ...@@ -947,7 +952,7 @@ static int wm_coeff_put_acked(struct snd_kcontrol *kctl,
mutex_lock(&ctl->dsp->pwr_lock); mutex_lock(&ctl->dsp->pwr_lock);
if (ctl->enabled) if (ctl->enabled && ctl->dsp->running)
ret = wm_coeff_write_acked_control(ctl, val); ret = wm_coeff_write_acked_control(ctl, val);
else else
ret = -EPERM; ret = -EPERM;
......
...@@ -13,7 +13,7 @@ config SND_SOC_MT2701 ...@@ -13,7 +13,7 @@ config SND_SOC_MT2701
config SND_SOC_MT2701_CS42448 config SND_SOC_MT2701_CS42448
tristate "ASoc Audio driver for MT2701 with CS42448 codec" tristate "ASoc Audio driver for MT2701 with CS42448 codec"
depends on SND_SOC_MT2701 depends on SND_SOC_MT2701 && I2C
select SND_SOC_CS42XX8_I2C select SND_SOC_CS42XX8_I2C
select SND_SOC_BT_SCO select SND_SOC_BT_SCO
help help
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment