From 2e61926cb4a42d79a406aa64f04869d1227ca42c Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Wed, 7 Aug 2013 19:01:40 +0100 Subject: ASoC: ak4104: Add stub DAPM support This makes it easer to integrate the device with other on-board components and ensures correct operation following removal of support for non-DAPM CODECs. Signed-off-by: Mark Brown --- sound/soc/codecs/ak4104.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'sound/soc/codecs') diff --git a/sound/soc/codecs/ak4104.c b/sound/soc/codecs/ak4104.c index c7cfdf957e4d..9a7c89b9cb35 100644 --- a/sound/soc/codecs/ak4104.c +++ b/sound/soc/codecs/ak4104.c @@ -51,6 +51,14 @@ struct ak4104_private { struct regmap *regmap; }; +static const struct snd_soc_dapm_widget ak4104_dapm_widgets[] = { +SND_SOC_DAPM_OUTPUT("TX"), +}; + +static const struct snd_soc_dapm_route ak4104_dapm_routes[] = { + { "TX", NULL, "Playback" }, +}; + static int ak4104_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int format) { @@ -214,6 +222,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 = { -- cgit From a5db4d50fa578936275c1e26d5d2fda25c0d2bf6 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Wed, 7 Aug 2013 19:05:47 +0100 Subject: ASoC: ak4104: Manage TXE using DAPM Saves some code. We should also be able to manage the power up and reset registers using DAPM but it's probably more trouble than it's worth in mains powered systems. Signed-off-by: Mark Brown --- sound/soc/codecs/ak4104.c | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) (limited to 'sound/soc/codecs') diff --git a/sound/soc/codecs/ak4104.c b/sound/soc/codecs/ak4104.c index 9a7c89b9cb35..71059c07ae7b 100644 --- a/sound/soc/codecs/ak4104.c +++ b/sound/soc/codecs/ak4104.c @@ -52,11 +52,14 @@ struct ak4104_private { }; 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[] = { - { "TX", NULL, "Playback" }, + { "TXE", NULL, "Playback" }, + { "TX", NULL, "TXE" }, }; static int ak4104_set_dai_fmt(struct snd_soc_dai *codec_dai, @@ -146,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, }; -- cgit