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

Commit 3a948636 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branches 'asoc/topic/rt5670', 'asoc/topic/rt5677',...

Merge remote-tracking branches 'asoc/topic/rt5670', 'asoc/topic/rt5677', 'asoc/topic/simple', 'asoc/topic/tegra' and 'asoc/topic/wm-adsp' into asoc-next
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ Required properties:
  * Headphones
  * Speakers
  * Mic Jack
  * Int Mic

- nvidia,i2s-controller : The phandle of the Tegra I2S controller that's
  connected to the CODEC.
+3 −0
Original line number Diff line number Diff line
@@ -1950,17 +1950,20 @@ enum {
};

enum {
	RT5670_DMIC1_DISABLED,
	RT5670_DMIC_DATA_GPIO6,
	RT5670_DMIC_DATA_IN2P,
	RT5670_DMIC_DATA_GPIO7,
};

enum {
	RT5670_DMIC2_DISABLED,
	RT5670_DMIC_DATA_GPIO8,
	RT5670_DMIC_DATA_IN3N,
};

enum {
	RT5670_DMIC3_DISABLED,
	RT5670_DMIC_DATA_GPIO9,
	RT5670_DMIC_DATA_GPIO10,
	RT5670_DMIC_DATA_GPIO5,
+30 −14
Original line number Diff line number Diff line
@@ -718,11 +718,24 @@ static int rt5677_set_dsp_vad(struct snd_soc_codec *codec, bool on)
			RT5677_LDO1_SEL_MASK, 0x0);
		regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2,
			RT5677_PWR_LDO1, RT5677_PWR_LDO1);
		switch (rt5677->type) {
		case RT5677:
			regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1,
				RT5677_MCLK_SRC_MASK, RT5677_MCLK2_SRC);
			regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2,
			RT5677_PLL2_PR_SRC_MASK | RT5677_DSP_CLK_SRC_MASK,
			RT5677_PLL2_PR_SRC_MCLK2 | RT5677_DSP_CLK_SRC_BYPASS);
				RT5677_PLL2_PR_SRC_MASK |
				RT5677_DSP_CLK_SRC_MASK,
				RT5677_PLL2_PR_SRC_MCLK2 |
				RT5677_DSP_CLK_SRC_BYPASS);
			break;
		case RT5676:
			regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2,
				RT5677_DSP_CLK_SRC_MASK,
				RT5677_DSP_CLK_SRC_BYPASS);
			break;
		default:
			break;
		}
		regmap_write(rt5677->regmap, RT5677_PWR_DSP2, 0x07ff);
		regmap_write(rt5677->regmap, RT5677_PWR_DSP1, 0x07fd);
		rt5677_set_dsp_mode(codec, true);
@@ -4500,10 +4513,10 @@ static int rt5677_suspend(struct snd_soc_codec *codec)
	if (!rt5677->dsp_vad_en) {
		regcache_cache_only(rt5677->regmap, true);
		regcache_mark_dirty(rt5677->regmap);
	}

		if (gpio_is_valid(rt5677->pow_ldo2))
			gpio_set_value_cansleep(rt5677->pow_ldo2, 0);
	}

	return 0;
}
@@ -4512,12 +4525,12 @@ static int rt5677_resume(struct snd_soc_codec *codec)
{
	struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec);

	if (!rt5677->dsp_vad_en) {
		if (gpio_is_valid(rt5677->pow_ldo2)) {
			gpio_set_value_cansleep(rt5677->pow_ldo2, 1);
			msleep(10);
		}

	if (!rt5677->dsp_vad_en) {
		regcache_cache_only(rt5677->regmap, false);
		regcache_sync(rt5677->regmap);
	}
@@ -4733,7 +4746,8 @@ static const struct regmap_config rt5677_regmap = {
};

static const struct i2c_device_id rt5677_i2c_id[] = {
	{ "rt5677", 0 },
	{ "rt5677", RT5677 },
	{ "rt5676", RT5676 },
	{ }
};
MODULE_DEVICE_TABLE(i2c, rt5677_i2c_id);
@@ -4850,6 +4864,8 @@ static int rt5677_i2c_probe(struct i2c_client *i2c,

	i2c_set_clientdata(i2c, rt5677);

	rt5677->type = id->driver_data;

	if (pdata)
		rt5677->pdata = *pdata;

+6 −0
Original line number Diff line number Diff line
@@ -1665,6 +1665,11 @@ enum {
	RT5677_IRQ_JD3,
};

enum rt5677_type {
	RT5677,
	RT5676,
};

struct rt5677_priv {
	struct snd_soc_codec *codec;
	struct rt5677_platform_data pdata;
@@ -1681,6 +1686,7 @@ struct rt5677_priv {
	int pll_in;
	int pll_out;
	int pow_ldo2; /* POW_LDO2 pin */
	enum rt5677_type type;
#ifdef CONFIG_GPIOLIB
	struct gpio_chip gpio_chip;
#endif
+3 −10
Original line number Diff line number Diff line
@@ -420,10 +420,9 @@ static int wm_coeff_put(struct snd_kcontrol *kcontrol,

	memcpy(ctl->cache, p, ctl->len);

	if (!ctl->enabled) {
	ctl->set = 1;
	if (!ctl->enabled)
		return 0;
	}

	return wm_coeff_write_control(kcontrol, p, ctl->len);
}
@@ -1185,7 +1184,6 @@ static int wm_adsp_load_coeff(struct wm_adsp *dsp)
	int ret, pos, blocks, type, offset, reg;
	char *file;
	struct wm_adsp_buf *buf;
	int tmp;

	file = kzalloc(PAGE_SIZE, GFP_KERNEL);
	if (file == NULL)
@@ -1335,12 +1333,7 @@ static int wm_adsp_load_coeff(struct wm_adsp *dsp)
			}
		}

		tmp = le32_to_cpu(blk->len) % 4;
		if (tmp)
			pos += le32_to_cpu(blk->len) + (4 - tmp) + sizeof(*blk);
		else
			pos += le32_to_cpu(blk->len) + sizeof(*blk);

		pos += (le32_to_cpu(blk->len) + sizeof(*blk) + 3) & ~0x03;
		blocks++;
	}

Loading