Re: [PATCH v2 2/2] drivers:iio:dac: Add AD3552R driver support

From: kernel test robot
Date: Fri Oct 08 2021 - 23:07:59 EST


Hi Mihail,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on jic23-iio/togreg]
[also build test ERROR on linux/master linus/master v5.15-rc4 next-20211008]
[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]

url: https://github.com/0day-ci/linux/commits/Mihail-Chindris/Add-ad3552r-and-ad3542r-driver-support/20211008-204146
base: https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/2d864149611f04bb764b81ebbad7dea5472921c5
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Mihail-Chindris/Add-ad3552r-and-ad3542r-driver-support/20211008-204146
git checkout 2d864149611f04bb764b81ebbad7dea5472921c5
# save the attached .config to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

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

All errors (new ones prefixed by >>):

>> drivers/iio/dac/ad3552r.c:300:23: error: array type has incomplete element type 'struct iio_chan_spec'
300 | struct iio_chan_spec channels[AD3552R_NUM_CH + 1];
| ^~~~~~~~
drivers/iio/dac/ad3552r.c: In function 'ad3552r_read_raw':
>> drivers/iio/dac/ad3552r.c:767:29: error: implicit declaration of function 'iio_priv'; did you mean 'bio_prio'? [-Werror=implicit-function-declaration]
767 | struct ad3552r_desc *dac = iio_priv(indio_dev);
| ^~~~~~~~
| bio_prio
>> drivers/iio/dac/ad3552r.c:767:29: error: initialization of 'struct ad3552r_desc *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
>> drivers/iio/dac/ad3552r.c:770:14: error: dereferencing pointer to incomplete type 'const struct iio_chan_spec'
770 | u8 ch = chan->channel;
| ^~
>> drivers/iio/dac/ad3552r.c:773:7: error: 'IIO_CHAN_INFO_RAW' undeclared (first use in this function)
773 | case IIO_CHAN_INFO_RAW:
| ^~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:773:7: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/iio/dac/ad3552r.c:790:7: error: 'IIO_CHAN_INFO_ENABLE' undeclared (first use in this function)
790 | case IIO_CHAN_INFO_ENABLE:
| ^~~~~~~~~~~~~~~~~~~~
>> drivers/iio/dac/ad3552r.c:801:7: error: 'IIO_CHAN_INFO_SCALE' undeclared (first use in this function)
801 | case IIO_CHAN_INFO_SCALE:
| ^~~~~~~~~~~~~~~~~~~
>> drivers/iio/dac/ad3552r.c:804:10: error: 'IIO_VAL_INT_PLUS_MICRO' undeclared (first use in this function)
804 | return IIO_VAL_INT_PLUS_MICRO;
| ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/iio/dac/ad3552r.c:805:7: error: 'IIO_CHAN_INFO_OFFSET' undeclared (first use in this function)
805 | case IIO_CHAN_INFO_OFFSET:
| ^~~~~~~~~~~~~~~~~~~~
>> drivers/iio/dac/ad3552r.c:813:9: error: 'IIO_VAL_INT' undeclared (first use in this function)
813 | return IIO_VAL_INT;
| ^~~~~~~~~~~
drivers/iio/dac/ad3552r.c: In function 'ad3552r_write_raw':
drivers/iio/dac/ad3552r.c:822:29: error: initialization of 'struct ad3552r_desc *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
822 | struct ad3552r_desc *dac = iio_priv(indio_dev);
| ^~~~~~~~
drivers/iio/dac/ad3552r.c:827:7: error: 'IIO_CHAN_INFO_RAW' undeclared (first use in this function)
827 | case IIO_CHAN_INFO_RAW:
| ^~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:840:7: error: 'IIO_CHAN_INFO_ENABLE' undeclared (first use in this function)
840 | case IIO_CHAN_INFO_ENABLE:
| ^~~~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c: At top level:
>> drivers/iio/dac/ad3552r.c:872:21: error: variable 'ad3552r_iio_info' has initializer but incomplete type
872 | static const struct iio_info ad3552r_iio_info = {
| ^~~~~~~~
>> drivers/iio/dac/ad3552r.c:873:3: error: 'const struct iio_info' has no member named 'read_raw'
873 | .read_raw = ad3552r_read_raw,
| ^~~~~~~~
drivers/iio/dac/ad3552r.c:873:14: error: excess elements in struct initializer [-Werror]
873 | .read_raw = ad3552r_read_raw,
| ^~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:873:14: note: (near initialization for 'ad3552r_iio_info')
>> drivers/iio/dac/ad3552r.c:874:3: error: 'const struct iio_info' has no member named 'write_raw'
874 | .write_raw = ad3552r_write_raw,
| ^~~~~~~~~
drivers/iio/dac/ad3552r.c:874:15: error: excess elements in struct initializer [-Werror]
874 | .write_raw = ad3552r_write_raw,
| ^~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:874:15: note: (near initialization for 'ad3552r_iio_info')
>> drivers/iio/dac/ad3552r.c:875:3: error: 'const struct iio_info' has no member named 'update_scan_mode'
875 | .update_scan_mode = ad3552r_update_scan_mode
| ^~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:875:22: error: excess elements in struct initializer [-Werror]
875 | .update_scan_mode = ad3552r_update_scan_mode
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:875:22: note: (near initialization for 'ad3552r_iio_info')
drivers/iio/dac/ad3552r.c: In function 'ad3552r_trigger_handler':
>> drivers/iio/dac/ad3552r.c:882:36: error: dereferencing pointer to incomplete type 'struct iio_dev'
882 | struct iio_buffer *buf = indio_dev->buffer;
| ^~
drivers/iio/dac/ad3552r.c:883:29: error: initialization of 'struct ad3552r_desc *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
883 | struct ad3552r_desc *dac = iio_priv(indio_dev);
| ^~~~~~~~
>> drivers/iio/dac/ad3552r.c:888:8: error: implicit declaration of function 'iio_pop_from_buffer'; did you mean 'sg_pcopy_from_buffer'? [-Werror=implicit-function-declaration]
888 | err = iio_pop_from_buffer(buf, buff);
| ^~~~~~~~~~~~~~~~~~~
| sg_pcopy_from_buffer
drivers/iio/dac/ad3552r.c: In function 'ad3552r_configure_custom_gain':
>> drivers/iio/dac/ad3552r.c:1106:22: error: implicit declaration of function 'fwnode_get_named_child_node'; did you mean 'fwnode_get_named_gpiod'? [-Werror=implicit-function-declaration]
1106 | custom_gain_child = fwnode_get_named_child_node(child,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
| fwnode_get_named_gpiod
>> drivers/iio/dac/ad3552r.c:1106:20: error: assignment to 'struct fwnode_handle *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
1106 | custom_gain_child = fwnode_get_named_child_node(child,
| ^
>> drivers/iio/dac/ad3552r.c:1114:8: error: implicit declaration of function 'fwnode_property_read_u32' [-Werror=implicit-function-declaration]
1114 | err = fwnode_property_read_u32(custom_gain_child, "adi,gain-offset",
| ^~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/iio/dac/ad3552r.c:1149:2: error: implicit declaration of function 'fwnode_handle_put' [-Werror=implicit-function-declaration]
1149 | fwnode_handle_put(custom_gain_child);
| ^~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c: In function 'ad3552r_configure_device':
drivers/iio/dac/ad3552r.c:1181:7: error: implicit declaration of function 'device_property_read_bool' [-Werror=implicit-function-declaration]
1181 | if (device_property_read_bool(dev, "adi,vref-out-en"))
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1190:8: error: implicit declaration of function 'device_property_read_u32' [-Werror=implicit-function-declaration]
1190 | err = device_property_read_u32(dev, "adi,sdo-drive-strength", &vals[0]);
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1203:16: error: implicit declaration of function 'device_get_child_node_count' [-Werror=implicit-function-declaration]
1203 | dac->num_ch = device_get_child_node_count(dev);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1209:2: error: implicit declaration of function 'device_for_each_child_node'; did you mean 'device_for_each_child'? [-Werror=implicit-function-declaration]
1209 | device_for_each_child_node(dev, child) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| device_for_each_child
drivers/iio/dac/ad3552r.c:1209:40: error: expected ';' before '{' token
1209 | device_for_each_child_node(dev, child) {
| ^~
| ;
drivers/iio/dac/ad3552r.c:1287:1: error: label 'put_child' defined but not used [-Werror=unused-label]
1287 | put_child:
| ^~~~~~~~~
drivers/iio/dac/ad3552r.c:1161:7: error: unused variable 'is_custom' [-Werror=unused-variable]
1161 | bool is_custom;
| ^~~~~~~~~
drivers/iio/dac/ad3552r.c:1160:15: error: unused variable 'ch' [-Werror=unused-variable]
1160 | u32 vals[2], ch;
| ^~
drivers/iio/dac/ad3552r.c:1159:11: error: unused variable 'cnt' [-Werror=unused-variable]
1159 | int err, cnt = 0, voltage, delta = 100000;
| ^~~
drivers/iio/dac/ad3552r.c: In function 'ad3552r_probe':
drivers/iio/dac/ad3552r.c:1337:14: error: implicit declaration of function 'devm_iio_device_alloc' [-Werror=implicit-function-declaration]
1337 | indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*dac));
| ^~~~~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1337:12: error: assignment to 'struct iio_dev *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
1337 | indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*dac));
| ^
drivers/iio/dac/ad3552r.c:1341:6: error: assignment to 'struct ad3552r_desc *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
1341 | dac = iio_priv(indio_dev);
| ^
drivers/iio/dac/ad3552r.c:1357:21: error: 'INDIO_DIRECT_MODE' undeclared (first use in this function)
1357 | indio_dev->modes = INDIO_DIRECT_MODE;
| ^~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1361:9: error: 'IIO_BUFFER_DIRECTION_OUT' undeclared (first use in this function)
1361 | IIO_BUFFER_DIRECTION_OUT,
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1359:8: error: too many arguments to function 'devm_iio_triggered_buffer_setup_ext'
1359 | err = devm_iio_triggered_buffer_setup_ext(&indio_dev->dev, indio_dev, NULL,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/iio/dac/ad3552r.c:11:
include/linux/iio/triggered_buffer.h:21:5: note: declared here
21 | int devm_iio_triggered_buffer_setup_ext(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1367:9: error: implicit declaration of function 'devm_iio_device_register'; did you mean 'devm_iio_trigger_register'? [-Werror=implicit-function-declaration]
1367 | return devm_iio_device_register(&spi->dev, indio_dev);
| ^~~~~~~~~~~~~~~~~~~~~~~~
| devm_iio_trigger_register
drivers/iio/dac/ad3552r.c: At top level:
drivers/iio/dac/ad3552r.c:872:30: error: storage size of 'ad3552r_iio_info' isn't known
872 | static const struct iio_info ad3552r_iio_info = {
| ^~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1092:12: error: 'ad3552r_configure_custom_gain' defined but not used [-Werror=unused-function]
1092 | static int ad3552r_configure_custom_gain(struct ad3552r_desc *dac,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1071:12: error: 'ad3552r_find_range' defined but not used [-Werror=unused-function]
1071 | static int ad3552r_find_range(u16 id, u32 *vals)
| ^~~~~~~~~~~~~~~~~~
drivers/iio/dac/ad3552r.c:1024:13: error: 'ad3552r_calc_gain_and_offset' defined but not used [-Werror=unused-function]
1024 | static void ad3552r_calc_gain_and_offset(struct ad3552r_desc *dac, s32 ch)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors


vim +300 drivers/iio/dac/ad3552r.c

292
293 struct ad3552r_desc {
294 /* Used to look the spi bus for atomic operations where needed */
295 struct mutex lock;
296 struct gpio_desc *gpio_reset;
297 struct gpio_desc *gpio_ldac;
298 struct spi_device *spi;
299 struct ad3552r_ch_data ch_data[AD3552R_NUM_CH];
> 300 struct iio_chan_spec channels[AD3552R_NUM_CH + 1];
301 unsigned long enabled_ch;
302 unsigned int num_ch;
303 enum ad3542r_id chip_id;
304 /*
305 * The maximum spi transfer size consist 1 bytes (reg address)
306 * + 2 registers of 3 bytes + 1 reg of 1 byte (SW LDAC)
307 */
308 u8 buf_data[8] ____cacheline_aligned;
309 };
310

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

Attachment: .config.gz
Description: application/gzip