All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Esteban Blanc <eblanc@baylibre.com>,
	linus.walleij@linaro.org, lgirdwood@gmail.com,
	broonie@kernel.org, a.zummo@towertech.it,
	alexandre.belloni@bootlin.com
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
	linux-gpio@vger.kernel.org, linux-rtc@vger.kernel.org,
	jpanis@baylibre.com, jneanne@baylibre.com
Subject: Re: [PATCH INTERNAL v1 3/3] regulator: tps6594-regulator: Add driver for TI TPS6594 regulators
Date: Sat, 25 Feb 2023 06:06:06 +0800	[thread overview]
Message-ID: <202302250541.p9Kg2Tc6-lkp@intel.com> (raw)
In-Reply-To: <20230224133129.887203-4-eblanc@baylibre.com>

Hi Esteban,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linusw-pinctrl/devel]
[also build test WARNING on linusw-pinctrl/for-next broonie-regulator/for-next abelloni/rtc-next linus/master v6.2 next-20230224]
[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/Esteban-Blanc/rtc-tps6594-add-driver-for-TPS6594-PMIC-RTC/20230224-213323
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
patch link:    https://lore.kernel.org/r/20230224133129.887203-4-eblanc%40baylibre.com
patch subject: [PATCH INTERNAL v1 3/3] regulator: tps6594-regulator: Add driver for TI TPS6594 regulators
config: sparc-allyesconfig (https://download.01.org/0day-ci/archive/20230225/202302250541.p9Kg2Tc6-lkp@intel.com/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/740925ed262d27dda4f7b9af4c0173a845fa0578
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Esteban-Blanc/rtc-tps6594-add-driver-for-TPS6594-PMIC-RTC/20230224-213323
        git checkout 740925ed262d27dda4f7b9af4c0173a845fa0578
        # 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 drivers/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202302250541.p9Kg2Tc6-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/regulator/tps6594-regulator.c: In function 'tps6594_get_rdev_by_name':
>> drivers/regulator/tps6594-regulator.c:342:59: warning: parameter 'dev' set but not used [-Wunused-but-set-parameter]
     342 |                                     struct regulator_dev *dev)
         |                                     ~~~~~~~~~~~~~~~~~~~~~~^~~
   drivers/regulator/tps6594-regulator.c: In function 'tps6594_regulator_probe':
>> drivers/regulator/tps6594-regulator.c:493:26: warning: ordered comparison of pointer with integer zero [-Wextra]
     493 |                 if (rdev < 0) {
         |                          ^
>> drivers/regulator/tps6594-regulator.c:381:13: warning: variable 'multi_phase_case' set but not used [-Wunused-but-set-variable]
     381 |         int multi_phase_case = 0xFFFF;
         |             ^~~~~~~~~~~~~~~~
>> drivers/regulator/tps6594-regulator.c:377:31: warning: variable 'rdevmultitbl' set but not used [-Wunused-but-set-variable]
     377 |         struct regulator_dev *rdevmultitbl[MULTI_PHASE_NB];
         |                               ^~~~~~~~~~~~


vim +/dev +342 drivers/regulator/tps6594-regulator.c

   338	
   339	static int tps6594_get_rdev_by_name(const char *regulator_name,
   340					    struct regulator_dev *rdevbucktbl[BUCK_NB],
   341					    struct regulator_dev *rdevldotbl[LDO_NB],
 > 342					    struct regulator_dev *dev)
   343	{
   344		int i;
   345	
   346		for (i = 0; i <= BUCK_NB; i++) {
   347			if (strcmp(regulator_name, buck_regs[i].name) == 0) {
   348				dev = rdevbucktbl[i];
   349				return 0;
   350			}
   351		}
   352	
   353		for (i = 0; i < ARRAY_SIZE(ldo_regs); i++) {
   354			if (strcmp(regulator_name, ldo_regs[i].name) == 0) {
   355				dev = rdevldotbl[i];
   356				return 0;
   357			}
   358		}
   359		return -EINVAL;
   360	}
   361	
   362	static int tps6594_regulator_probe(struct platform_device *pdev)
   363	{
   364		struct tps6594 *tps = dev_get_drvdata(pdev->dev.parent);
   365		struct regulator_dev *rdev;
   366		struct regulator_config config = {};
   367		u8 buck_configured[BUCK_NB] = { 0 };
   368		u8 buck_multi[MULTI_PHASE_NB] = { 0 };
   369		int i;
   370		int error;
   371		int irq;
   372		int ext_reg_irq_nb = 2;
   373		struct tps6594_regulator_irq_data *irq_data;
   374		struct tps6594_ext_regulator_irq_data *irq_ext_reg_data;
   375		struct tps6594_regulator_irq_type *irq_type;
   376		struct regulator_dev *rdevbucktbl[BUCK_NB];
 > 377		struct regulator_dev *rdevmultitbl[MULTI_PHASE_NB];
   378		struct regulator_dev *rdevldotbl[LDO_NB];
   379	
   380		int multi_phase_id;
 > 381		int multi_phase_case = 0xFFFF;
   382	
   383		config.dev = tps->dev;
   384		config.driver_data = tps;
   385		config.regmap = tps->regmap;
   386	
   387		/*
   388		 * Switch case defines different possible multi phase config
   389		 * This is based on dts custom property: multi-phase-id
   390		 * Using compatible or device rev is a too complex alternative
   391		 * Default case is no Multiphase buck.
   392		 * In case of Multiphase configuration, value should be defined for
   393		 * buck_configured to avoid creating bucks for every buck in multiphase
   394		 */
   395	
   396		if (device_property_present(tps->dev, "ti,multi-phase-id")) {
   397			device_property_read_u32(tps->dev, "ti,multi-phase-id", &multi_phase_id);
   398			switch (multi_phase_id) {
   399			case 12:
   400				buck_multi[0] = 1;
   401				buck_configured[0] = 1;
   402				buck_configured[1] = 1;
   403				multi_phase_case = TPS6594_BUCK_12;
   404				break;
   405			case 34:
   406				buck_multi[1] = 1;
   407				buck_configured[2] = 1;
   408				buck_configured[3] = 1;
   409				multi_phase_case = TPS6594_BUCK_34;
   410				break;
   411			case 123:
   412				buck_multi[2] = 1;
   413				buck_configured[0] = 1;
   414				buck_configured[1] = 1;
   415				buck_configured[2] = 1;
   416				multi_phase_case = TPS6594_BUCK_123;
   417				break;
   418			case 1234:
   419				buck_multi[3] = 1;
   420				buck_configured[0] = 1;
   421				buck_configured[1] = 1;
   422				buck_configured[2] = 1;
   423				buck_configured[3] = 1;
   424				multi_phase_case = TPS6594_BUCK_1234;
   425				break;
   426			}
   427		}
   428	
   429		for (i = 0; i < MULTI_PHASE_NB; i++) {
   430			if (buck_multi[i] == 0)
   431				continue;
   432	
   433			rdev = devm_regulator_register(&pdev->dev, &multi_regs[i], &config);
   434			if (IS_ERR(rdev)) {
   435				dev_err(tps->dev, "failed to register %s regulator\n",
   436					pdev->name);
   437				return PTR_ERR(rdev);
   438			}
   439			rdevmultitbl[i] = rdev;
   440		}
   441	
   442		if (tps->chip_id == LP8764X)
   443			/* There is only 4 buck on LP8764X */
   444			buck_configured[4] = 1;
   445	
   446		for (i = 0; i < BUCK_NB; i++) {
   447			if (buck_configured[i] == 1)
   448				continue;
   449	
   450			rdev = devm_regulator_register(&pdev->dev, &buck_regs[i], &config);
   451			if (IS_ERR(rdev)) {
   452				dev_err(tps->dev, "failed to register %s regulator\n",
   453					pdev->name);
   454				return PTR_ERR(rdev);
   455			}
   456			rdevbucktbl[i] = rdev;
   457		}
   458	
   459		/* LP8764X dosen't have LDO */
   460		if (tps->chip_id != LP8764X) {
   461			for (i = 0; i < ARRAY_SIZE(ldo_regs); i++) {
   462				rdev = devm_regulator_register(&pdev->dev, &ldo_regs[i], &config);
   463				if (IS_ERR(rdev)) {
   464					dev_err(tps->dev,
   465						"failed to register %s regulator\n",
   466						pdev->name);
   467					return PTR_ERR(rdev);
   468				}
   469				rdevldotbl[i] = rdev;
   470			}
   471		}
   472	
   473		irq_data = devm_kmalloc(tps->dev,
   474					ARRAY_SIZE(tps6594_regulator_irq_types) *
   475					sizeof(struct tps6594_regulator_irq_data),
   476					GFP_KERNEL);
   477		if (!irq_data)
   478			return -ENOMEM;
   479	
   480		for (i = 0; i < ARRAY_SIZE(tps6594_regulator_irq_types); ++i) {
   481			irq_type = &tps6594_regulator_irq_types[i];
   482	
   483			irq = platform_get_irq_byname(pdev, irq_type->irq_name);
   484			if (irq < 0)
   485				return -EINVAL;
   486	
   487			irq_data[i].dev = tps->dev;
   488			irq_data[i].type = irq_type;
   489	
   490			tps6594_get_rdev_by_name(irq_type->regulator_name, rdevbucktbl,
   491						 rdevldotbl, rdev);
   492	
 > 493			if (rdev < 0) {
   494				dev_err(tps->dev, "Failed to get rdev for %s\n",
   495					irq_type->regulator_name);
   496				return -EINVAL;
   497			}
   498			irq_data[i].rdev = rdev;
   499	
   500			error = devm_request_threaded_irq(tps->dev, irq, NULL,
   501							  tps6594_regulator_irq_handler,
   502							  IRQF_ONESHOT,
   503							  irq_type->irq_name,
   504							  &irq_data[i]);
   505			if (error) {
   506				dev_err(tps->dev, "failed to request %s IRQ %d: %d\n",
   507					irq_type->irq_name, irq, error);
   508				return error;
   509			}
   510		}
   511	
   512		if (tps->chip_id == LP8764X)
   513			ext_reg_irq_nb = ARRAY_SIZE(tps6594_ext_regulator_irq_types);
   514	
   515		irq_ext_reg_data = devm_kmalloc(tps->dev,
   516						ext_reg_irq_nb *
   517						sizeof(struct tps6594_ext_regulator_irq_data),
   518						GFP_KERNEL);
   519		if (!irq_ext_reg_data)
   520			return -ENOMEM;
   521	
   522		for (i = 0; i < ext_reg_irq_nb; ++i) {
   523			irq_type = &tps6594_ext_regulator_irq_types[i];
   524	
   525			irq = platform_get_irq_byname(pdev, irq_type->irq_name);
   526			if (irq < 0)
   527				return -EINVAL;
   528	
   529			irq_ext_reg_data[i].dev = tps->dev;
   530			irq_ext_reg_data[i].type = irq_type;
   531	
   532			error = devm_request_threaded_irq(tps->dev, irq, NULL,
   533							  tps6594_regulator_irq_handler,
   534							  IRQF_ONESHOT,
   535							  irq_type->irq_name,
   536							  &irq_ext_reg_data[i]);
   537			if (error) {
   538				dev_err(tps->dev, "failed to request %s IRQ %d: %d\n",
   539					irq_type->irq_name, irq, error);
   540				return error;
   541			}
   542		}
   543	
   544		return 0;
   545	}
   546	

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

  parent reply	other threads:[~2023-02-24 22:06 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-24 13:31 [PATCH v1 0/3] TI TPS6594 PMIC support (RTC, pinctrl, regulators, device trees) Esteban Blanc
2023-02-24 13:31 ` [PATCH INTERNAL v1 1/3] rtc: tps6594: add driver for TPS6594 PMIC RTC Esteban Blanc
2023-03-07 11:08   ` Alexandre Belloni
2023-03-13  9:18     ` Esteban Blanc
2023-03-13 11:01       ` Alexandre Belloni
2023-03-13 12:10         ` Esteban Blanc
2023-03-13 13:38           ` Alexandre Belloni
2023-02-24 13:31 ` [PATCH INTERNAL v1 2/3] pinctrl: tps6594: add for TPS6594 PMIC Esteban Blanc
2023-02-24 18:49   ` kernel test robot
2023-02-25 20:36   ` kernel test robot
2023-03-06 14:10   ` Linus Walleij
2023-03-14 17:30     ` Esteban Blanc
2023-02-24 13:31 ` [PATCH INTERNAL v1 3/3] regulator: tps6594-regulator: Add driver for TI TPS6594 regulators Esteban Blanc
2023-02-24 13:42   ` Mark Brown
2023-03-03 15:02     ` jerome Neanne
2023-03-23  9:12     ` jerome Neanne
2023-03-23 11:38       ` Mark Brown
2023-03-24  8:00         ` jerome Neanne
2023-02-24 14:05   ` Matti Vaittinen
2023-03-03 14:49     ` jerome Neanne
2023-02-24 22:06   ` kernel test robot [this message]
2023-03-22  9:10   ` Julien Panis
2023-03-22 13:13     ` Mark Brown
2023-03-22 13:40       ` Julien Panis

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=202302250541.p9Kg2Tc6-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=a.zummo@towertech.it \
    --cc=alexandre.belloni@bootlin.com \
    --cc=broonie@kernel.org \
    --cc=eblanc@baylibre.com \
    --cc=jneanne@baylibre.com \
    --cc=jpanis@baylibre.com \
    --cc=lgirdwood@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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.