Re: [PATCH 2/2] power: supply: max17040: Support compatible devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Iskren,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on power-supply/for-next]
[also build test WARNING on next-20200608]
[cannot apply to v5.7]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Iskren-Chernev/dt-bindints-power-supply-Document-max17040-extensions/20200609-022950
base:   https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git for-next
config: x86_64-allyesconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project e429cffd4f228f70c1d9df0e5d77c08590dd9766)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

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

All warnings (new ones prefixed by >>, old ones prefixed by <<):

>> drivers/power/supply/max17040_battery.c:456:13: warning: cast to smaller integer type 'enum chip_id' from 'const void *' [-Wvoid-pointer-to-enum-cast]
chip_id = (enum chip_id) of_device_get_match_data(&client->dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.

vim +456 drivers/power/supply/max17040_battery.c

   430	
   431	static int max17040_probe(struct i2c_client *client,
   432				const struct i2c_device_id *id)
   433	{
   434		struct i2c_adapter *adapter = client->adapter;
   435		struct power_supply_config psy_cfg = {};
   436		struct max17040_chip *chip;
   437		enum chip_id chip_id;
   438		bool enable_irq = false;
   439		int ret;
   440	
   441		if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE))
   442			return -EIO;
   443	
   444		chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
   445		if (!chip)
   446			return -ENOMEM;
   447	
   448		chip->client = client;
   449		chip->regmap = devm_regmap_init_i2c(client, &max17040_regmap);
   450		chip->pdata = client->dev.platform_data;
   451		chip_id = (enum chip_id) id->driver_data;
   452		if (client->dev.of_node) {
   453			ret = max17040_get_of_data(chip);
   454			if (ret)
   455				return ret;
 > 456			chip_id = (enum chip_id) of_device_get_match_data(&client->dev);
   457		}
   458		chip->data = max17040_family[chip_id];
   459	
   460		i2c_set_clientdata(client, chip);
   461		psy_cfg.drv_data = chip;
   462	
   463		chip->battery = devm_power_supply_register(&client->dev,
   464						&max17040_battery_desc, &psy_cfg);
   465		if (IS_ERR(chip->battery)) {
   466			dev_err(&client->dev, "failed: power supply register\n");
   467			return PTR_ERR(chip->battery);
   468		}
   469	
   470		max17040_reset(chip);
   471		max17040_get_version(chip);
   472		max17040_set_rcomp(chip, chip->rcomp);
   473	
   474		/* check interrupt */
   475		if (client->irq && chip->data.has_low_soc_alert) {
   476			ret = max17040_set_low_soc_alert(chip, chip->low_soc_alert);
   477			if (ret) {
   478				dev_err(&client->dev,
   479					"Failed to set low SOC alert: err %d\n", ret);
   480				return ret;
   481			}
   482			enable_irq = true;
   483		}
   484	
   485		if (client->irq && chip->data.has_soc_alert) {
   486			ret = max17040_set_soc_alert(chip, 1);
   487			if (ret) {
   488				dev_err(&client->dev,
   489					"Failed to set SOC alert: err %d\n", ret);
   490				return ret;
   491			}
   492			enable_irq = true;
   493		} else {
   494			/* soc alerts negate the need for polling */
   495			INIT_DEFERRABLE_WORK(&chip->work, max17040_work);
   496			ret = devm_add_action(&client->dev, max17040_stop_work, chip);
   497			if (ret)
   498				return ret;
   499			max17040_queue_work(chip);
   500		}
   501	
   502		if (enable_irq) {
   503			ret = max17040_setup_irq(chip);
   504			if (ret) {
   505				client->irq = 0;
   506				dev_warn(&client->dev,
   507					 "Failed to get IRQ err %d\n", ret);
   508			}
   509		}
   510	
   511		return 0;
   512	}
   513	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux