Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c1dfc82 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound updates from Takashi Iwai:
 "Again very calm updates at this time.

  All small fixes for individual drivers, mostly ASoC codecs, in
  addition to soc-compress fix for capture streams which is safe to
  apply as there is no in-tree users yet."

* tag 'sound-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ASoC: cs42l52: fix default value for MASTERA_VOL.
  ASoC: wm8994: check for array index returned
  ASoC: wm8994: Fix reporting of accessory removal on WM8958
  ASoC: wm8994: use the correct pointer to get the control value
  ASoC: wm5110: Correct DSP4R Mixer control name
  ALSA: usb-6fire: Modify firmware version check
  ASoC: cs42l52: fix master playback mute mask.
  ASoC: cs42l52: fix bogus shifts in "Speaker Volume" and "PCM Mixer Volume" controls.
  ASoC: cs42l52: microphone bias is controlled by IFACE_CTL2 register.
  ASoC: davinci: fix sample rotation
  ASoC: wm5110: Add missing speaker initialisation
  ASoC: soc-compress: Send correct stream event for capture start
  ASoC: max98090: request IRQF_ONESHOT interrupt
parents dcdbe33a 8a90bb51
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -86,7 +86,7 @@ static const struct reg_default cs42l52_reg_defaults[] = {
	{ CS42L52_BEEP_VOL, 0x00 },	/* r1D Beep Volume off Time */
	{ CS42L52_BEEP_VOL, 0x00 },	/* r1D Beep Volume off Time */
	{ CS42L52_BEEP_TONE_CTL, 0x00 },	/* r1E Beep Tone Cfg. */
	{ CS42L52_BEEP_TONE_CTL, 0x00 },	/* r1E Beep Tone Cfg. */
	{ CS42L52_TONE_CTL, 0x00 },	/* r1F Tone Ctl */
	{ CS42L52_TONE_CTL, 0x00 },	/* r1F Tone Ctl */
	{ CS42L52_MASTERA_VOL, 0x88 },	/* r20 Master A Volume */
	{ CS42L52_MASTERA_VOL, 0x00 },	/* r20 Master A Volume */
	{ CS42L52_MASTERB_VOL, 0x00 },	/* r21 Master B Volume */
	{ CS42L52_MASTERB_VOL, 0x00 },	/* r21 Master B Volume */
	{ CS42L52_HPA_VOL, 0x00 },	/* r22 Headphone A Volume */
	{ CS42L52_HPA_VOL, 0x00 },	/* r22 Headphone A Volume */
	{ CS42L52_HPB_VOL, 0x00 },	/* r23 Headphone B Volume */
	{ CS42L52_HPB_VOL, 0x00 },	/* r23 Headphone B Volume */
@@ -225,7 +225,7 @@ static const char * const mic_bias_level_text[] = {
};
};


static const struct soc_enum mic_bias_level_enum =
static const struct soc_enum mic_bias_level_enum =
	SOC_ENUM_SINGLE(CS42L52_IFACE_CTL1, 0,
	SOC_ENUM_SINGLE(CS42L52_IFACE_CTL2, 0,
			ARRAY_SIZE(mic_bias_level_text), mic_bias_level_text);
			ARRAY_SIZE(mic_bias_level_text), mic_bias_level_text);


