CC: kbuild-all(a)lists.01.org CC: linux-kernel(a)vger.kernel.org TO: Vaibhav Agarwal CC: "Greg Kroah-Hartman" CC: Dan Carpenter tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 805c6d3c19210c90c109107d189744e960eae025 commit: c9a57eddb235d53b0a8b9d740e454ef466086fc8 staging: greybus: audio: Enable GB codec, audio module compilation. date: 8 weeks ago :::::: branch date: 9 hours ago :::::: commit date: 8 weeks ago config: openrisc-randconfig-m031-20200923 (attached as .config) compiler: or1k-linux-gcc (GCC) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: drivers/staging/greybus/audio_codec.c:466 gbcodec_hw_params() error: uninitialized symbol 'data'. drivers/staging/greybus/audio_codec.c:538 gbcodec_prepare() error: uninitialized symbol 'data'. drivers/staging/greybus/audio_codec.c:621 gbcodec_mute_stream() error: uninitialized symbol 'data'. drivers/staging/greybus/audio_topology.c:1078 gbaudio_tplg_create_widget() error: uninitialized symbol 'widget_kctls'. Old smatch warnings: drivers/staging/greybus/audio_topology.c:1100 gbaudio_tplg_create_widget() error: uninitialized symbol 'widget_kctls'. # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c9a57eddb235d53b0a8b9d740e454ef466086fc8 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout c9a57eddb235d53b0a8b9d740e454ef466086fc8 vim +/data +466 drivers/staging/greybus/audio_codec.c d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 409 d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 410 static int gbcodec_hw_params(struct snd_pcm_substream *substream, d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 411 struct snd_pcm_hw_params *hwparams, d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 412 struct snd_soc_dai *dai) d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 413 { 796fad441cb248 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-28 414 int ret; 31959392c7db09 drivers/staging/greybus/audio_codec.c Chaehyun Lim 2016-09-20 415 u8 sig_bits, channels; 6236015fd2f1b2 drivers/staging/greybus/audio_codec.c Kamal Heib 2018-01-17 416 u32 format, rate; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 417 struct gbaudio_module_info *module; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 418 struct gbaudio_data_connection *data; c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 419 struct gb_bundle *bundle; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 420 struct gbaudio_codec_info *codec = dev_get_drvdata(dai->dev); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 421 struct gbaudio_stream_params *params; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 422 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 423 mutex_lock(&codec->lock); 3994e0b139c709 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-28 424 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 425 if (list_empty(&codec->module_list)) { 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 426 dev_err(codec->dev, "No codec module available\n"); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 427 mutex_unlock(&codec->lock); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 428 return -ENODEV; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 429 } b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 430 b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 431 /* b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 432 * assuming, currently only 48000 Hz, 16BIT_LE, stereo b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 433 * is supported, validate params before configuring codec b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 434 */ b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 435 if (params_channels(hwparams) != 2) { b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 436 dev_err(dai->dev, "Invalid channel count:%d\n", b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 437 params_channels(hwparams)); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 438 mutex_unlock(&codec->lock); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 439 return -EINVAL; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 440 } b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 441 channels = params_channels(hwparams); b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 442 b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 443 if (params_rate(hwparams) != 48000) { b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 444 dev_err(dai->dev, "Invalid sampling rate:%d\n", b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 445 params_rate(hwparams)); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 446 mutex_unlock(&codec->lock); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 447 return -EINVAL; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 448 } b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 449 rate = GB_AUDIO_PCM_RATE_48000; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 450 b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 451 if (params_format(hwparams) != SNDRV_PCM_FORMAT_S16_LE) { b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 452 dev_err(dai->dev, "Invalid format:%d\n", b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 453 params_format(hwparams)); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 454 mutex_unlock(&codec->lock); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 455 return -EINVAL; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 456 } b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 457 format = GB_AUDIO_PCM_FMT_S16_LE; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 458 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 459 /* find the data connection */ ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 460 list_for_each_entry(module, &codec->module_list, list) { 60e7327d54b270 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 461 data = find_data(module, dai->id); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 462 if (data) ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 463 break; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 464 } 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 465 ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 @466 if (!data) { ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 467 dev_err(dai->dev, "DATA connection missing\n"); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 468 mutex_unlock(&codec->lock); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 469 return -EINVAL; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 470 } ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 471 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 472 params = find_dai_stream_params(codec, dai->id, substream->stream); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 473 if (!params) { 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 474 dev_err(codec->dev, "Failed to fetch dai_stream pointer\n"); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 475 mutex_unlock(&codec->lock); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 476 return -EINVAL; 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 477 } 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 478 c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 479 bundle = to_gb_bundle(module->dev); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 480 ret = gb_pm_runtime_get_sync(bundle); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 481 if (ret) { c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 482 mutex_unlock(&codec->lock); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 483 return ret; c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 484 } c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 485 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 486 ret = gb_audio_apbridgea_set_config(data->connection, 0, b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 487 AUDIO_APBRIDGEA_PCM_FMT_16, b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 488 AUDIO_APBRIDGEA_PCM_RATE_48000, b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 489 6144000); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 490 if (ret) { ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 491 dev_err_ratelimited(dai->dev, "%d: Error during set_config\n", ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 492 ret); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 493 mutex_unlock(&codec->lock); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 494 return ret; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 495 } c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 496 c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 497 gb_pm_runtime_put_noidle(bundle); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 498 1023ab9c3800e5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2017-01-18 499 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) 1023ab9c3800e5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2017-01-18 500 sig_bits = dai->driver->playback.sig_bits; 1023ab9c3800e5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2017-01-18 501 else 1023ab9c3800e5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2017-01-18 502 sig_bits = dai->driver->capture.sig_bits; 1023ab9c3800e5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2017-01-18 503 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 504 params->state = GBAUDIO_CODEC_HWPARAMS; 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 505 params->format = format; 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 506 params->rate = rate; 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 507 params->channels = channels; 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 508 params->sig_bits = sig_bits; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 509 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 510 mutex_unlock(&codec->lock); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 511 return 0; 54e9070b24def1 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-04-23 512 } 54e9070b24def1 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-04-23 513 d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 514 static int gbcodec_prepare(struct snd_pcm_substream *substream, d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 515 struct snd_soc_dai *dai) d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 516 { 796fad441cb248 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-28 517 int ret; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 518 struct gbaudio_module_info *module; 54e9070b24def1 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-04-23 519 struct gbaudio_data_connection *data; c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 520 struct gb_bundle *bundle; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 521 struct gbaudio_codec_info *codec = dev_get_drvdata(dai->dev); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 522 struct gbaudio_stream_params *params; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 523 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 524 mutex_lock(&codec->lock); b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 525 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 526 if (list_empty(&codec->module_list)) { 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 527 dev_err(codec->dev, "No codec module available\n"); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 528 mutex_unlock(&codec->lock); 3994e0b139c709 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-28 529 return -ENODEV; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 530 } 3994e0b139c709 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-28 531 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 532 list_for_each_entry(module, &codec->module_list, list) { 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 533 /* find the dai */ 60e7327d54b270 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 534 data = find_data(module, dai->id); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 535 if (data) ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 536 break; ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 537 } 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 @538 if (!data) { ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 539 dev_err(dai->dev, "DATA connection missing\n"); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 540 mutex_unlock(&codec->lock); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 541 return -ENODEV; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 542 } b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 543 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 544 params = find_dai_stream_params(codec, dai->id, substream->stream); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 545 if (!params) { 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 546 dev_err(codec->dev, "Failed to fetch dai_stream pointer\n"); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 547 mutex_unlock(&codec->lock); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 548 return -EINVAL; 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 549 } 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 550 c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 551 bundle = to_gb_bundle(module->dev); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 552 ret = gb_pm_runtime_get_sync(bundle); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 553 if (ret) { c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 554 mutex_unlock(&codec->lock); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 555 return ret; c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 556 } c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 557 b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 558 switch (substream->stream) { 54e9070b24def1 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-04-23 559 case SNDRV_PCM_STREAM_PLAYBACK: ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 560 ret = gb_audio_apbridgea_set_tx_data_size(data->connection, 0, ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 561 192); 54e9070b24def1 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-04-23 562 break; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 563 case SNDRV_PCM_STREAM_CAPTURE: ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 564 ret = gb_audio_apbridgea_set_rx_data_size(data->connection, 0, ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 565 192); b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 566 break; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 567 } b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 568 if (ret) { ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 569 mutex_unlock(&codec->lock); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 570 dev_err_ratelimited(dai->dev, "set_data_size failed:%d\n", ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 571 ret); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 572 return ret; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 573 } b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 574 c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 575 gb_pm_runtime_put_noidle(bundle); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 576 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 577 params->state = GBAUDIO_CODEC_PREPARE; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 578 mutex_unlock(&codec->lock); ce9413062f8e23 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 579 return 0; b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 580 } b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 581 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 582 static int gbcodec_mute_stream(struct snd_soc_dai *dai, int mute, int stream) b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 583 { 796fad441cb248 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-28 584 int ret; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 585 struct gbaudio_data_connection *data; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 586 struct gbaudio_module_info *module; c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 587 struct gb_bundle *bundle; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 588 struct gbaudio_codec_info *codec = dev_get_drvdata(dai->dev); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 589 struct gbaudio_stream_params *params; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 590 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 591 dev_dbg(dai->dev, "Mute:%d, Direction:%s\n", mute, 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 592 stream ? "CAPTURE" : "PLAYBACK"); 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 593 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 594 mutex_lock(&codec->lock); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 595 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 596 params = find_dai_stream_params(codec, dai->id, stream); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 597 if (!params) { 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 598 dev_err(codec->dev, "Failed to fetch dai_stream pointer\n"); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 599 mutex_unlock(&codec->lock); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 600 return -EINVAL; 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 601 } 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 602 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 603 if (list_empty(&codec->module_list)) { 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 604 dev_err(codec->dev, "No codec module available\n"); 12ce523147e485 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-07-12 605 if (mute) { 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 606 params->state = GBAUDIO_CODEC_STOP; 12ce523147e485 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-07-12 607 ret = 0; 12ce523147e485 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-07-12 608 } else { 12ce523147e485 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-07-12 609 ret = -ENODEV; 12ce523147e485 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-07-12 610 } 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 611 mutex_unlock(&codec->lock); 12ce523147e485 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-07-12 612 return ret; 29386f058a758f drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-02-16 613 } 3994e0b139c709 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-28 614 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 615 list_for_each_entry(module, &codec->module_list, list) { 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 616 /* find the dai */ 60e7327d54b270 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 617 data = find_data(module, dai->id); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 618 if (data) 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 619 break; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 620 } 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 @621 if (!data) { 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 622 dev_err(dai->dev, "%s:%s DATA connection missing\n", 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 623 dai->name, module->name); 90579d4b577154 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 624 mutex_unlock(&codec->lock); 90579d4b577154 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 625 return -ENODEV; 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 626 } 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 627 c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 628 bundle = to_gb_bundle(module->dev); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 629 ret = gb_pm_runtime_get_sync(bundle); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 630 if (ret) { c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 631 mutex_unlock(&codec->lock); c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 632 return ret; c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 633 } c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 634 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 635 if (!mute && !stream) {/* start playback */ 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 636 ret = gb_audio_apbridgea_prepare_tx(data->connection, 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 637 0); 5bbe14b7acc2a0 drivers/staging/greybus/audio_codec.c Mark Greer 2016-02-29 638 if (!ret) 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 639 ret = gb_audio_apbridgea_start_tx(data->connection, 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 640 0, 0); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 641 params->state = GBAUDIO_CODEC_START; 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 642 } else if (!mute && stream) {/* start capture */ 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 643 ret = gb_audio_apbridgea_prepare_rx(data->connection, 5bbe14b7acc2a0 drivers/staging/greybus/audio_codec.c Mark Greer 2016-02-29 644 0); 5bbe14b7acc2a0 drivers/staging/greybus/audio_codec.c Mark Greer 2016-02-29 645 if (!ret) 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 646 ret = gb_audio_apbridgea_start_rx(data->connection, 5bbe14b7acc2a0 drivers/staging/greybus/audio_codec.c Mark Greer 2016-02-29 647 0); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 648 params->state = GBAUDIO_CODEC_START; 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 649 } else if (mute && !stream) {/* stop playback */ 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 650 ret = gb_audio_apbridgea_stop_tx(data->connection, 0); 5bbe14b7acc2a0 drivers/staging/greybus/audio_codec.c Mark Greer 2016-02-29 651 if (!ret) 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 652 ret = gb_audio_apbridgea_shutdown_tx(data->connection, 5bbe14b7acc2a0 drivers/staging/greybus/audio_codec.c Mark Greer 2016-02-29 653 0); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 654 params->state = GBAUDIO_CODEC_STOP; 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 655 } else if (mute && stream) {/* stop capture */ 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 656 ret = gb_audio_apbridgea_stop_rx(data->connection, 0); 5bbe14b7acc2a0 drivers/staging/greybus/audio_codec.c Mark Greer 2016-02-29 657 if (!ret) 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 658 ret = gb_audio_apbridgea_shutdown_rx(data->connection, 5bbe14b7acc2a0 drivers/staging/greybus/audio_codec.c Mark Greer 2016-02-29 659 0); 19866603be2ad5 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 660 params->state = GBAUDIO_CODEC_STOP; 9ae7a47f7f3226 drivers/staging/greybus/audio_codec.c Chase Metzger 2016-10-09 661 } else { b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 662 ret = -EINVAL; 9ae7a47f7f3226 drivers/staging/greybus/audio_codec.c Chase Metzger 2016-10-09 663 } 9ae7a47f7f3226 drivers/staging/greybus/audio_codec.c Chase Metzger 2016-10-09 664 b7f0088df7369b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-01-13 665 if (ret) 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 666 dev_err_ratelimited(dai->dev, 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 667 "%s:Error during %s %s stream:%d\n", 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 668 module->name, mute ? "Mute" : "Unmute", 27c243cf5fcf4b drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-06-09 669 stream ? "Capture" : "Playback", ret); b07868bda2fb61 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-02-16 670 c388ae76969926 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 671 gb_pm_runtime_put_noidle(bundle); 6dd67645f22cfe drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-03-29 672 mutex_unlock(&codec->lock); 90579d4b577154 drivers/staging/greybus/audio_codec.c Vaibhav Agarwal 2016-08-04 673 return ret; d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 674 } d3d2af51f9c2f2 drivers/staging/greybus/audio-codec.c Vaibhav Agarwal 2015-11-23 675 :::::: The code at line 466 was first introduced by commit :::::: ce9413062f8e2366916beebbfa8e73c6ff1a2c8c greybus: audio: Enable audio path based on control switch state only :::::: TO: Vaibhav Agarwal :::::: CC: Greg Kroah-Hartman --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org