Re: [PATCH v2] ASoC: tas2781: Add tas2781 driver.

From: kernel test robot
Date: Tue Jan 31 2023 - 10:13:20 EST


Hi Shenghao,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on broonie-sound/for-next]
[also build test WARNING on linus/master v6.2-rc6 next-20230131]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Shenghao-Ding/ASoC-tas2781-Add-tas2781-driver/20230131-212221
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
patch link: https://lore.kernel.org/r/20230131131701.7097-1-13916275206%40139.com
patch subject: [PATCH v2] ASoC: tas2781: Add tas2781 driver.
config: sparc-allyesconfig (https://download.01.org/0day-ci/archive/20230131/202301312243.8wxlGhpo-lkp@xxxxxxxxx/config)
compiler: sparc64-linux-gcc (GCC) 12.1.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://github.com/intel-lab-lkp/linux/commit/d0782b52a1274657458fa49356eacb7c56eddf6b
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Shenghao-Ding/ASoC-tas2781-Add-tas2781-driver/20230131-212221
git checkout d0782b52a1274657458fa49356eacb7c56eddf6b
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sparc olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sparc SHELL=/bin/bash sound/soc/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

>> sound/soc/codecs/tas2781-dsp.c:591:5: warning: no previous prototype for 'fw_parse_variable_header_git' [-Wmissing-prototypes]
591 | int fw_parse_variable_header_git(struct tasdevice_priv *tas_dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> sound/soc/codecs/tas2781-dsp.c:650:5: warning: no previous prototype for 'fw_parse_variable_header_cal' [-Wmissing-prototypes]
650 | int fw_parse_variable_header_cal(struct tasdevice_priv *tas_dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/fw_parse_variable_header_git +591 sound/soc/codecs/tas2781-dsp.c

590
> 591 int fw_parse_variable_header_git(struct tasdevice_priv *tas_dev,
592 const struct firmware *fmw, int offset)
593 {
594 const unsigned char *buf = fmw->data;
595 struct tasdevice_fw *tas_fmw = tas_dev->fmw;
596 struct tasdevice_dspfw_hdr *fw_hdr = &(tas_fmw->fw_hdr);
597 int i = strlen((char *)&buf[offset]);
598
599 i++;
600
601 if (offset + i > fmw->size) {
602 dev_err(tas_dev->dev, "%s: File Size error\n", __func__);
603 offset = -1;
604 goto out;
605 }
606
607 offset += i;
608
609 if (offset + 4 > fmw->size) {
610 dev_err(tas_dev->dev, "%s: File Size error\n", __func__);
611 offset = -1;
612 goto out;
613 }
614 fw_hdr->device_family = SMS_HTONL(buf[offset], buf[offset + 1],
615 buf[offset + 2], buf[offset + 3]);
616 if (fw_hdr->device_family != 0) {
617 dev_err(tas_dev->dev, "ERROR:%s: not TAS device\n", __func__);
618 offset = -1;
619 goto out;
620 }
621 offset += 4;
622 if (offset + 4 > fmw->size) {
623 dev_err(tas_dev->dev, "%s: File Size error\n", __func__);
624 offset = -1;
625 goto out;
626 }
627 fw_hdr->device = SMS_HTONL(buf[offset], buf[offset + 1],
628 buf[offset + 2], buf[offset + 3]);
629 if (fw_hdr->device >= TASDEVICE_DSP_TAS_MAX_DEVICE ||
630 fw_hdr->device == 6) {
631 dev_err(tas_dev->dev, "ERROR:%s: not support device %d\n",
632 __func__, fw_hdr->device);
633 offset = -1;
634 goto out;
635 }
636 offset += 4;
637 fw_hdr->ndev = deviceNumber[fw_hdr->device];
638 if (fw_hdr->ndev != tas_dev->ndev) {
639 dev_err(tas_dev->dev,
640 "%s: ndev(%u) in dspbin dismatch ndev(%u) in DTS\n",
641 __func__, fw_hdr->ndev,
642 tas_dev->ndev);
643 offset = -1;
644 }
645
646 out:
647 return offset;
648 }
649
> 650 int fw_parse_variable_header_cal(struct tasdevice_priv *tas_dev,
651 struct tasdevice_fw *tas_fmw, const struct firmware *fmw, int offset)
652 {
653 const unsigned char *buf = fmw->data;
654 struct tasdevice_dspfw_hdr *fw_hdr = &(tas_fmw->fw_hdr);
655 int i = strlen((char *)&buf[offset]);
656
657 i++;
658
659 if (offset + i > fmw->size) {
660 dev_err(tas_dev->dev, "%s: File Size error\n", __func__);
661 offset = -1;
662 goto out;
663 }
664
665 offset += i;
666
667 if (offset + 4 > fmw->size) {
668 dev_err(tas_dev->dev, "%s: mnDeviceFamily error\n", __func__);
669 offset = -1;
670 goto out;
671 }
672 fw_hdr->device_family = SMS_HTONL(buf[offset], buf[offset + 1],
673 buf[offset + 2], buf[offset + 3]);
674 if (fw_hdr->device_family != 0) {
675 dev_err(tas_dev->dev, "ERROR:%s: not TAS device\n", __func__);
676 offset = -1;
677 goto out;
678 }
679 offset += 4;
680 if (offset + 4 > fmw->size) {
681 dev_err(tas_dev->dev, "%s: mnDevice error\n", __func__);
682 offset = -1;
683 goto out;
684 }
685 fw_hdr->device = SMS_HTONL(buf[offset], buf[offset + 1],
686 buf[offset + 2], buf[offset + 3]);
687 if (fw_hdr->device >= TASDEVICE_DSP_TAS_MAX_DEVICE ||
688 fw_hdr->device == 6) {
689 dev_err(tas_dev->dev, "ERROR:%s: not support device %d\n",
690 __func__, fw_hdr->device);
691 offset = -1;
692 goto out;
693 }
694 offset += 4;
695 fw_hdr->ndev = deviceNumber[fw_hdr->device];
696 if (fw_hdr->ndev != 1) {
697 dev_err(tas_dev->dev,
698 "%s: calbin must be 1, but currently ndev(%u)\n",
699 __func__, fw_hdr->ndev);
700 offset = -1;
701 }
702
703 out:
704 return offset;
705 }
706

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests