All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH V1 6/6] staging: greybus: audio: Enable GB codec, audio module compilation.
Date: Tue, 19 May 2020 20:50:16 +0800	[thread overview]
Message-ID: <202005192002.GvM9EmPk%lkp@intel.com> (raw)
In-Reply-To: <77cfc355b87ee21636430f787764700de1983f38.1589734179.git.vaibhav.sr@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 12861 bytes --]

Hi Vaibhav,

I love your patch! Perhaps something to improve:

[auto build test WARNING on staging/staging-testing]
[also build test WARNING on v5.7-rc6 next-20200518]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Vaibhav-Agarwal/Enable-Greybus-Audio-codec-driver/20200518-012023
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git cef077e6aa4c7dbe2f23e1201cf705f9540ec467
config: nds32-allyesconfig (attached as .config)
compiler: nds32le-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=nds32 

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

All warnings (new ones prefixed by >>, old ones prefixed by <<):

>> drivers/staging/greybus/audio_helper.c:59:5: warning: no previous prototype for 'gbaudio_dapm_link_component_dai_widgets' [-Wmissing-prototypes]
59 | int gbaudio_dapm_link_component_dai_widgets(struct snd_soc_card *card,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/staging/greybus/audio_helper.c:112:5: warning: no previous prototype for 'gbaudio_dapm_free_controls' [-Wmissing-prototypes]
112 | int gbaudio_dapm_free_controls(struct snd_soc_dapm_context *dapm,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/staging/greybus/audio_helper.c:189:5: warning: no previous prototype for 'gbaudio_remove_component_controls' [-Wmissing-prototypes]
189 | int gbaudio_remove_component_controls(struct snd_soc_component *component,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
drivers/staging/greybus/audio_topology.c: In function 'find_gb_module':
>> drivers/staging/greybus/audio_topology.c:31:14: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
31 |  int dev_id, ret;
|              ^~~
drivers/staging/greybus/audio_topology.c: In function 'gbcodec_mixer_dapm_ctl_get':
>> drivers/staging/greybus/audio_topology.c:380:33: warning: variable 'info' set but not used [-Wunused-but-set-variable]
380 |  struct gb_audio_ctl_elem_info *info;
|                                 ^~~~

vim +/gbaudio_dapm_link_component_dai_widgets +59 drivers/staging/greybus/audio_helper.c

94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   58  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  @59  int gbaudio_dapm_link_component_dai_widgets(struct snd_soc_card *card,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   60  					    struct snd_soc_dapm_context *dapm)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   61  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   62  	struct snd_soc_dapm_widget *dai_w;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   63  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   64  	/* For each DAI widget... */
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   65  	list_for_each_entry(dai_w, &card->widgets, list) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   66  		if (dai_w->dapm != dapm)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   67  			continue;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   68  		switch (dai_w->id) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   69  		case snd_soc_dapm_dai_in:
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   70  		case snd_soc_dapm_dai_out:
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   71  			break;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   72  		default:
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   73  			continue;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   74  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   75  		gbaudio_dapm_link_dai_widget(dai_w, card);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   76  	}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   77  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   78  	return 0;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   79  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   80  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   81  static void gbaudio_dapm_free_path(struct snd_soc_dapm_path *path)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   82  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   83  	list_del(&path->list_node[SND_SOC_DAPM_DIR_IN]);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   84  	list_del(&path->list_node[SND_SOC_DAPM_DIR_OUT]);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   85  	list_del(&path->list_kcontrol);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   86  	list_del(&path->list);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   87  	kfree(path);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   88  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   89  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   90  static void gbaudio_dapm_free_widget(struct snd_soc_dapm_widget *w)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   91  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   92  	struct snd_soc_dapm_path *p, *next_p;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   93  	enum snd_soc_dapm_direction dir;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   94  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   95  	list_del(&w->list);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   96  	/*
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   97  	 * remove source and sink paths associated to this widget.
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   98  	 * While removing the path, remove reference to it from both
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   99  	 * source and sink widgets so that path is removed only once.
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  100  	 */
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  101  	gbaudio_dapm_for_each_direction(dir) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  102  		snd_soc_dapm_widget_for_each_path_safe(w, dir, p, next_p)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  103  			gbaudio_dapm_free_path(p);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  104  	}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  105  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  106  	kfree(w->kcontrols);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  107  	kfree_const(w->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  108  	kfree_const(w->sname);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  109  	kfree(w);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  110  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  111  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17 @112  int gbaudio_dapm_free_controls(struct snd_soc_dapm_context *dapm,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  113  			       const struct snd_soc_dapm_widget *widget,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  114  			       int num)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  115  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  116  	int i;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  117  	struct snd_soc_dapm_widget *w, *next_w;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  118  #ifdef CONFIG_DEBUG_FS
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  119  	struct dentry *parent = dapm->debugfs_dapm;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  120  	struct dentry *debugfs_w = NULL;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  121  #endif
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  122  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  123  	mutex_lock(&dapm->card->dapm_mutex);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  124  	for (i = 0; i < num; i++) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  125  		/* below logic can be optimized to identify widget pointer */
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  126  		list_for_each_entry_safe(w, next_w, &dapm->card->widgets,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  127  					 list) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  128  			if (w->dapm != dapm)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  129  				continue;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  130  			if (!strcmp(w->name, widget->name))
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  131  				break;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  132  			w = NULL;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  133  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  134  		if (!w) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  135  			dev_err(dapm->dev, "%s: widget not found\n",
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  136  				widget->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  137  			return -EINVAL;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  138  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  139  		widget++;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  140  #ifdef CONFIG_DEBUG_FS
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  141  		if (!parent)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  142  			debugfs_w = debugfs_lookup(w->name, parent);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  143  		debugfs_remove(debugfs_w);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  144  		debugfs_w = NULL;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  145  #endif
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  146  		gbaudio_dapm_free_widget(w);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  147  	}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  148  	mutex_unlock(&dapm->card->dapm_mutex);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  149  	return 0;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  150  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  151  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  152  static int gbaudio_remove_controls(struct snd_card *card, struct device *dev,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  153  				   const struct snd_kcontrol_new *controls,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  154  				   int num_controls, const char *prefix)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  155  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  156  	int i, err;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  157  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  158  	for (i = 0; i < num_controls; i++) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  159  		const struct snd_kcontrol_new *control = &controls[i];
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  160  		struct snd_ctl_elem_id id;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  161  		struct snd_kcontrol *kctl;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  162  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  163  		if (prefix)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  164  			snprintf(id.name, sizeof(id.name), "%s %s", prefix,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  165  				 control->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  166  		else
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  167  			strlcpy(id.name, control->name, sizeof(id.name));
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  168  		id.numid = 0;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  169  		id.iface = control->iface;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  170  		id.device = control->device;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  171  		id.subdevice = control->subdevice;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  172  		id.index = control->index;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  173  		kctl = snd_ctl_find_id(card, &id);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  174  		if (!kctl) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  175  			dev_err(dev, "%d: Failed to find %s\n", err,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  176  				control->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  177  			return -ENOENT;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  178  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  179  		err = snd_ctl_remove(card, kctl);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  180  		if (err < 0) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  181  			dev_err(dev, "%d: Failed to remove %s\n", err,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  182  				control->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  183  			return err;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  184  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  185  	}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  186  	return 0;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  187  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  188  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17 @189  int gbaudio_remove_component_controls(struct snd_soc_component *component,

:::::: The code at line 59 was first introduced by commit
:::::: 94b08a33fd1bcaa8660430f8107b5c7bbfbca3b4 staging: greybus: audio: Add helper APIs for dynamic audio modules

:::::: TO: Vaibhav Agarwal <vaibhav.sr@gmail.com>
:::::: CC: 0day robot <lkp@intel.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 56159 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: Vaibhav Agarwal <vaibhav.sr@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Elder <elder@kernel.org>, Johan Hovold <johan@kernel.org>,
	Mark Greer <mgreer@animalcreek.com>
Cc: kbuild-all@lists.01.org, greybus-dev@lists.linaro.org,
	devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Vaibhav Agarwal <vaibhav.sr@gmail.com>
Subject: Re: [PATCH V1 6/6] staging: greybus: audio: Enable GB codec, audio module compilation.
Date: Tue, 19 May 2020 20:50:16 +0800	[thread overview]
Message-ID: <202005192002.GvM9EmPk%lkp@intel.com> (raw)
In-Reply-To: <77cfc355b87ee21636430f787764700de1983f38.1589734179.git.vaibhav.sr@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 12671 bytes --]

Hi Vaibhav,

I love your patch! Perhaps something to improve:

[auto build test WARNING on staging/staging-testing]
[also build test WARNING on v5.7-rc6 next-20200518]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Vaibhav-Agarwal/Enable-Greybus-Audio-codec-driver/20200518-012023
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git cef077e6aa4c7dbe2f23e1201cf705f9540ec467
config: nds32-allyesconfig (attached as .config)
compiler: nds32le-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=nds32 

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

All warnings (new ones prefixed by >>, old ones prefixed by <<):

>> drivers/staging/greybus/audio_helper.c:59:5: warning: no previous prototype for 'gbaudio_dapm_link_component_dai_widgets' [-Wmissing-prototypes]
59 | int gbaudio_dapm_link_component_dai_widgets(struct snd_soc_card *card,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/staging/greybus/audio_helper.c:112:5: warning: no previous prototype for 'gbaudio_dapm_free_controls' [-Wmissing-prototypes]
112 | int gbaudio_dapm_free_controls(struct snd_soc_dapm_context *dapm,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/staging/greybus/audio_helper.c:189:5: warning: no previous prototype for 'gbaudio_remove_component_controls' [-Wmissing-prototypes]
189 | int gbaudio_remove_component_controls(struct snd_soc_component *component,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
drivers/staging/greybus/audio_topology.c: In function 'find_gb_module':
>> drivers/staging/greybus/audio_topology.c:31:14: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
31 |  int dev_id, ret;
|              ^~~
drivers/staging/greybus/audio_topology.c: In function 'gbcodec_mixer_dapm_ctl_get':
>> drivers/staging/greybus/audio_topology.c:380:33: warning: variable 'info' set but not used [-Wunused-but-set-variable]
380 |  struct gb_audio_ctl_elem_info *info;
|                                 ^~~~

vim +/gbaudio_dapm_link_component_dai_widgets +59 drivers/staging/greybus/audio_helper.c

94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   58  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  @59  int gbaudio_dapm_link_component_dai_widgets(struct snd_soc_card *card,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   60  					    struct snd_soc_dapm_context *dapm)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   61  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   62  	struct snd_soc_dapm_widget *dai_w;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   63  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   64  	/* For each DAI widget... */
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   65  	list_for_each_entry(dai_w, &card->widgets, list) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   66  		if (dai_w->dapm != dapm)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   67  			continue;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   68  		switch (dai_w->id) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   69  		case snd_soc_dapm_dai_in:
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   70  		case snd_soc_dapm_dai_out:
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   71  			break;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   72  		default:
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   73  			continue;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   74  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   75  		gbaudio_dapm_link_dai_widget(dai_w, card);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   76  	}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   77  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   78  	return 0;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   79  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   80  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   81  static void gbaudio_dapm_free_path(struct snd_soc_dapm_path *path)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   82  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   83  	list_del(&path->list_node[SND_SOC_DAPM_DIR_IN]);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   84  	list_del(&path->list_node[SND_SOC_DAPM_DIR_OUT]);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   85  	list_del(&path->list_kcontrol);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   86  	list_del(&path->list);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   87  	kfree(path);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   88  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   89  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   90  static void gbaudio_dapm_free_widget(struct snd_soc_dapm_widget *w)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   91  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   92  	struct snd_soc_dapm_path *p, *next_p;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   93  	enum snd_soc_dapm_direction dir;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   94  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   95  	list_del(&w->list);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   96  	/*
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   97  	 * remove source and sink paths associated to this widget.
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   98  	 * While removing the path, remove reference to it from both
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17   99  	 * source and sink widgets so that path is removed only once.
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  100  	 */
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  101  	gbaudio_dapm_for_each_direction(dir) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  102  		snd_soc_dapm_widget_for_each_path_safe(w, dir, p, next_p)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  103  			gbaudio_dapm_free_path(p);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  104  	}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  105  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  106  	kfree(w->kcontrols);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  107  	kfree_const(w->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  108  	kfree_const(w->sname);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  109  	kfree(w);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  110  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  111  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17 @112  int gbaudio_dapm_free_controls(struct snd_soc_dapm_context *dapm,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  113  			       const struct snd_soc_dapm_widget *widget,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  114  			       int num)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  115  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  116  	int i;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  117  	struct snd_soc_dapm_widget *w, *next_w;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  118  #ifdef CONFIG_DEBUG_FS
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  119  	struct dentry *parent = dapm->debugfs_dapm;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  120  	struct dentry *debugfs_w = NULL;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  121  #endif
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  122  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  123  	mutex_lock(&dapm->card->dapm_mutex);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  124  	for (i = 0; i < num; i++) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  125  		/* below logic can be optimized to identify widget pointer */
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  126  		list_for_each_entry_safe(w, next_w, &dapm->card->widgets,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  127  					 list) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  128  			if (w->dapm != dapm)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  129  				continue;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  130  			if (!strcmp(w->name, widget->name))
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  131  				break;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  132  			w = NULL;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  133  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  134  		if (!w) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  135  			dev_err(dapm->dev, "%s: widget not found\n",
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  136  				widget->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  137  			return -EINVAL;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  138  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  139  		widget++;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  140  #ifdef CONFIG_DEBUG_FS
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  141  		if (!parent)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  142  			debugfs_w = debugfs_lookup(w->name, parent);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  143  		debugfs_remove(debugfs_w);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  144  		debugfs_w = NULL;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  145  #endif
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  146  		gbaudio_dapm_free_widget(w);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  147  	}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  148  	mutex_unlock(&dapm->card->dapm_mutex);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  149  	return 0;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  150  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  151  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  152  static int gbaudio_remove_controls(struct snd_card *card, struct device *dev,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  153  				   const struct snd_kcontrol_new *controls,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  154  				   int num_controls, const char *prefix)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  155  {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  156  	int i, err;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  157  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  158  	for (i = 0; i < num_controls; i++) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  159  		const struct snd_kcontrol_new *control = &controls[i];
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  160  		struct snd_ctl_elem_id id;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  161  		struct snd_kcontrol *kctl;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  162  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  163  		if (prefix)
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  164  			snprintf(id.name, sizeof(id.name), "%s %s", prefix,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  165  				 control->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  166  		else
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  167  			strlcpy(id.name, control->name, sizeof(id.name));
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  168  		id.numid = 0;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  169  		id.iface = control->iface;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  170  		id.device = control->device;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  171  		id.subdevice = control->subdevice;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  172  		id.index = control->index;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  173  		kctl = snd_ctl_find_id(card, &id);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  174  		if (!kctl) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  175  			dev_err(dev, "%d: Failed to find %s\n", err,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  176  				control->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  177  			return -ENOENT;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  178  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  179  		err = snd_ctl_remove(card, kctl);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  180  		if (err < 0) {
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  181  			dev_err(dev, "%d: Failed to remove %s\n", err,
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  182  				control->name);
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  183  			return err;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  184  		}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  185  	}
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  186  	return 0;
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  187  }
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17  188  
94b08a33fd1bcaa Vaibhav Agarwal 2020-05-17 @189  int gbaudio_remove_component_controls(struct snd_soc_component *component,

:::::: The code at line 59 was first introduced by commit
:::::: 94b08a33fd1bcaa8660430f8107b5c7bbfbca3b4 staging: greybus: audio: Add helper APIs for dynamic audio modules

:::::: TO: Vaibhav Agarwal <vaibhav.sr@gmail.com>
:::::: CC: 0day robot <lkp@intel.com>

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 56159 bytes --]

  parent reply	other threads:[~2020-05-19 12:50 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-17 17:17 [PATCH V1 0/6] Enable Greybus Audio codec driver Vaibhav Agarwal
2020-05-17 17:17 ` [PATCH V1 1/6] staging: greybus: audio: Update snd_jack FW usage as per new APIs Vaibhav Agarwal
2020-05-17 17:17 ` [PATCH V1 2/6] staging: greybus: audio: Maintain jack list within GB Audio module Vaibhav Agarwal
2020-05-17 17:17 ` [PATCH V1 3/6] staging: greybus: audio: Resolve compilation errors for GB codec module Vaibhav Agarwal
2020-05-17 17:17 ` [PATCH V1 4/6] staging: greybus: audio: Resolve compilation error in topology parser Vaibhav Agarwal
2020-05-17 17:17 ` [PATCH V1 5/6] staging: greybus: audio: Add helper APIs for dynamic audio modules Vaibhav Agarwal
2020-05-17 17:37   ` Alexandre Belloni
2020-05-19  7:53     ` Vaibhav Agarwal
2020-05-17 17:17 ` [PATCH V1 6/6] staging: greybus: audio: Enable GB codec, audio module compilation Vaibhav Agarwal
2020-05-17 20:29   ` kbuild test robot
2020-05-17 20:29     ` kbuild test robot
2020-05-19 12:50   ` kbuild test robot [this message]
2020-05-19 12:50     ` kbuild test robot
2020-05-19 21:33   ` kbuild test robot
2020-05-19 21:33     ` kbuild test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202005192002.GvM9EmPk%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.