mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
ASoC: amd: vangogh: Move nau8821 and CPU side code up for future platform
Move nau8821 and CPU side code up in the source so future platforms can be added. Signed-off-by: Lucas Tanure <lucas.tanure@collabora.com> Link: https://lore.kernel.org/r/20230217110850.1045250-8-lucas.tanure@collabora.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
9490fbb85b
commit
ab89aa0d3b
@ -30,6 +30,11 @@
|
||||
static unsigned long acp5x_machine_id;
|
||||
static struct snd_soc_jack vg_headset;
|
||||
|
||||
SND_SOC_DAILINK_DEF(platform, DAILINK_COMP_ARRAY(COMP_PLATFORM("acp5x_i2s_dma.0")));
|
||||
SND_SOC_DAILINK_DEF(acp5x_i2s, DAILINK_COMP_ARRAY(COMP_CPU("acp5x_i2s_playcap.0")));
|
||||
SND_SOC_DAILINK_DEF(acp5x_bt, DAILINK_COMP_ARRAY(COMP_CPU("acp5x_i2s_playcap.1")));
|
||||
SND_SOC_DAILINK_DEF(nau8821, DAILINK_COMP_ARRAY(COMP_CODEC("i2c-NVTN2020:00", "nau8821-hifi")));
|
||||
|
||||
static struct snd_soc_jack_pin acp5x_nau8821_jack_pins[] = {
|
||||
{
|
||||
.pin = "Headphone",
|
||||
@ -41,6 +46,44 @@ static struct snd_soc_jack_pin acp5x_nau8821_jack_pins[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static const struct snd_kcontrol_new acp5x_8821_controls[] = {
|
||||
SOC_DAPM_PIN_SWITCH("Headphone"),
|
||||
SOC_DAPM_PIN_SWITCH("Headset Mic"),
|
||||
SOC_DAPM_PIN_SWITCH("Int Mic"),
|
||||
};
|
||||
|
||||
static int platform_clock_control(struct snd_soc_dapm_widget *w,
|
||||
struct snd_kcontrol *k, int event)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = w->dapm;
|
||||
struct snd_soc_card *card = dapm->card;
|
||||
struct snd_soc_dai *dai;
|
||||
int ret = 0;
|
||||
|
||||
dai = snd_soc_card_get_codec_dai(card, ACP5X_NUVOTON_CODEC_DAI);
|
||||
if (!dai) {
|
||||
dev_err(card->dev, "Codec dai not found\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (SND_SOC_DAPM_EVENT_OFF(event)) {
|
||||
ret = snd_soc_dai_set_sysclk(dai, NAU8821_CLK_INTERNAL, 0, SND_SOC_CLOCK_IN);
|
||||
if (ret < 0) {
|
||||
dev_err(card->dev, "set sysclk err = %d\n", ret);
|
||||
return -EIO;
|
||||
}
|
||||
} else {
|
||||
ret = snd_soc_dai_set_sysclk(dai, NAU8821_CLK_FLL_BLK, 0, SND_SOC_CLOCK_IN);
|
||||
if (ret < 0)
|
||||
dev_err(dai->dev, "can't set BLK clock %d\n", ret);
|
||||
ret = snd_soc_dai_set_pll(dai, 0, 0, ACP5X_NUVOTON_BCLK, ACP5X_NAU8821_FREQ_OUT);
|
||||
if (ret < 0)
|
||||
dev_err(dai->dev, "can't set FLL: %d\n", ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int acp5x_8821_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_soc_component *component = asoc_rtd_to_codec(rtd, 0)->component;
|
||||
@ -138,6 +181,11 @@ static int acp5x_nau8821_hw_params(struct snd_pcm_substream *substream,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct snd_soc_ops acp5x_8821_ops = {
|
||||
.startup = acp5x_8821_startup,
|
||||
.hw_params = acp5x_nau8821_hw_params,
|
||||
};
|
||||
|
||||
static int acp5x_cs35l41_startup(struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
|
||||
@ -192,11 +240,6 @@ static int acp5x_cs35l41_hw_params(struct snd_pcm_substream *substream,
|
||||
|
||||
}
|
||||
|
||||
static const struct snd_soc_ops acp5x_8821_ops = {
|
||||
.startup = acp5x_8821_startup,
|
||||
.hw_params = acp5x_nau8821_hw_params,
|
||||
};
|
||||
|
||||
static const struct snd_soc_ops acp5x_cs35l41_play_ops = {
|
||||
.startup = acp5x_cs35l41_startup,
|
||||
.hw_params = acp5x_cs35l41_hw_params,
|
||||
@ -213,12 +256,8 @@ static struct snd_soc_codec_conf cs35l41_conf[] = {
|
||||
},
|
||||
};
|
||||
|
||||
SND_SOC_DAILINK_DEF(platform, DAILINK_COMP_ARRAY(COMP_PLATFORM("acp5x_i2s_dma.0")));
|
||||
SND_SOC_DAILINK_DEF(acp5x_i2s, DAILINK_COMP_ARRAY(COMP_CPU("acp5x_i2s_playcap.0")));
|
||||
SND_SOC_DAILINK_DEF(acp5x_bt, DAILINK_COMP_ARRAY(COMP_CPU("acp5x_i2s_playcap.1")));
|
||||
SND_SOC_DAILINK_DEF(nau8821, DAILINK_COMP_ARRAY(COMP_CODEC("i2c-NVTN2020:00", "nau8821-hifi")));
|
||||
SND_SOC_DAILINK_DEF(cs35l41, DAILINK_COMP_ARRAY(COMP_CODEC("spi-VLV1776:00", "cs35l41-pcm"),
|
||||
COMP_CODEC("spi-VLV1776:01", "cs35l41-pcm")));
|
||||
SND_SOC_DAILINK_DEF(cs35l41, DAILINK_COMP_ARRAY(COMP_CODEC("spi-VLV1776:00", "cs35l41-pcm"),
|
||||
COMP_CODEC("spi-VLV1776:01", "cs35l41-pcm")));
|
||||
|
||||
static struct snd_soc_dai_link acp5x_dai[] = {
|
||||
{
|
||||
@ -246,43 +285,7 @@ static struct snd_soc_dai_link acp5x_dai[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static int platform_clock_control(struct snd_soc_dapm_widget *w,
|
||||
struct snd_kcontrol *k, int event)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = w->dapm;
|
||||
struct snd_soc_card *card = dapm->card;
|
||||
struct snd_soc_dai *dai;
|
||||
int ret = 0;
|
||||
|
||||
dai = snd_soc_card_get_codec_dai(card, ACP5X_NUVOTON_CODEC_DAI);
|
||||
if (!dai) {
|
||||
dev_err(card->dev, "Codec dai not found\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (SND_SOC_DAPM_EVENT_OFF(event)) {
|
||||
ret = snd_soc_dai_set_sysclk(dai, NAU8821_CLK_INTERNAL, 0, SND_SOC_CLOCK_IN);
|
||||
if (ret < 0) {
|
||||
dev_err(card->dev, "set sysclk err = %d\n", ret);
|
||||
return -EIO;
|
||||
}
|
||||
} else {
|
||||
ret = snd_soc_dai_set_sysclk(dai, NAU8821_CLK_FLL_BLK, 0, SND_SOC_CLOCK_IN);
|
||||
if (ret < 0)
|
||||
dev_err(dai->dev, "can't set BLK clock %d\n", ret);
|
||||
ret = snd_soc_dai_set_pll(dai, 0, 0, ACP5X_NUVOTON_BCLK, ACP5X_NAU8821_FREQ_OUT);
|
||||
if (ret < 0)
|
||||
dev_err(dai->dev, "can't set FLL: %d\n", ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct snd_kcontrol_new acp5x_8821_controls[] = {
|
||||
SOC_DAPM_PIN_SWITCH("Headphone"),
|
||||
SOC_DAPM_PIN_SWITCH("Headset Mic"),
|
||||
SOC_DAPM_PIN_SWITCH("Int Mic"),
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget acp5x_8821_widgets[] = {
|
||||
SND_SOC_DAPM_HP("Headphone", NULL),
|
||||
|
Loading…
Reference in New Issue
Block a user