diff mbox series

[2/2] ASoc: Intel: board: add BE DAI link for WoV

Message ID 20210324175200.44922-3-vamshi.krishna.gopal@intel.com (mailing list archive)
State Superseded
Headers show
Series kbl_da7219_max9357a machine changes for wov and MST | expand

Commit Message

Gopal, Vamshi Krishna March 24, 2021, 5:52 p.m. UTC
From: Mac Chiang <mac.chiang@intel.com>

create dai link in kbl_da7219_max98357a driver for wake on voice
functionality.

changes picked from broonie's tree
commit 0c7941a63a0f
("ASoC: Intel: Skylake: Use refcap device for mono recording")
commit 2154be362c90
("ASoc: Intel: boards: Add WOV as sink for nau88l25_ssm4567 machine")

Signed-off-by: Mac Chiang <mac.chiang@intel.com>
Signed-off-by: Vamshi Krishna Gopal <vamshi.krishna.gopal@intel.com>
Tested-by: Kaiyen Chang <kaiyen.chang@intel.corp-partner.google.com>
Tested-by: luke yang <luke_yang@compal.corp-partner.google.com>
Tested-by: Grace Kao <grace.kao@intel.com>
Tested-by: Kaiyen Chang <kaiyen.chang@intel.com>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>
---
 sound/soc/intel/boards/kbl_da7219_max98357a.c | 35 +++++++++++++++++++
 1 file changed, 35 insertions(+)

Comments

