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

Commit 97999e28 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge branch 'fix/hda' into topic/hda

parents 06503670 798cb7e8
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -2032,7 +2032,8 @@ static unsigned int azx_via_get_position(struct azx *chip,
}

static unsigned int azx_get_position(struct azx *chip,
				     struct azx_dev *azx_dev)
				     struct azx_dev *azx_dev,
				     bool with_check)
{
	unsigned int pos;
	int stream = azx_dev->substream->stream;
@@ -2048,7 +2049,7 @@ static unsigned int azx_get_position(struct azx *chip,
	default:
		/* use the position buffer */
		pos = le32_to_cpu(*azx_dev->posbuf);
		if (chip->position_fix[stream] == POS_FIX_AUTO) {
		if (with_check && chip->position_fix[stream] == POS_FIX_AUTO) {
			if (!pos || pos == (u32)-1) {
				printk(KERN_WARNING
				       "hda-intel: Invalid position buffer, "
@@ -2072,7 +2073,7 @@ static snd_pcm_uframes_t azx_pcm_pointer(struct snd_pcm_substream *substream)
	struct azx *chip = apcm->chip;
	struct azx_dev *azx_dev = get_azx_dev(substream);
	return bytes_to_frames(substream->runtime,
			       azx_get_position(chip, azx_dev));
			       azx_get_position(chip, azx_dev, false));
}

/*
@@ -2095,7 +2096,7 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev)
		return -1;	/* bogus (too early) interrupt */

	stream = azx_dev->substream->stream;
	pos = azx_get_position(chip, azx_dev);
	pos = azx_get_position(chip, azx_dev, true);

	if (WARN_ONCE(!azx_dev->period_bytes,
		      "hda-intel: zero azx_dev->period_bytes"))
+2 −1
Original line number Diff line number Diff line
@@ -431,7 +431,8 @@ static int ssm2602_set_dai_fmt(struct snd_soc_dai *codec_dai,
static int ssm2602_set_bias_level(struct snd_soc_codec *codec,
				 enum snd_soc_bias_level level)
{
	u16 reg = snd_soc_read(codec, SSM2602_PWR) & 0xff7f;
	u16 reg = snd_soc_read(codec, SSM2602_PWR);
	reg &= ~(PWR_POWER_OFF | PWR_OSC_PDN);

	switch (level) {
	case SND_SOC_BIAS_ON:
+6 −0
Original line number Diff line number Diff line
@@ -516,6 +516,12 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
	struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
	int err = 0;

	if (mcbsp_data->active)
		if (freq == mcbsp_data->in_freq)
			return 0;
		else
			return -EBUSY;

	/* The McBSP signal muxing functions are only available on McBSP1 */
	if (clk_id == OMAP_MCBSP_CLKR_SRC_CLKR ||
	    clk_id == OMAP_MCBSP_CLKR_SRC_CLKX ||
+5 −3
Original line number Diff line number Diff line
@@ -530,9 +530,11 @@ snd_usb_audio_probe(struct usb_device *dev,
	return chip;

 __error:
	if (chip && !chip->num_interfaces)
	if (chip) {
		if (!chip->num_interfaces)
			snd_card_free(chip->card);
		chip->probing = 0;
	}
	mutex_unlock(&register_mutex);
 __err_val:
	return NULL;