Skip to content

Commit

Permalink
ASoC: Intel: maxim-common: support max98357a
Browse files Browse the repository at this point in the history
Move max98357a code to this common module so it could be shared
between multiple SOF machine drivers.

Signed-off-by: Brent Lu <brent.lu@intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20210505163705.305616-12-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
brentlu authored and broonie committed May 10, 2021
1 parent 81cd42e commit a21515b
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
60 changes: 60 additions & 0 deletions sound/soc/intel/boards/sof_maxim_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,5 +133,65 @@ void max_98373_set_codec_conf(struct snd_soc_card *card)
}
EXPORT_SYMBOL_NS(max_98373_set_codec_conf, SND_SOC_INTEL_SOF_MAXIM_COMMON);

/*
* Maxim MAX98357A
*/
static const struct snd_kcontrol_new max_98357a_kcontrols[] = {
SOC_DAPM_PIN_SWITCH("Spk"),
};

static const struct snd_soc_dapm_widget max_98357a_dapm_widgets[] = {
SND_SOC_DAPM_SPK("Spk", NULL),
};

static const struct snd_soc_dapm_route max_98357a_dapm_routes[] = {
/* speaker */
{"Spk", NULL, "Speaker"},
};

static struct snd_soc_dai_link_component max_98357a_components[] = {
{
.name = MAX_98357A_DEV0_NAME,
.dai_name = MAX_98357A_CODEC_DAI,
}
};

static int max_98357a_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_card *card = rtd->card;
int ret;

ret = snd_soc_dapm_new_controls(&card->dapm, max_98357a_dapm_widgets,
ARRAY_SIZE(max_98357a_dapm_widgets));
if (ret) {
dev_err(rtd->dev, "unable to add dapm controls, ret %d\n", ret);
/* Don't need to add routes if widget addition failed */
return ret;
}

ret = snd_soc_add_card_controls(card, max_98357a_kcontrols,
ARRAY_SIZE(max_98357a_kcontrols));
if (ret) {
dev_err(rtd->dev, "unable to add card controls, ret %d\n", ret);
return ret;
}

ret = snd_soc_dapm_add_routes(&card->dapm, max_98357a_dapm_routes,
ARRAY_SIZE(max_98357a_dapm_routes));

if (ret)
dev_err(rtd->dev, "unable to add dapm routes, ret %d\n", ret);

return ret;
}

void max_98357a_dai_link(struct snd_soc_dai_link *link)
{
link->codecs = max_98357a_components;
link->num_codecs = ARRAY_SIZE(max_98357a_components);
link->init = max_98357a_init;
}
EXPORT_SYMBOL_NS(max_98357a_dai_link, SND_SOC_INTEL_SOF_MAXIM_COMMON);

MODULE_DESCRIPTION("ASoC Intel SOF Maxim helpers");
MODULE_LICENSE("GPL");
8 changes: 8 additions & 0 deletions sound/soc/intel/boards/sof_maxim_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,12 @@ int max_98373_spk_codec_init(struct snd_soc_pcm_runtime *rtd);
void max_98373_set_codec_conf(struct snd_soc_card *card);
int max_98373_trigger(struct snd_pcm_substream *substream, int cmd);

/*
* Maxim MAX98357A
*/
#define MAX_98357A_CODEC_DAI "HiFi"
#define MAX_98357A_DEV0_NAME "MX98357A:00"

void max_98357a_dai_link(struct snd_soc_dai_link *link);

#endif /* __SOF_MAXIM_COMMON_H */

0 comments on commit a21515b

Please sign in to comment.