[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202210301337.tp54f49P-lkp@intel.com>
Date: Sun, 30 Oct 2022 13:34:37 +0800
From: kernel test robot <lkp@...el.com>
To: James Calligeros <jcalligeros99@...il.com>, vireshk@...nel.org,
nm@...com, sboyd@...nel.org, linux-pm@...r.kernel.org
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
linux-kernel@...r.kernel.org, asahi@...r.kernel.org,
James Calligeros <jcalligeros99@...il.com>
Subject: Re: [PATCH] OPP: decouple dt properties in opp_parse_supplies()
Hi James,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v6.1-rc2 next-20221028]
[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/James-Calligeros/OPP-decouple-dt-properties-in-opp_parse_supplies/20221030-114618
patch link: https://lore.kernel.org/r/20221030034414.24672-1-jcalligeros99%40gmail.com
patch subject: [PATCH] OPP: decouple dt properties in opp_parse_supplies()
config: riscv-randconfig-r042-20221030
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920)
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
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/c88dea73d372f38c7f3ab19f688cf210d49481ea
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review James-Calligeros/OPP-decouple-dt-properties-in-opp_parse_supplies/20221030-114618
git checkout c88dea73d372f38c7f3ab19f688cf210d49481ea
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/opp/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@...el.com>
All errors (new ones prefixed by >>):
>> drivers/opp/of.c:739:8: error: no member named 'regulator_count' in 'struct dev_pm_opp'
opp->regulator_count = 0;
~~~ ^
1 error generated.
vim +739 drivers/opp/of.c
580
581 static int opp_parse_supplies(struct dev_pm_opp *opp, struct device *dev,
582 struct opp_table *opp_table)
583 {
584 u32 *microvolt = NULL, *microamp = NULL, *microwatt = NULL;
585 int supplies = opp_table->regulator_count;
586 int vcount, icount, pcount, ret, i, j;
587 struct property *prop_mv = NULL, *prop_ma = NULL, *prop_mw = NULL;
588 char name[NAME_MAX];
589
590 /* Search for "opp-microvolt-<name>" */
591 if (opp_table->prop_name) {
592 snprintf(name, sizeof(name), "opp-microvolt-%s",
593 opp_table->prop_name);
594 prop_mv = of_find_property(opp->np, name, NULL);
595 }
596
597 if (!prop_mv) {
598 /* Search for "opp-microvolt" */
599 sprintf(name, "opp-microvolt");
600 prop_mv = of_find_property(opp->np, name, NULL);
601
602 }
603
604 if (prop_mv) {
605 vcount = of_property_count_u32_elems(opp->np, name);
606 if (unlikely(supplies == -1))
607 supplies = opp_table->regulator_count = vcount;
608 } else {
609 prop_mv = NULL;
610 vcount = 0;
611 }
612
613 if (vcount < 0) {
614 dev_err(dev, "%s: Invalid %s property (%d)\n",
615 __func__, name, vcount);
616 return vcount;
617 }
618
619 if (vcount) {
620 /* There can be one or three elements per supply */
621 if (vcount != supplies && vcount != supplies * 3) {
622 dev_err(dev, "%s: Invalid number of elements in %s property (%d) with supplies (%d)\n",
623 __func__, name, vcount, supplies);
624 return -EINVAL;
625 }
626
627 microvolt = kmalloc_array(vcount, sizeof(*microvolt), GFP_KERNEL);
628 if (!microvolt)
629 return -ENOMEM;
630
631 ret = of_property_read_u32_array(opp->np, name, microvolt, vcount);
632 if (ret) {
633 dev_err(dev, "%s: error parsing %s: %d\n", __func__, name, ret);
634 ret = -EINVAL;
635 goto free_microvolt;
636 }
637 }
638
639 /* Search for "opp-microamp-<name>" */
640 if (opp_table->prop_name) {
641 snprintf(name, sizeof(name), "opp-microamp-%s",
642 opp_table->prop_name);
643 prop_ma = of_find_property(opp->np, name, NULL);
644 }
645
646 if (!prop_ma) {
647 /* Search for "opp-microamp" */
648 sprintf(name, "opp-microamp");
649 prop_ma = of_find_property(opp->np, name, NULL);
650
651 }
652
653 if (prop_ma) {
654 icount = of_property_count_u32_elems(opp->np, name);
655 if (unlikely(supplies == -1))
656 supplies = opp_table->regulator_count = icount;
657 } else {
658 prop_ma = NULL;
659 icount = 0;
660 }
661
662 if (icount < 0) {
663 dev_err(dev, "%s: Invalid %s property (%d)\n",
664 __func__, name, icount);
665 return icount;
666 }
667
668 if (icount) {
669 /* There can be one or three elements per supply */
670 if (icount != supplies && icount != supplies * 3) {
671 dev_err(dev, "%s: Invalid number of elements in %s property (%d) with supplies (%d)\n",
672 __func__, name, icount, supplies);
673 return -EINVAL;
674 }
675
676 microamp = kmalloc_array(icount, sizeof(*microamp), GFP_KERNEL);
677 if (!microamp)
678 return -ENOMEM;
679
680 ret = of_property_read_u32_array(opp->np, name, microamp, icount);
681 if (ret) {
682 dev_err(dev, "%s: error parsing %s: %d\n", __func__, name, ret);
683 ret = -EINVAL;
684 goto free_microamp;
685 }
686 }
687
688 /* Search for "opp-microwatt-<name>" */
689 if (opp_table->prop_name) {
690 snprintf(name, sizeof(name), "opp-microwatt-%s",
691 opp_table->prop_name);
692 prop_mw = of_find_property(opp->np, name, NULL);
693 }
694
695 if (!prop_mw) {
696 /* Search for "opp-microwatt" */
697 sprintf(name, "opp-microwatt");
698 prop_mw = of_find_property(opp->np, name, NULL);
699
700 }
701
702 if (prop_mw) {
703 pcount = of_property_count_u32_elems(opp->np, name);
704 if (unlikely(supplies == -1))
705 supplies = opp_table->regulator_count = pcount;
706 } else {
707 prop_mw = NULL;
708 pcount = 0;
709 }
710
711 if (pcount < 0) {
712 dev_err(dev, "%s: Invalid %s property (%d)\n",
713 __func__, name, pcount);
714 return pcount;
715 }
716
717 if (pcount) {
718 /* There can be one or three elements per supply */
719 if (pcount != supplies && pcount != supplies * 3) {
720 dev_err(dev, "%s: Invalid number of elements in %s property (%d) with supplies (%d)\n",
721 __func__, name, pcount, supplies);
722 return -EINVAL;
723 }
724
725 microwatt = kmalloc_array(pcount, sizeof(*microwatt), GFP_KERNEL);
726 if (!microwatt)
727 return -ENOMEM;
728
729 ret = of_property_read_u32_array(opp->np, name, microwatt, pcount);
730 if (ret) {
731 dev_err(dev, "%s: error parsing %s: %d\n", __func__, name, ret);
732 ret = -EINVAL;
733 goto free_microwatt;
734 }
735 }
736
737 /* No supplies associated with the OPP */
738 if (unlikely(supplies == -1)) {
> 739 opp->regulator_count = 0;
740 return 0;
741 }
742
743 for (i = 0, j = 0; i < supplies; i++) {
744 if (microvolt) {
745 opp->supplies[i].u_volt = microvolt[j++];
746
747 if (vcount == supplies) {
748 opp->supplies[i].u_volt_min = opp->supplies[i].u_volt;
749 opp->supplies[i].u_volt_max = opp->supplies[i].u_volt;
750 } else {
751 opp->supplies[i].u_volt_min = microvolt[j++];
752 opp->supplies[i].u_volt_max = microvolt[j++];
753 }
754 }
755
756 if (microamp)
757 opp->supplies[i].u_amp = microamp[i];
758
759 if (microwatt)
760 opp->supplies[i].u_watt = microwatt[i];
761 }
762
763 free_microwatt:
764 kfree(microwatt);
765 free_microamp:
766 kfree(microamp);
767 free_microvolt:
768 kfree(microvolt);
769
770 return ret;
771 }
772
--
0-DAY CI Kernel Test Service
https://01.org/lkp
View attachment "config" of type "text/plain" (186643 bytes)
Powered by blists - more mailing lists