All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: drivers/iio/accel/kionix-kx022a.c:1053 kx022a_probe_internal() warn: passing zero to 'dev_err_probe'
Date: Thu, 11 May 2023 02:54:46 +0800	[thread overview]
Message-ID: <202305110245.MFxC9bUj-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>, Matti Vaittinen <mazziesaccount@gmail.com>
CC: Jonathan Cameron <Jonathan.Cameron@huawei.com>
CC: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   ad2fd53a7870a395b8564697bef6c329d017c6c9
commit: 7c1d1677b3227c6b18ac999f2b84778baa280b8f iio: accel: Support Kionix/ROHM KX022A accelerometer
date:   6 months ago
:::::: branch date: 4 hours ago
:::::: commit date: 6 months ago
config: openrisc-randconfig-m041-20230509 (https://download.01.org/0day-ci/archive/20230511/202305110245.MFxC9bUj-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Link: https://lore.kernel.org/r/202305110245.MFxC9bUj-lkp@intel.com/

smatch warnings:
drivers/iio/accel/kionix-kx022a.c:1053 kx022a_probe_internal() warn: passing zero to 'dev_err_probe'

vim +/dev_err_probe +1053 drivers/iio/accel/kionix-kx022a.c

7c1d1677b3227c Matti Vaittinen 2022-10-24   999  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1000  int kx022a_probe_internal(struct device *dev)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1001  {
7c1d1677b3227c Matti Vaittinen 2022-10-24  1002  	static const char * const regulator_names[] = {"io-vdd", "vdd"};
7c1d1677b3227c Matti Vaittinen 2022-10-24  1003  	struct iio_trigger *indio_trig;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1004  	struct fwnode_handle *fwnode;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1005  	struct kx022a_data *data;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1006  	struct regmap *regmap;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1007  	unsigned int chip_id;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1008  	struct iio_dev *idev;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1009  	int ret, irq;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1010  	char *name;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1011  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1012  	regmap = dev_get_regmap(dev, NULL);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1013  	if (!regmap) {
7c1d1677b3227c Matti Vaittinen 2022-10-24  1014  		dev_err(dev, "no regmap\n");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1015  		return -EINVAL;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1016  	}
7c1d1677b3227c Matti Vaittinen 2022-10-24  1017  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1018  	fwnode = dev_fwnode(dev);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1019  	if (!fwnode)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1020  		return -ENODEV;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1021  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1022  	idev = devm_iio_device_alloc(dev, sizeof(*data));
7c1d1677b3227c Matti Vaittinen 2022-10-24  1023  	if (!idev)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1024  		return -ENOMEM;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1025  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1026  	data = iio_priv(idev);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1027  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1028  	/*
7c1d1677b3227c Matti Vaittinen 2022-10-24  1029  	 * VDD is the analog and digital domain voltage supply and
7c1d1677b3227c Matti Vaittinen 2022-10-24  1030  	 * IO_VDD is the digital I/O voltage supply.
7c1d1677b3227c Matti Vaittinen 2022-10-24  1031  	 */
7c1d1677b3227c Matti Vaittinen 2022-10-24  1032  	ret = devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(regulator_names),
7c1d1677b3227c Matti Vaittinen 2022-10-24  1033  					     regulator_names);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1034  	if (ret && ret != -ENODEV)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1035  		return dev_err_probe(dev, ret, "failed to enable regulator\n");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1036  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1037  	ret = regmap_read(regmap, KX022A_REG_WHO, &chip_id);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1038  	if (ret)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1039  		return dev_err_probe(dev, ret, "Failed to access sensor\n");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1040  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1041  	if (chip_id != KX022A_ID) {
7c1d1677b3227c Matti Vaittinen 2022-10-24  1042  		dev_err(dev, "unsupported device 0x%x\n", chip_id);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1043  		return -EINVAL;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1044  	}
7c1d1677b3227c Matti Vaittinen 2022-10-24  1045  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1046  	irq = fwnode_irq_get_byname(fwnode, "INT1");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1047  	if (irq > 0) {
7c1d1677b3227c Matti Vaittinen 2022-10-24  1048  		data->inc_reg = KX022A_REG_INC1;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1049  		data->ien_reg = KX022A_REG_INC4;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1050  	} else {
7c1d1677b3227c Matti Vaittinen 2022-10-24  1051  		irq = fwnode_irq_get_byname(fwnode, "INT2");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1052  		if (irq <= 0)
7c1d1677b3227c Matti Vaittinen 2022-10-24 @1053  			return dev_err_probe(dev, irq, "No suitable IRQ\n");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1054  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1055  		data->inc_reg = KX022A_REG_INC5;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1056  		data->ien_reg = KX022A_REG_INC6;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1057  	}
7c1d1677b3227c Matti Vaittinen 2022-10-24  1058  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1059  	data->regmap = regmap;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1060  	data->dev = dev;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1061  	data->irq = irq;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1062  	data->odr_ns = KX022A_DEFAULT_PERIOD_NS;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1063  	mutex_init(&data->mutex);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1064  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1065  	idev->channels = kx022a_channels;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1066  	idev->num_channels = ARRAY_SIZE(kx022a_channels);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1067  	idev->name = "kx022-accel";
7c1d1677b3227c Matti Vaittinen 2022-10-24  1068  	idev->info = &kx022a_info;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1069  	idev->modes = INDIO_DIRECT_MODE | INDIO_BUFFER_SOFTWARE;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1070  	idev->available_scan_masks = kx022a_scan_masks;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1071  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1072  	/* Read the mounting matrix, if present */
7c1d1677b3227c Matti Vaittinen 2022-10-24  1073  	ret = iio_read_mount_matrix(dev, &data->orientation);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1074  	if (ret)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1075  		return ret;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1076  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1077  	/* The sensor must be turned off for configuration */
7c1d1677b3227c Matti Vaittinen 2022-10-24  1078  	ret = kx022a_turn_off_lock(data);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1079  	if (ret)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1080  		return ret;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1081  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1082  	ret = kx022a_chip_init(data);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1083  	if (ret) {
7c1d1677b3227c Matti Vaittinen 2022-10-24  1084  		mutex_unlock(&data->mutex);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1085  		return ret;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1086  	}
7c1d1677b3227c Matti Vaittinen 2022-10-24  1087  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1088  	ret = kx022a_turn_on_unlock(data);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1089  	if (ret)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1090  		return ret;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1091  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1092  	ret = devm_iio_triggered_buffer_setup_ext(dev, idev,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1093  						  &iio_pollfunc_store_time,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1094  						  kx022a_trigger_handler,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1095  						  IIO_BUFFER_DIRECTION_IN,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1096  						  &kx022a_buffer_ops,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1097  						  kx022a_fifo_attributes);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1098  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1099  	if (ret)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1100  		return dev_err_probe(data->dev, ret,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1101  				     "iio_triggered_buffer_setup_ext FAIL\n");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1102  	indio_trig = devm_iio_trigger_alloc(dev, "%sdata-rdy-dev%d", idev->name,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1103  					    iio_device_id(idev));
7c1d1677b3227c Matti Vaittinen 2022-10-24  1104  	if (!indio_trig)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1105  		return -ENOMEM;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1106  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1107  	data->trig = indio_trig;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1108  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1109  	indio_trig->ops = &kx022a_trigger_ops;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1110  	iio_trigger_set_drvdata(indio_trig, data);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1111  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1112  	/*
7c1d1677b3227c Matti Vaittinen 2022-10-24  1113  	 * No need to check for NULL. request_threaded_irq() defaults to
7c1d1677b3227c Matti Vaittinen 2022-10-24  1114  	 * dev_name() should the alloc fail.
7c1d1677b3227c Matti Vaittinen 2022-10-24  1115  	 */
7c1d1677b3227c Matti Vaittinen 2022-10-24  1116  	name = devm_kasprintf(data->dev, GFP_KERNEL, "%s-kx022a",
7c1d1677b3227c Matti Vaittinen 2022-10-24  1117  			      dev_name(data->dev));
7c1d1677b3227c Matti Vaittinen 2022-10-24  1118  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1119  	ret = devm_request_threaded_irq(data->dev, irq, kx022a_irq_handler,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1120  					&kx022a_irq_thread_handler,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1121  					IRQF_ONESHOT, name, idev);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1122  	if (ret)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1123  		return dev_err_probe(data->dev, ret, "Could not request IRQ\n");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1124  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1125  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1126  	ret = devm_iio_trigger_register(dev, indio_trig);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1127  	if (ret)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1128  		return dev_err_probe(data->dev, ret,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1129  				     "Trigger registration failed\n");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1130  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1131  	ret = devm_iio_device_register(data->dev, idev);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1132  	if (ret < 0)
7c1d1677b3227c Matti Vaittinen 2022-10-24  1133  		return dev_err_probe(dev, ret,
7c1d1677b3227c Matti Vaittinen 2022-10-24  1134  				     "Unable to register iio device\n");
7c1d1677b3227c Matti Vaittinen 2022-10-24  1135  
7c1d1677b3227c Matti Vaittinen 2022-10-24  1136  	return ret;
7c1d1677b3227c Matti Vaittinen 2022-10-24  1137  }
7c1d1677b3227c Matti Vaittinen 2022-10-24  1138  EXPORT_SYMBOL_NS_GPL(kx022a_probe_internal, IIO_KX022A);
7c1d1677b3227c Matti Vaittinen 2022-10-24  1139  

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

             reply	other threads:[~2023-05-10 18:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-10 18:54 kernel test robot [this message]
2023-05-11 10:48 drivers/iio/accel/kionix-kx022a.c:1053 kx022a_probe_internal() warn: passing zero to 'dev_err_probe' Dan Carpenter
2023-05-12  5:16 ` Matti Vaittinen
2023-05-12  5:41   ` Dan Carpenter
2023-05-12  5:49     ` Matti Vaittinen

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=202305110245.MFxC9bUj-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@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.