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 --]
next prev 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.