[linux-next:master 2008/11103] drivers/iio/magnetometer/yamaha-yas530.c:891 yas5xx_probe() warn: missing error code 'ret'

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

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   07f7e57c63aaa2afb4ea31edef05e08699a63a00
commit: de8860b1ed4701ea7e6f760f02d79ca6a3b656a1 [2008/11103] iio: magnetometer: Add driver for Yamaha YAS530
config: x86_64-randconfig-m001-20210215 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

smatch warnings:
drivers/iio/magnetometer/yamaha-yas530.c:891 yas5xx_probe() warn: missing error code 'ret'

vim +/ret +891 drivers/iio/magnetometer/yamaha-yas530.c

de8860b1ed4701 Linus Walleij 2020-12-24  816  static int yas5xx_probe(struct i2c_client *i2c,
de8860b1ed4701 Linus Walleij 2020-12-24  817  			const struct i2c_device_id *id)
de8860b1ed4701 Linus Walleij 2020-12-24  818  {
de8860b1ed4701 Linus Walleij 2020-12-24  819  	struct iio_dev *indio_dev;
de8860b1ed4701 Linus Walleij 2020-12-24  820  	struct device *dev = &i2c->dev;
de8860b1ed4701 Linus Walleij 2020-12-24  821  	struct yas5xx *yas5xx;
de8860b1ed4701 Linus Walleij 2020-12-24  822  	int ret;
de8860b1ed4701 Linus Walleij 2020-12-24  823  
de8860b1ed4701 Linus Walleij 2020-12-24  824  	indio_dev = devm_iio_device_alloc(dev, sizeof(*yas5xx));
de8860b1ed4701 Linus Walleij 2020-12-24  825  	if (!indio_dev)
de8860b1ed4701 Linus Walleij 2020-12-24  826  		return -ENOMEM;
de8860b1ed4701 Linus Walleij 2020-12-24  827  
de8860b1ed4701 Linus Walleij 2020-12-24  828  	yas5xx = iio_priv(indio_dev);
de8860b1ed4701 Linus Walleij 2020-12-24  829  	i2c_set_clientdata(i2c, indio_dev);
de8860b1ed4701 Linus Walleij 2020-12-24  830  	yas5xx->dev = dev;
de8860b1ed4701 Linus Walleij 2020-12-24  831  	mutex_init(&yas5xx->lock);
de8860b1ed4701 Linus Walleij 2020-12-24  832  
de8860b1ed4701 Linus Walleij 2020-12-24  833  	ret = iio_read_mount_matrix(dev, "mount-matrix", &yas5xx->orientation);
de8860b1ed4701 Linus Walleij 2020-12-24  834  	if (ret)
de8860b1ed4701 Linus Walleij 2020-12-24  835  		return ret;
de8860b1ed4701 Linus Walleij 2020-12-24  836  
de8860b1ed4701 Linus Walleij 2020-12-24  837  	yas5xx->regs[0].supply = "vdd";
de8860b1ed4701 Linus Walleij 2020-12-24  838  	yas5xx->regs[1].supply = "iovdd";
de8860b1ed4701 Linus Walleij 2020-12-24  839  	ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(yas5xx->regs),
de8860b1ed4701 Linus Walleij 2020-12-24  840  				      yas5xx->regs);
de8860b1ed4701 Linus Walleij 2020-12-24  841  	if (ret)
de8860b1ed4701 Linus Walleij 2020-12-24  842  		return dev_err_probe(dev, ret, "cannot get regulators\n");
de8860b1ed4701 Linus Walleij 2020-12-24  843  
de8860b1ed4701 Linus Walleij 2020-12-24  844  	ret = regulator_bulk_enable(ARRAY_SIZE(yas5xx->regs), yas5xx->regs);
de8860b1ed4701 Linus Walleij 2020-12-24  845  	if (ret) {
de8860b1ed4701 Linus Walleij 2020-12-24  846  		dev_err(dev, "cannot enable regulators\n");
de8860b1ed4701 Linus Walleij 2020-12-24  847  		return ret;
de8860b1ed4701 Linus Walleij 2020-12-24  848  	}
de8860b1ed4701 Linus Walleij 2020-12-24  849  
de8860b1ed4701 Linus Walleij 2020-12-24  850  	/* See comment in runtime resume callback */
de8860b1ed4701 Linus Walleij 2020-12-24  851  	usleep_range(31000, 40000);
de8860b1ed4701 Linus Walleij 2020-12-24  852  
de8860b1ed4701 Linus Walleij 2020-12-24  853  	/* This will take the device out of reset if need be */
de8860b1ed4701 Linus Walleij 2020-12-24  854  	yas5xx->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
de8860b1ed4701 Linus Walleij 2020-12-24  855  	if (IS_ERR(yas5xx->reset)) {
de8860b1ed4701 Linus Walleij 2020-12-24  856  		ret = dev_err_probe(dev, PTR_ERR(yas5xx->reset),
de8860b1ed4701 Linus Walleij 2020-12-24  857  				    "failed to get reset line\n");
de8860b1ed4701 Linus Walleij 2020-12-24  858  		goto reg_off;
de8860b1ed4701 Linus Walleij 2020-12-24  859  	}
de8860b1ed4701 Linus Walleij 2020-12-24  860  
de8860b1ed4701 Linus Walleij 2020-12-24  861  	yas5xx->map = devm_regmap_init_i2c(i2c, &yas5xx_regmap_config);
de8860b1ed4701 Linus Walleij 2020-12-24  862  	if (IS_ERR(yas5xx->map)) {
de8860b1ed4701 Linus Walleij 2020-12-24  863  		dev_err(dev, "failed to allocate register map\n");
de8860b1ed4701 Linus Walleij 2020-12-24  864  		ret = PTR_ERR(yas5xx->map);
de8860b1ed4701 Linus Walleij 2020-12-24  865  		goto assert_reset;
de8860b1ed4701 Linus Walleij 2020-12-24  866  	}
de8860b1ed4701 Linus Walleij 2020-12-24  867  
de8860b1ed4701 Linus Walleij 2020-12-24  868  	ret = regmap_read(yas5xx->map, YAS5XX_DEVICE_ID, &yas5xx->devid);
de8860b1ed4701 Linus Walleij 2020-12-24  869  	if (ret)
de8860b1ed4701 Linus Walleij 2020-12-24  870  		goto assert_reset;
de8860b1ed4701 Linus Walleij 2020-12-24  871  
de8860b1ed4701 Linus Walleij 2020-12-24  872  	switch (yas5xx->devid) {
de8860b1ed4701 Linus Walleij 2020-12-24  873  	case YAS530_DEVICE_ID:
de8860b1ed4701 Linus Walleij 2020-12-24  874  		ret = yas530_get_calibration_data(yas5xx);
de8860b1ed4701 Linus Walleij 2020-12-24  875  		if (ret)
de8860b1ed4701 Linus Walleij 2020-12-24  876  			goto assert_reset;
de8860b1ed4701 Linus Walleij 2020-12-24  877  		dev_info(dev, "detected YAS530 MS-3E %s",
de8860b1ed4701 Linus Walleij 2020-12-24  878  			 yas5xx->version ? "B" : "A");
de8860b1ed4701 Linus Walleij 2020-12-24  879  		strncpy(yas5xx->name, "yas530", sizeof(yas5xx->name));
de8860b1ed4701 Linus Walleij 2020-12-24  880  		break;
de8860b1ed4701 Linus Walleij 2020-12-24  881  	case YAS532_DEVICE_ID:
de8860b1ed4701 Linus Walleij 2020-12-24  882  		ret = yas532_get_calibration_data(yas5xx);
de8860b1ed4701 Linus Walleij 2020-12-24  883  		if (ret)
de8860b1ed4701 Linus Walleij 2020-12-24  884  			goto assert_reset;
de8860b1ed4701 Linus Walleij 2020-12-24  885  		dev_info(dev, "detected YAS532/YAS533 MS-3R/F %s",
de8860b1ed4701 Linus Walleij 2020-12-24  886  			 yas5xx->version ? "AC" : "AB");
de8860b1ed4701 Linus Walleij 2020-12-24  887  		strncpy(yas5xx->name, "yas532", sizeof(yas5xx->name));
de8860b1ed4701 Linus Walleij 2020-12-24  888  		break;
de8860b1ed4701 Linus Walleij 2020-12-24  889  	default:
de8860b1ed4701 Linus Walleij 2020-12-24  890  		dev_err(dev, "unhandled device ID %02x\n", yas5xx->devid);
de8860b1ed4701 Linus Walleij 2020-12-24 @891  		goto assert_reset;

"ret = -EINVAL;"

de8860b1ed4701 Linus Walleij 2020-12-24  892  	}
de8860b1ed4701 Linus Walleij 2020-12-24  893  
de8860b1ed4701 Linus Walleij 2020-12-24  894  	yas5xx_dump_calibration(yas5xx);
de8860b1ed4701 Linus Walleij 2020-12-24  895  	ret = yas5xx_power_on(yas5xx);
de8860b1ed4701 Linus Walleij 2020-12-24  896  	if (ret)
de8860b1ed4701 Linus Walleij 2020-12-24  897  		goto assert_reset;
de8860b1ed4701 Linus Walleij 2020-12-24  898  	ret = yas5xx_meaure_offsets(yas5xx);
de8860b1ed4701 Linus Walleij 2020-12-24  899  	if (ret)
de8860b1ed4701 Linus Walleij 2020-12-24  900  		goto assert_reset;
de8860b1ed4701 Linus Walleij 2020-12-24  901  
de8860b1ed4701 Linus Walleij 2020-12-24  902  	indio_dev->info = &yas5xx_info;
de8860b1ed4701 Linus Walleij 2020-12-24  903  	indio_dev->available_scan_masks = yas5xx_scan_masks;
de8860b1ed4701 Linus Walleij 2020-12-24  904  	indio_dev->modes = INDIO_DIRECT_MODE;
de8860b1ed4701 Linus Walleij 2020-12-24  905  	indio_dev->name = yas5xx->name;
de8860b1ed4701 Linus Walleij 2020-12-24  906  	indio_dev->channels = yas5xx_channels;
de8860b1ed4701 Linus Walleij 2020-12-24  907  	indio_dev->num_channels = ARRAY_SIZE(yas5xx_channels);
de8860b1ed4701 Linus Walleij 2020-12-24  908  
de8860b1ed4701 Linus Walleij 2020-12-24  909  	ret = iio_triggered_buffer_setup(indio_dev, NULL,
de8860b1ed4701 Linus Walleij 2020-12-24  910  					 yas5xx_handle_trigger,
de8860b1ed4701 Linus Walleij 2020-12-24  911  					 NULL);
de8860b1ed4701 Linus Walleij 2020-12-24  912  	if (ret) {
de8860b1ed4701 Linus Walleij 2020-12-24  913  		dev_err(dev, "triggered buffer setup failed\n");
de8860b1ed4701 Linus Walleij 2020-12-24  914  		goto assert_reset;
de8860b1ed4701 Linus Walleij 2020-12-24  915  	}
de8860b1ed4701 Linus Walleij 2020-12-24  916  
de8860b1ed4701 Linus Walleij 2020-12-24  917  	ret = iio_device_register(indio_dev);
de8860b1ed4701 Linus Walleij 2020-12-24  918  	if (ret) {
de8860b1ed4701 Linus Walleij 2020-12-24  919  		dev_err(dev, "device register failed\n");
de8860b1ed4701 Linus Walleij 2020-12-24  920  		goto cleanup_buffer;
de8860b1ed4701 Linus Walleij 2020-12-24  921  	}
de8860b1ed4701 Linus Walleij 2020-12-24  922  
de8860b1ed4701 Linus Walleij 2020-12-24  923  	/* Take runtime PM online */
de8860b1ed4701 Linus Walleij 2020-12-24  924  	pm_runtime_get_noresume(dev);
de8860b1ed4701 Linus Walleij 2020-12-24  925  	pm_runtime_set_active(dev);
de8860b1ed4701 Linus Walleij 2020-12-24  926  	pm_runtime_enable(dev);
de8860b1ed4701 Linus Walleij 2020-12-24  927  
de8860b1ed4701 Linus Walleij 2020-12-24  928  	pm_runtime_set_autosuspend_delay(dev, YAS5XX_AUTOSUSPEND_DELAY_MS);
de8860b1ed4701 Linus Walleij 2020-12-24  929  	pm_runtime_use_autosuspend(dev);
de8860b1ed4701 Linus Walleij 2020-12-24  930  	pm_runtime_put(dev);
de8860b1ed4701 Linus Walleij 2020-12-24  931  
de8860b1ed4701 Linus Walleij 2020-12-24  932  	return 0;
de8860b1ed4701 Linus Walleij 2020-12-24  933  
de8860b1ed4701 Linus Walleij 2020-12-24  934  cleanup_buffer:
de8860b1ed4701 Linus Walleij 2020-12-24  935  	iio_triggered_buffer_cleanup(indio_dev);
de8860b1ed4701 Linus Walleij 2020-12-24  936  assert_reset:
de8860b1ed4701 Linus Walleij 2020-12-24  937  	gpiod_set_value_cansleep(yas5xx->reset, 1);
de8860b1ed4701 Linus Walleij 2020-12-24  938  reg_off:
de8860b1ed4701 Linus Walleij 2020-12-24  939  	regulator_bulk_disable(ARRAY_SIZE(yas5xx->regs), yas5xx->regs);
de8860b1ed4701 Linus Walleij 2020-12-24  940  
de8860b1ed4701 Linus Walleij 2020-12-24  941  	return ret;
de8860b1ed4701 Linus Walleij 2020-12-24  942  }

---
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]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux