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

Commit de2e87ba authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'asoc/topic/ak4104' into asoc-next

parents 6234eabf a5db4d50
Loading
Loading
Loading
Loading
+16 −18
Original line number Diff line number Diff line
@@ -51,6 +51,17 @@ struct ak4104_private {
	struct regmap *regmap;
};

static const struct snd_soc_dapm_widget ak4104_dapm_widgets[] = {
SND_SOC_DAPM_PGA("TXE", AK4104_REG_TX, AK4104_TX_TXE, 0, NULL, 0),

SND_SOC_DAPM_OUTPUT("TX"),
};

static const struct snd_soc_dapm_route ak4104_dapm_routes[] = {
	{ "TXE", NULL, "Playback" },
	{ "TX", NULL, "TXE" },
};

static int ak4104_set_dai_fmt(struct snd_soc_dai *codec_dai,
			      unsigned int format)
{
@@ -138,29 +149,11 @@ static int ak4104_hw_params(struct snd_pcm_substream *substream,
	if (ret < 0)
		return ret;

	/* enable transmitter */
	ret = regmap_update_bits(ak4104->regmap, AK4104_REG_TX,
				 AK4104_TX_TXE, AK4104_TX_TXE);
	if (ret < 0)
		return ret;

	return 0;
}

static int ak4104_hw_free(struct snd_pcm_substream *substream,
			  struct snd_soc_dai *dai)
{
	struct snd_soc_codec *codec = dai->codec;
	struct ak4104_private *ak4104 = snd_soc_codec_get_drvdata(codec);

	/* disable transmitter */
	return regmap_update_bits(ak4104->regmap, AK4104_REG_TX,
				  AK4104_TX_TXE, 0);
}

static const struct snd_soc_dai_ops ak4101_dai_ops = {
	.hw_params = ak4104_hw_params,
	.hw_free = ak4104_hw_free,
	.set_fmt = ak4104_set_dai_fmt,
};

@@ -214,6 +207,11 @@ static int ak4104_remove(struct snd_soc_codec *codec)
static struct snd_soc_codec_driver soc_codec_device_ak4104 = {
	.probe =	ak4104_probe,
	.remove =	ak4104_remove,

	.dapm_widgets = ak4104_dapm_widgets,
	.num_dapm_widgets = ARRAY_SIZE(ak4104_dapm_widgets),
	.dapm_routes = ak4104_dapm_routes,
	.num_dapm_routes = ARRAY_SIZE(ak4104_dapm_routes),
};

static const struct regmap_config ak4104_regmap = {