[linux-yocto] [PATCH 3/3] Add machine driver for wm8998 codec
Guoqing Zhang
guoqing.zhang at intel.com
Thu Dec 8 00:50:13 PST 2016
The machine driver for wm8998 codec is added for gluing codec
driver.
Signed-off-by: Guoqing Zhang <guoqing.zhang at intel.com>
---
sound/soc/intel/Kconfig | 1 -
sound/soc/intel/boards/bxt_florida.c | 17 ++++++++++++++---
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig
index 58e77a9..8b2e6a4 100644
--- a/sound/soc/intel/Kconfig
+++ b/sound/soc/intel/Kconfig
@@ -64,7 +64,6 @@ config SND_SOC_INTEL_BXT_FLORIDA_MACH
select SND_SOC_INTEL_SST
select SND_SOC_INTEL_SKYLAKE
select SND_SOC_DMIC
- select SND_SOC_HDAC_HDMI
select SND_HDA_DSP_LOADER
select SND_SOC_WM_ADSP
select SND_SOC_ARIZONA
diff --git a/sound/soc/intel/boards/bxt_florida.c b/sound/soc/intel/boards/bxt_florida.c
index 66f7f6e..4ab0635 100644
--- a/sound/soc/intel/boards/bxt_florida.c
+++ b/sound/soc/intel/boards/bxt_florida.c
@@ -272,8 +272,7 @@ static const struct snd_soc_dapm_route mrgfld_wm8998_map[] = {
{"Ext Spk", NULL, "SPKOUTRN"},
/*Earpiece*/
- { "EP", NULL, "EPOUTN" },
- { "EP", NULL, "EPOUTP" },
+ { "EP", NULL, "EPOUT" },
{"IN3L", NULL, "DMIC"},
{"IN3R", NULL, "DMIC"},
@@ -385,6 +384,17 @@ static int mrgfld_florida_codec_fixup(struct snd_soc_pcm_runtime *rtd,
return 0;
}
+static int mrgfld_ssp_florida_trigger(struct snd_pcm_substream *substream, int index)
+{
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
+ struct snd_soc_dai *florida_dai= rtd->codec_dai;
+
+ if (!strcmp(florida_dai->name, "wm8998-aif1"))
+ mrgfld_florida_set_codec_clk(rtd->codec, CODEC_IN_MCLK1);
+
+ return 0;
+}
+
static int mrgfld_ssp_florida_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{
@@ -414,6 +424,7 @@ static int mrgfld_ssp_florida_hw_params(struct snd_pcm_substream *substream,
static struct snd_soc_ops mrgfld_ssp_florida_ops = {
.hw_params = mrgfld_ssp_florida_hw_params,
+ .trigger = mrgfld_ssp_florida_trigger,
};
struct snd_soc_dai_link mrgfld_florida_msic_dailink[] = {
@@ -499,6 +510,7 @@ struct snd_soc_dai_link mrgfld_wm8998_msic_dailink[] = {
.codec_name = "wm8998-codec",
.codec_dai_name = "wm8998-aif1",
.be_hw_params_fixup = mrgfld_florida_codec_fixup,
+ .ops = &mrgfld_ssp_florida_ops,
.no_pcm = 1,
.dpcm_playback = 1,
.dpcm_capture = 1,
@@ -571,7 +583,6 @@ static int snd_mrgfld_florida_mc_probe(struct platform_device *pdev)
{
is_codec8998 = true;
snd_soc_card_wm8998_mrgfld.dev = &pdev->dev;
-
return devm_snd_soc_register_card(&pdev->dev, &snd_soc_card_wm8998_mrgfld);
}
--
2.5.0
More information about the linux-yocto
mailing list