static const char * const cs42l52_mic_text[] = { "Single", "Differential" };
static const char * const cs42l52_mic_text[] = { "Single", "Differential" };
@@ -413,7 +413,7 @@ static const struct snd_kcontrol_new cs42l52_snd_controls[] = {
	SOC_ENUM("Headphone Analog Gain", hp_gain_enum),
	SOC_ENUM("Headphone Analog Gain", hp_gain_enum),


	SOC_DOUBLE_R_SX_TLV("Speaker Volume", CS42L52_SPKA_VOL,
	SOC_DOUBLE_R_SX_TLV("Speaker Volume", CS42L52_SPKA_VOL,
			      CS42L52_SPKB_VOL, 7, 0x1, 0xff, hl_tlv),
			      CS42L52_SPKB_VOL, 0, 0x1, 0xff, hl_tlv),


	SOC_DOUBLE_R_SX_TLV("Bypass Volume", CS42L52_PASSTHRUA_VOL,
	SOC_DOUBLE_R_SX_TLV("Bypass Volume", CS42L52_PASSTHRUA_VOL,
			      CS42L52_PASSTHRUB_VOL, 6, 0x18, 0x90, pga_tlv),
			      CS42L52_PASSTHRUB_VOL, 6, 0x18, 0x90, pga_tlv),
@@ -441,7 +441,7 @@ static const struct snd_kcontrol_new cs42l52_snd_controls[] = {


	SOC_DOUBLE_R_SX_TLV("PCM Mixer Volume",
	SOC_DOUBLE_R_SX_TLV("PCM Mixer Volume",
			    CS42L52_PCMA_MIXER_VOL, CS42L52_PCMB_MIXER_VOL,
			    CS42L52_PCMA_MIXER_VOL, CS42L52_PCMB_MIXER_VOL,
				6, 0x7f, 0x19, hl_tlv),
				0, 0x7f, 0x19, hl_tlv),
	SOC_DOUBLE_R("PCM Mixer Switch",
	SOC_DOUBLE_R("PCM Mixer Switch",
		     CS42L52_PCMA_MIXER_VOL, CS42L52_PCMB_MIXER_VOL, 7, 1, 1),
		     CS42L52_PCMA_MIXER_VOL, CS42L52_PCMB_MIXER_VOL, 7, 1, 1),


+1 −1
Original line number Original line Diff line number Diff line
@@ -157,7 +157,7 @@
#define CS42L52_PB_CTL1_INV_PCMA		(1 << 2)
#define CS42L52_PB_CTL1_INV_PCMA		(1 << 2)
#define CS42L52_PB_CTL1_MSTB_MUTE		(1 << 1)
#define CS42L52_PB_CTL1_MSTB_MUTE		(1 << 1)
#define CS42L52_PB_CTL1_MSTA_MUTE		(1 << 0)
#define CS42L52_PB_CTL1_MSTA_MUTE		(1 << 0)
#define CS42L52_PB_CTL1_MUTE_MASK		0xFFFD
#define CS42L52_PB_CTL1_MUTE_MASK		0x03
#define CS42L52_PB_CTL1_MUTE			3
#define CS42L52_PB_CTL1_MUTE			3
#define CS42L52_PB_CTL1_UNMUTE			0
#define CS42L52_PB_CTL1_UNMUTE			0


+1 −1
Original line number Original line Diff line number Diff line
@@ -2233,7 +2233,7 @@ static int max98090_probe(struct snd_soc_codec *codec)
	dev_dbg(codec->dev, "irq = %d\n", max98090->irq);
	dev_dbg(codec->dev, "irq = %d\n", max98090->irq);


	ret = request_threaded_irq(max98090->irq, NULL,
	ret = request_threaded_irq(max98090->irq, NULL,
		max98090_interrupt, IRQF_TRIGGER_FALLING,
		max98090_interrupt, IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
		"max98090_interrupt", codec);
		"max98090_interrupt", codec);
	if (ret < 0) {
	if (ret < 0) {
		dev_err(codec->dev, "request_irq failed: %d\n",
		dev_err(codec->dev, "request_irq failed: %d\n",
+3 −1
Original line number Original line Diff line number Diff line
@@ -190,7 +190,7 @@ ARIZONA_MIXER_CONTROLS("DSP2R", ARIZONA_DSP2RMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("DSP3L", ARIZONA_DSP3LMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("DSP3L", ARIZONA_DSP3LMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("DSP3R", ARIZONA_DSP3RMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("DSP3R", ARIZONA_DSP3RMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("DSP4L", ARIZONA_DSP4LMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("DSP4L", ARIZONA_DSP4LMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("DSP5R", ARIZONA_DSP4RMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("DSP4R", ARIZONA_DSP4RMIX_INPUT_1_SOURCE),


ARIZONA_MIXER_CONTROLS("Mic", ARIZONA_MICMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("Mic", ARIZONA_MICMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("Noise", ARIZONA_NOISEMIX_INPUT_1_SOURCE),
ARIZONA_MIXER_CONTROLS("Noise", ARIZONA_NOISEMIX_INPUT_1_SOURCE),
@@ -976,6 +976,8 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec)
	if (ret != 0)
	if (ret != 0)
		return ret;
		return ret;


	arizona_init_spk(codec);

	snd_soc_dapm_disable_pin(&codec->dapm, "HAPTICS");
	snd_soc_dapm_disable_pin(&codec->dapm, "HAPTICS");


	priv->core.arizona->dapm = &codec->dapm;
	priv->core.arizona->dapm = &codec->dapm;
+11 −1
Original line number Original line Diff line number Diff line
@@ -383,6 +383,8 @@ static int wm8994_get_drc_enum(struct snd_kcontrol *kcontrol,
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	int drc = wm8994_get_drc(kcontrol->id.name);
	int drc = wm8994_get_drc(kcontrol->id.name);


	if (drc < 0)
		return drc;
	ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc];
	ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc];


	return 0;
	return 0;
@@ -488,6 +490,9 @@ static int wm8994_get_retune_mobile_enum(struct snd_kcontrol *kcontrol,
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	int block = wm8994_get_retune_mobile_block(kcontrol->id.name);
	int block = wm8994_get_retune_mobile_block(kcontrol->id.name);


	if (block < 0)
		return block;

	ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block];
	ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block];


	return 0;
	return 0;
@@ -1031,7 +1036,7 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w,
{
{
	struct snd_soc_codec *codec = w->codec;
	struct snd_soc_codec *codec = w->codec;
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	struct wm8994 *control = codec->control_data;
	struct wm8994 *control = wm8994->wm8994;
	int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA;
	int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA;
	int i;
	int i;
	int dac;
	int dac;
@@ -3833,6 +3838,11 @@ static irqreturn_t wm8958_mic_irq(int irq, void *data)
			dev_dbg(codec->dev, "Ignoring removed jack\n");
			dev_dbg(codec->dev, "Ignoring removed jack\n");
			return IRQ_HANDLED;
			return IRQ_HANDLED;
		}
		}
	} else if (!(reg & WM8958_MICD_STS)) {
		snd_soc_jack_report(wm8994->micdet[0].jack, 0,
				    SND_JACK_MECHANICAL | SND_JACK_HEADSET |
				    wm8994->btn_mask);
		goto out;
	}
	}


	if (wm8994->mic_detecting)
	if (wm8994->mic_detecting)
Loading