tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 65eb92e4c9f0a962656f131521f4fbc0d24c9d4c commit: 274d79e5187558078fcf107445fe56ab2fbe4c97 [4305/5346] ASoC: Intel: avs: Configure modules according to their type config: ia64-randconfig-r006-20220420 (https://download.01.org/0day-ci/archive/20220422/202204220546.342iZJyv-lkp@xxxxxxxxx/config) compiler: ia64-linux-gcc (GCC) 11.2.0 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 # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=274d79e5187558078fcf107445fe56ab2fbe4c97 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 274d79e5187558078fcf107445fe56ab2fbe4c97 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross W=1 O=build_dir ARCH=ia64 SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): `adc3xxx_i2c_remove' referenced in section `.data' of sound/soc/codecs/tlv320adc3xxx.o: defined in discarded section `.exit.text' of sound/soc/codecs/tlv320adc3xxx.o ia64-linux-ld: sound/soc/intel/avs/path.o: in function `avs_copier_create': >> sound/soc/intel/avs/path.c:181: undefined reference to `intel_nhlt_get_endpoint_blob' >> ia64-linux-ld: sound/soc/intel/avs/path.c:205: undefined reference to `intel_nhlt_get_endpoint_blob' vim +181 sound/soc/intel/avs/path.c 142 143 static int avs_copier_create(struct avs_dev *adev, struct avs_path_module *mod) 144 { 145 struct nhlt_acpi_table *nhlt = adev->nhlt; 146 struct avs_tplg_module *t = mod->template; 147 struct avs_copier_cfg *cfg; 148 struct nhlt_specific_cfg *ep_blob; 149 union avs_connector_node_id node_id = {0}; 150 size_t cfg_size, data_size = 0; 151 void *data = NULL; 152 u32 dma_type; 153 int ret; 154 155 dma_type = t->cfg_ext->copier.dma_type; 156 node_id.dma_type = dma_type; 157 158 switch (dma_type) { 159 struct avs_audio_format *fmt; 160 int direction; 161 162 case AVS_DMA_I2S_LINK_OUTPUT: 163 case AVS_DMA_I2S_LINK_INPUT: 164 if (avs_dma_type_is_input(dma_type)) 165 direction = SNDRV_PCM_STREAM_CAPTURE; 166 else 167 direction = SNDRV_PCM_STREAM_PLAYBACK; 168 169 if (t->cfg_ext->copier.blob_fmt) 170 fmt = t->cfg_ext->copier.blob_fmt; 171 else if (direction == SNDRV_PCM_STREAM_CAPTURE) 172 fmt = t->in_fmt; 173 else 174 fmt = t->cfg_ext->copier.out_fmt; 175 176 ep_blob = intel_nhlt_get_endpoint_blob(adev->dev, 177 nhlt, t->cfg_ext->copier.vindex.i2s.instance, 178 NHLT_LINK_SSP, fmt->valid_bit_depth, fmt->bit_depth, 179 fmt->num_channels, fmt->sampling_freq, direction, 180 NHLT_DEVICE_I2S); > 181 if (!ep_blob) { 182 dev_err(adev->dev, "no I2S ep_blob found\n"); 183 return -ENOENT; 184 } 185 186 data = ep_blob->caps; 187 data_size = ep_blob->size; 188 /* I2S gateway's vindex is statically assigned in topology */ 189 node_id.vindex = t->cfg_ext->copier.vindex.val; 190 191 break; 192 193 case AVS_DMA_DMIC_LINK_INPUT: 194 direction = SNDRV_PCM_STREAM_CAPTURE; 195 196 if (t->cfg_ext->copier.blob_fmt) 197 fmt = t->cfg_ext->copier.blob_fmt; 198 else 199 fmt = t->in_fmt; 200 201 ep_blob = intel_nhlt_get_endpoint_blob(adev->dev, nhlt, 0, 202 NHLT_LINK_DMIC, fmt->valid_bit_depth, 203 fmt->bit_depth, fmt->num_channels, 204 fmt->sampling_freq, direction, NHLT_DEVICE_DMIC); > 205 if (!ep_blob) { 206 dev_err(adev->dev, "no DMIC ep_blob found\n"); 207 return -ENOENT; 208 } 209 210 data = ep_blob->caps; 211 data_size = ep_blob->size; 212 /* DMIC gateway's vindex is statically assigned in topology */ 213 node_id.vindex = t->cfg_ext->copier.vindex.val; 214 215 break; 216 217 case AVS_DMA_HDA_HOST_OUTPUT: 218 case AVS_DMA_HDA_HOST_INPUT: 219 /* HOST gateway's vindex is dynamically assigned with DMA id */ 220 node_id.vindex = mod->owner->owner->dma_id; 221 break; 222 223 case AVS_DMA_HDA_LINK_OUTPUT: 224 case AVS_DMA_HDA_LINK_INPUT: 225 node_id.vindex = t->cfg_ext->copier.vindex.val | 226 mod->owner->owner->dma_id; 227 break; 228 229 case INVALID_OBJECT_ID: 230 default: 231 node_id = INVALID_NODE_ID; 232 break; 233 } 234 235 cfg_size = sizeof(*cfg) + data_size; 236 /* Every config-BLOB contains gateway attributes. */ 237 if (data_size) 238 cfg_size -= sizeof(cfg->gtw_cfg.config.attrs); 239 240 cfg = kzalloc(cfg_size, GFP_KERNEL); 241 if (!cfg) 242 return -ENOMEM; 243 244 cfg->base.cpc = t->cfg_base->cpc; 245 cfg->base.ibs = t->cfg_base->ibs; 246 cfg->base.obs = t->cfg_base->obs; 247 cfg->base.is_pages = t->cfg_base->is_pages; 248 cfg->base.audio_fmt = *t->in_fmt; 249 cfg->out_fmt = *t->cfg_ext->copier.out_fmt; 250 cfg->feature_mask = t->cfg_ext->copier.feature_mask; 251 cfg->gtw_cfg.node_id = node_id; 252 cfg->gtw_cfg.dma_buffer_size = t->cfg_ext->copier.dma_buffer_size; 253 /* config_length in DWORDs */ 254 cfg->gtw_cfg.config_length = DIV_ROUND_UP(data_size, 4); 255 if (data) 256 memcpy(&cfg->gtw_cfg.config, data, data_size); 257 258 mod->gtw_attrs = cfg->gtw_cfg.config.attrs; 259 260 ret = avs_dsp_init_module(adev, mod->module_id, mod->owner->instance_id, 261 t->core_id, t->domain, cfg, cfg_size, 262 &mod->instance_id); 263 kfree(cfg); 264 return ret; 265 } 266 -- 0-DAY CI Kernel Test Service https://01.org/lkp