Pierre-Louis Bossart March 24, 2021, 6:43 p.m. UTC | #1
On 3/24/21 12:52 PM, vamshi.krishna.gopal@intel.com wrote:
> From: Mac Chiang <mac.chiang@intel.com>
> 
> create dai link in kbl_da7219_max98357a driver for wake on voice
> functionality.
> 
> changes picked from broonie's tree
> commit 0c7941a63a0f
> ("ASoC: Intel: Skylake: Use refcap device for mono recording")
> commit 2154be362c90
> ("ASoc: Intel: boards: Add WOV as sink for nau88l25_ssm4567 machine")
> 
> Signed-off-by: Mac Chiang <mac.chiang@intel.com>
> Signed-off-by: Vamshi Krishna Gopal <vamshi.krishna.gopal@intel.com>
> Tested-by: Kaiyen Chang <kaiyen.chang@intel.corp-partner.google.com>
> Tested-by: luke yang <luke_yang@compal.corp-partner.google.com>
> Tested-by: Grace Kao <grace.kao@intel.com>
> Tested-by: Kaiyen Chang <kaiyen.chang@intel.com>
> Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>
> ---
>   sound/soc/intel/boards/kbl_da7219_max98357a.c | 35 +++++++++++++++++++
>   1 file changed, 35 insertions(+)
> 
> diff --git a/sound/soc/intel/boards/kbl_da7219_max98357a.c b/sound/soc/intel/boards/kbl_da7219_max98357a.c
> index 1d6b2855874d..c9d83eebf4a8 100644
> --- a/sound/soc/intel/boards/kbl_da7219_max98357a.c
> +++ b/sound/soc/intel/boards/kbl_da7219_max98357a.c
> @@ -44,6 +44,7 @@ struct kbl_codec_private {
>   enum {
>   	KBL_DPCM_AUDIO_PB = 0,
>   	KBL_DPCM_AUDIO_CP,
> +	KBL_DPCM_AUDIO_REF_CP,
>   	KBL_DPCM_AUDIO_DMIC_CP,
>   	KBL_DPCM_AUDIO_HDMI1_PB,
>   	KBL_DPCM_AUDIO_HDMI2_PB,
> @@ -335,12 +336,36 @@ static struct snd_soc_ops kabylake_dmic_ops = {
>   	.startup = kabylake_dmic_startup,
>   };
>   
> +static const struct snd_pcm_hw_constraint_list constraints_refcap = {
> +	.count = ARRAY_SIZE(ch_mono),
> +	.list  = ch_mono,
> +};
> +
> +static int kabylake_refcap_startup(struct snd_pcm_substream *substream)
> +{
> +	substream->runtime->hw.channels_max = 1;
> +	snd_pcm_hw_constraint_list(substream->runtime, 0,
> +					SNDRV_PCM_HW_PARAM_CHANNELS,
> +					&constraints_refcap);
> +
> +	return snd_pcm_hw_constraint_list(substream->runtime, 0,
> +					SNDRV_PCM_HW_PARAM_RATE,
> +					&constraints_16000);
> +}
> +
> +static struct snd_soc_ops skylaye_refcap_ops = {
> +	.startup = kabylake_refcap_startup,
> +};
> +
>   SND_SOC_DAILINK_DEF(dummy,
>   	DAILINK_COMP_ARRAY(COMP_DUMMY()));
>   
>   SND_SOC_DAILINK_DEF(system,
>   	DAILINK_COMP_ARRAY(COMP_CPU("System Pin")));
>   
> +SND_SOC_DAILINK_DEF(reference,
> +	DAILINK_COMP_ARRAY(COMP_CPU("Reference Pin")));
> +
>   SND_SOC_DAILINK_DEF(dmic,
>   	DAILINK_COMP_ARRAY(COMP_CPU("DMIC Pin")));
>   
> @@ -415,6 +440,16 @@ static struct snd_soc_dai_link kabylake_dais[] = {
>   		.ops = &kabylake_da7219_fe_ops,
>   		SND_SOC_DAILINK_REG(system, dummy, platform),
>   	},
> +	[KBL_DPCM_AUDIO_REF_CP] = {
> +		.name = "Kbl Audio Reference cap",
> +		.stream_name = "Wake on Voice",

Does anyone have a clear definition of what "REF_CP" and "reference" 
mean? it's not echo reference since there is a separate entry for this, 
so not sure what the term means.

Half of the SKL/KBL drivers seem to use this FE for "Wake on Voice" and 
the other half use it for 'Refcap', this doesn't look very consistent.

> +		.init = NULL,
> +		.dpcm_capture = 1,
> +		.nonatomic = 1,
> +		.dynamic = 1,
> +		.ops = &skylaye_refcap_ops,
> +		SND_SOC_DAILINK_REG(reference, dummy, platform),
> +	},
>   	[KBL_DPCM_AUDIO_DMIC_CP] = {
>   		.name = "Kbl Audio DMIC cap",
>   		.stream_name = "dmiccap",
>
kernel test robot March 24, 2021, 11:39 p.m. UTC | #2
Hi,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on asoc/for-next]
[also build test ERROR on sound/for-next v5.12-rc4 next-20210324]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/vamshi-krishna-gopal-intel-com/kbl_da7219_max9357a-machine-changes-for-wov-and-MST/20210325-015625
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
config: x86_64-randconfig-a015-20210325 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project a4fb88669cd98db6fef7dcac88e3ec425d40c00d)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/53b070ce8badeefb7fde6432ed4a5078cefe28e3
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review vamshi-krishna-gopal-intel-com/kbl_da7219_max9357a-machine-changes-for-wov-and-MST/20210325-015625
        git checkout 53b070ce8badeefb7fde6432ed4a5078cefe28e3
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> sound/soc/intel/boards/kbl_da7219_max98357a.c:340:22: error: use of undeclared identifier 'ch_mono'
           .count = ARRAY_SIZE(ch_mono),
                               ^
>> sound/soc/intel/boards/kbl_da7219_max98357a.c:340:22: error: use of undeclared identifier 'ch_mono'
>> sound/soc/intel/boards/kbl_da7219_max98357a.c:340:22: error: use of undeclared identifier 'ch_mono'
   sound/soc/intel/boards/kbl_da7219_max98357a.c:341:11: error: use of undeclared identifier 'ch_mono'
           .list  = ch_mono,
                    ^
>> sound/soc/intel/boards/kbl_da7219_max98357a.c:353:7: error: use of undeclared identifier 'constraints_16000'; did you mean 'constraints_rates'?
                                           &constraints_16000);
                                            ^~~~~~~~~~~~~~~~~
                                            constraints_rates
   sound/soc/intel/boards/kbl_da7219_max98357a.c:251:48: note: 'constraints_rates' declared here
   static const struct snd_pcm_hw_constraint_list constraints_rates = {
                                                  ^
   5 errors generated.


vim +/ch_mono +340 sound/soc/intel/boards/kbl_da7219_max98357a.c

   338	
   339	static const struct snd_pcm_hw_constraint_list constraints_refcap = {
 > 340		.count = ARRAY_SIZE(ch_mono),
   341		.list  = ch_mono,
   342	};
   343	
   344	static int kabylake_refcap_startup(struct snd_pcm_substream *substream)
   345	{
   346		substream->runtime->hw.channels_max = 1;
   347		snd_pcm_hw_constraint_list(substream->runtime, 0,
   348						SNDRV_PCM_HW_PARAM_CHANNELS,
   349						&constraints_refcap);
   350	
   351		return snd_pcm_hw_constraint_list(substream->runtime, 0,
   352						SNDRV_PCM_HW_PARAM_RATE,
 > 353						&constraints_16000);
   354	}
   355	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff mbox series

Patch

diff --git a/sound/soc/intel/boards/kbl_da7219_max98357a.c b/sound/soc/intel/boards/kbl_da7219_max98357a.c
index 1d6b2855874d..c9d83eebf4a8 100644
--- a/sound/soc/intel/boards/kbl_da7219_max98357a.c
+++ b/sound/soc/intel/boards/kbl_da7219_max98357a.c
@@ -44,6 +44,7 @@  struct kbl_codec_private {
 enum {
 	KBL_DPCM_AUDIO_PB = 0,
 	KBL_DPCM_AUDIO_CP,
+	KBL_DPCM_AUDIO_REF_CP,
 	KBL_DPCM_AUDIO_DMIC_CP,
 	KBL_DPCM_AUDIO_HDMI1_PB,
 	KBL_DPCM_AUDIO_HDMI2_PB,
@@ -335,12 +336,36 @@  static struct snd_soc_ops kabylake_dmic_ops = {
 	.startup = kabylake_dmic_startup,
 };
 
+static const struct snd_pcm_hw_constraint_list constraints_refcap = {
+	.count = ARRAY_SIZE(ch_mono),
+	.list  = ch_mono,
+};
+
+static int kabylake_refcap_startup(struct snd_pcm_substream *substream)
+{
+	substream->runtime->hw.channels_max = 1;
+	snd_pcm_hw_constraint_list(substream->runtime, 0,
+					SNDRV_PCM_HW_PARAM_CHANNELS,
+					&constraints_refcap);
+
+	return snd_pcm_hw_constraint_list(substream->runtime, 0,
+					SNDRV_PCM_HW_PARAM_RATE,
+					&constraints_16000);
+}
+
+static struct snd_soc_ops skylaye_refcap_ops = {
+	.startup = kabylake_refcap_startup,
+};
+
 SND_SOC_DAILINK_DEF(dummy,
 	DAILINK_COMP_ARRAY(COMP_DUMMY()));
 
 SND_SOC_DAILINK_DEF(system,
 	DAILINK_COMP_ARRAY(COMP_CPU("System Pin")));
 
+SND_SOC_DAILINK_DEF(reference,
+	DAILINK_COMP_ARRAY(COMP_CPU("Reference Pin")));
+
 SND_SOC_DAILINK_DEF(dmic,
 	DAILINK_COMP_ARRAY(COMP_CPU("DMIC Pin")));
 
@@ -415,6 +440,16 @@  static struct snd_soc_dai_link kabylake_dais[] = {
 		.ops = &kabylake_da7219_fe_ops,
 		SND_SOC_DAILINK_REG(system, dummy, platform),
 	},
+	[KBL_DPCM_AUDIO_REF_CP] = {
+		.name = "Kbl Audio Reference cap",
+		.stream_name = "Wake on Voice",
+		.init = NULL,
+		.dpcm_capture = 1,
+		.nonatomic = 1,
+		.dynamic = 1,
+		.ops = &skylaye_refcap_ops,
+		SND_SOC_DAILINK_REG(reference, dummy, platform),
+	},
 	[KBL_DPCM_AUDIO_DMIC_CP] = {
 		.name = "Kbl Audio DMIC cap",
 		.stream_name = "dmiccap",