Hi Arnaud, [auto build test WARNING on asoc/for-next] [also build test WARNING on v4.11-rc3] [cannot apply to iio/togreg next-20170310] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Arnaud-Pouliquen/Add-STM32-DFSDM-support/20170320-133247 base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next config: x86_64-allmodconfig (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All warnings (new ones prefixed by >>): drivers/iio/hw_consumer.c:23:20: error: field 'buffer' has incomplete type struct iio_buffer buffer; ^~~~~~ In file included from include/asm-generic/bug.h:13:0, from arch/x86/include/asm/bug.h:35, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from drivers/iio/hw_consumer.c:3: drivers/iio/hw_consumer.c: In function 'iio_buffer_to_hw_consumer_buffer': include/linux/kernel.h:852:48: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ >> drivers/iio/hw_consumer.c:29:9: note: in expansion of macro 'container_of' return container_of(buffer, struct hw_consumer_buffer, buffer); ^~~~~~~~~~~~ drivers/iio/hw_consumer.c: At top level: drivers/iio/hw_consumer.c:40:21: error: variable 'iio_hw_buf_access' has initializer but incomplete type static const struct iio_buffer_access_funcs iio_hw_buf_access = { ^~~~~~~~~~~~~~~~~~~~~~~ drivers/iio/hw_consumer.c:41:2: error: unknown field 'release' specified in initializer .release = &iio_hw_buf_release, ^ >> drivers/iio/hw_consumer.c:41:13: warning: excess elements in struct initializer .release = &iio_hw_buf_release, ^ drivers/iio/hw_consumer.c:41:13: note: (near initialization for 'iio_hw_buf_access') drivers/iio/hw_consumer.c:42:2: error: unknown field 'modes' specified in initializer .modes = INDIO_BUFFER_HARDWARE, ^ In file included from drivers/iio/hw_consumer.c:7:0: >> include/linux/iio/iio.h:353:32: warning: excess elements in struct initializer #define INDIO_BUFFER_HARDWARE 0x08 ^ >> drivers/iio/hw_consumer.c:42:11: note: in expansion of macro 'INDIO_BUFFER_HARDWARE' .modes = INDIO_BUFFER_HARDWARE, ^~~~~~~~~~~~~~~~~~~~~ include/linux/iio/iio.h:353:32: note: (near initialization for 'iio_hw_buf_access') #define INDIO_BUFFER_HARDWARE 0x08 ^ >> drivers/iio/hw_consumer.c:42:11: note: in expansion of macro 'INDIO_BUFFER_HARDWARE' .modes = INDIO_BUFFER_HARDWARE, ^~~~~~~~~~~~~~~~~~~~~ drivers/iio/hw_consumer.c: In function 'iio_hw_consumer_get_buffer': drivers/iio/hw_consumer.c:66:2: error: implicit declaration of function 'iio_buffer_init' [-Werror=implicit-function-declaration] iio_buffer_init(&buf->buffer); ^~~~~~~~~~~~~~~ drivers/iio/hw_consumer.c: In function 'iio_hw_consumer_alloc': drivers/iio/hw_consumer.c:110:3: error: implicit declaration of function 'iio_buffer_put' [-Werror=implicit-function-declaration] iio_buffer_put(&buf->buffer); ^~~~~~~~~~~~~~ drivers/iio/hw_consumer.c: In function 'iio_hw_consumer_enable': drivers/iio/hw_consumer.c:135:9: error: implicit declaration of function 'iio_update_buffers' [-Werror=implicit-function-declaration] ret = iio_update_buffers(buf->indio_dev, &buf->buffer, NULL); ^~~~~~~~~~~~~~~~~~ drivers/iio/hw_consumer.c: At top level: drivers/iio/hw_consumer.c:40:45: error: storage size of 'iio_hw_buf_access' isn't known static const struct iio_buffer_access_funcs iio_hw_buf_access = { ^~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors -- In file included from drivers/iio/buffer/industrialio-buffer-dma.c:17:0: include/linux/iio/buffer-dma.h:107:20: error: field 'buffer' has incomplete type struct iio_buffer buffer; ^~~~~~ drivers/iio/buffer/industrialio-buffer-dma.c: In function 'iio_buffer_block_release': drivers/iio/buffer/industrialio-buffer-dma.c:104:2: error: implicit declaration of function 'iio_buffer_put' [-Werror=implicit-function-declaration] iio_buffer_put(&block->queue->buffer); ^~~~~~~~~~~~~~ In file included from include/asm-generic/bug.h:13:0, from arch/x86/include/asm/bug.h:35, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from drivers/iio/buffer/industrialio-buffer-dma.c:8: drivers/iio/buffer/industrialio-buffer-dma.c: In function 'iio_buffer_to_queue': include/linux/kernel.h:852:48: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ >> drivers/iio/buffer/industrialio-buffer-dma.c:163:9: note: in expansion of macro 'container_of' return container_of(buf, struct iio_dma_buffer_queue, buffer); ^~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dma.c: In function 'iio_dma_buffer_alloc_block': drivers/iio/buffer/industrialio-buffer-dma.c:188:2: error: implicit declaration of function 'iio_buffer_get' [-Werror=implicit-function-declaration] iio_buffer_get(&queue->buffer); ^~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dma.c: In function 'iio_dma_buffer_read': drivers/iio/buffer/industrialio-buffer-dma.c:489:16: error: dereferencing pointer to incomplete type 'struct iio_buffer' if (n < buffer->bytes_per_datum) ^~ drivers/iio/buffer/industrialio-buffer-dma.c: In function 'iio_dma_buffer_init': drivers/iio/buffer/industrialio-buffer-dma.c:614:2: error: implicit declaration of function 'iio_buffer_init' [-Werror=implicit-function-declaration] iio_buffer_init(&queue->buffer); ^~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dma.c: In function 'iio_buffer_to_queue': >> drivers/iio/buffer/industrialio-buffer-dma.c:164:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ cc1: some warnings being treated as errors -- In file included from drivers/iio/buffer/industrialio-buffer-dmaengine.c:17:0: include/linux/iio/buffer-dma.h:107:20: error: field 'buffer' has incomplete type struct iio_buffer buffer; ^~~~~~ In file included from include/asm-generic/bug.h:13:0, from arch/x86/include/asm/bug.h:35, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from drivers/iio/buffer/industrialio-buffer-dmaengine.c:8: drivers/iio/buffer/industrialio-buffer-dmaengine.c: In function 'iio_buffer_to_dmaengine_buffer': include/linux/kernel.h:852:48: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ >> drivers/iio/buffer/industrialio-buffer-dmaengine.c:43:9: note: in expansion of macro 'container_of' return container_of(buffer, struct dmaengine_buffer, queue.buffer); ^~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c: At top level: drivers/iio/buffer/industrialio-buffer-dmaengine.c:109:21: error: variable 'iio_dmaengine_buffer_ops' has initializer but incomplete type static const struct iio_buffer_access_funcs iio_dmaengine_buffer_ops = { ^~~~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:110:2: error: unknown field 'read_first_n' specified in initializer .read_first_n = iio_dma_buffer_read, ^ >> drivers/iio/buffer/industrialio-buffer-dmaengine.c:110:18: warning: excess elements in struct initializer .read_first_n = iio_dma_buffer_read, ^~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:110:18: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio/buffer/industrialio-buffer-dmaengine.c:111:2: error: unknown field 'set_bytes_per_datum' specified in initializer .set_bytes_per_datum = iio_dma_buffer_set_bytes_per_datum, ^ drivers/iio/buffer/industrialio-buffer-dmaengine.c:111:25: warning: excess elements in struct initializer .set_bytes_per_datum = iio_dma_buffer_set_bytes_per_datum, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:111:25: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio/buffer/industrialio-buffer-dmaengine.c:112:2: error: unknown field 'set_length' specified in initializer .set_length = iio_dma_buffer_set_length, ^ drivers/iio/buffer/industrialio-buffer-dmaengine.c:112:16: warning: excess elements in struct initializer .set_length = iio_dma_buffer_set_length, ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:112:16: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio/buffer/industrialio-buffer-dmaengine.c:113:2: error: unknown field 'request_update' specified in initializer .request_update = iio_dma_buffer_request_update, ^ drivers/iio/buffer/industrialio-buffer-dmaengine.c:113:20: warning: excess elements in struct initializer .request_update = iio_dma_buffer_request_update, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:113:20: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio/buffer/industrialio-buffer-dmaengine.c:114:2: error: unknown field 'enable' specified in initializer .enable = iio_dma_buffer_enable, ^ drivers/iio/buffer/industrialio-buffer-dmaengine.c:114:12: warning: excess elements in struct initializer .enable = iio_dma_buffer_enable, ^~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:114:12: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio/buffer/industrialio-buffer-dmaengine.c:115:2: error: unknown field 'disable' specified in initializer .disable = iio_dma_buffer_disable, ^ drivers/iio/buffer/industrialio-buffer-dmaengine.c:115:13: warning: excess elements in struct initializer .disable = iio_dma_buffer_disable, ^~~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:115:13: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio/buffer/industrialio-buffer-dmaengine.c:116:2: error: unknown field 'data_available' specified in initializer .data_available = iio_dma_buffer_data_available, ^ drivers/iio/buffer/industrialio-buffer-dmaengine.c:116:20: warning: excess elements in struct initializer .data_available = iio_dma_buffer_data_available, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:116:20: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio/buffer/industrialio-buffer-dmaengine.c:117:2: error: unknown field 'release' specified in initializer .release = iio_dmaengine_buffer_release, ^ drivers/iio/buffer/industrialio-buffer-dmaengine.c:117:13: warning: excess elements in struct initializer .release = iio_dmaengine_buffer_release, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:117:13: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio/buffer/industrialio-buffer-dmaengine.c:119:2: error: unknown field 'modes' specified in initializer .modes = INDIO_BUFFER_HARDWARE, ^ In file included from drivers/iio/buffer/industrialio-buffer-dmaengine.c:15:0: >> include/linux/iio/iio.h:353:32: warning: excess elements in struct initializer #define INDIO_BUFFER_HARDWARE 0x08 ^ >> drivers/iio/buffer/industrialio-buffer-dmaengine.c:119:11: note: in expansion of macro 'INDIO_BUFFER_HARDWARE' .modes = INDIO_BUFFER_HARDWARE, ^~~~~~~~~~~~~~~~~~~~~ include/linux/iio/iio.h:353:32: note: (near initialization for 'iio_dmaengine_buffer_ops') #define INDIO_BUFFER_HARDWARE 0x08 ^ >> drivers/iio/buffer/industrialio-buffer-dmaengine.c:119:11: note: in expansion of macro 'INDIO_BUFFER_HARDWARE' .modes = INDIO_BUFFER_HARDWARE, ^~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:120:2: error: unknown field 'flags' specified in initializer .flags = INDIO_BUFFER_FLAG_FIXED_WATERMARK, ^ drivers/iio/buffer/industrialio-buffer-dmaengine.c:120:11: error: 'INDIO_BUFFER_FLAG_FIXED_WATERMARK' undeclared here (not in a function) .flags = INDIO_BUFFER_FLAG_FIXED_WATERMARK, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c:120:11: warning: excess elements in struct initializer drivers/iio/buffer/industrialio-buffer-dmaengine.c:120:11: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio/buffer/industrialio-buffer-dmaengine.c: In function 'iio_dmaengine_buffer_free': drivers/iio/buffer/industrialio-buffer-dmaengine.c:206:2: error: implicit declaration of function 'iio_buffer_put' [-Werror=implicit-function-declaration] iio_buffer_put(buffer); ^~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c: At top level: drivers/iio/buffer/industrialio-buffer-dmaengine.c:109:45: error: storage size of 'iio_dmaengine_buffer_ops' isn't known static const struct iio_buffer_access_funcs iio_dmaengine_buffer_ops = { ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio/buffer/industrialio-buffer-dmaengine.c: In function 'iio_buffer_to_dmaengine_buffer': >> drivers/iio/buffer/industrialio-buffer-dmaengine.c:44:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ cc1: some warnings being treated as errors -- In file included from drivers/iio//buffer/industrialio-buffer-dmaengine.c:17:0: include/linux/iio/buffer-dma.h:107:20: error: field 'buffer' has incomplete type struct iio_buffer buffer; ^~~~~~ In file included from include/asm-generic/bug.h:13:0, from arch/x86/include/asm/bug.h:35, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from drivers/iio//buffer/industrialio-buffer-dmaengine.c:8: drivers/iio//buffer/industrialio-buffer-dmaengine.c: In function 'iio_buffer_to_dmaengine_buffer': include/linux/kernel.h:852:48: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:43:9: note: in expansion of macro 'container_of' return container_of(buffer, struct dmaengine_buffer, queue.buffer); ^~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c: At top level: drivers/iio//buffer/industrialio-buffer-dmaengine.c:109:21: error: variable 'iio_dmaengine_buffer_ops' has initializer but incomplete type static const struct iio_buffer_access_funcs iio_dmaengine_buffer_ops = { ^~~~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:110:2: error: unknown field 'read_first_n' specified in initializer .read_first_n = iio_dma_buffer_read, ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:110:18: warning: excess elements in struct initializer .read_first_n = iio_dma_buffer_read, ^~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:110:18: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio//buffer/industrialio-buffer-dmaengine.c:111:2: error: unknown field 'set_bytes_per_datum' specified in initializer .set_bytes_per_datum = iio_dma_buffer_set_bytes_per_datum, ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:111:25: warning: excess elements in struct initializer .set_bytes_per_datum = iio_dma_buffer_set_bytes_per_datum, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:111:25: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio//buffer/industrialio-buffer-dmaengine.c:112:2: error: unknown field 'set_length' specified in initializer .set_length = iio_dma_buffer_set_length, ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:112:16: warning: excess elements in struct initializer .set_length = iio_dma_buffer_set_length, ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:112:16: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio//buffer/industrialio-buffer-dmaengine.c:113:2: error: unknown field 'request_update' specified in initializer .request_update = iio_dma_buffer_request_update, ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:113:20: warning: excess elements in struct initializer .request_update = iio_dma_buffer_request_update, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:113:20: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio//buffer/industrialio-buffer-dmaengine.c:114:2: error: unknown field 'enable' specified in initializer .enable = iio_dma_buffer_enable, ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:114:12: warning: excess elements in struct initializer .enable = iio_dma_buffer_enable, ^~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:114:12: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio//buffer/industrialio-buffer-dmaengine.c:115:2: error: unknown field 'disable' specified in initializer .disable = iio_dma_buffer_disable, ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:115:13: warning: excess elements in struct initializer .disable = iio_dma_buffer_disable, ^~~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:115:13: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio//buffer/industrialio-buffer-dmaengine.c:116:2: error: unknown field 'data_available' specified in initializer .data_available = iio_dma_buffer_data_available, ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:116:20: warning: excess elements in struct initializer .data_available = iio_dma_buffer_data_available, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:116:20: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio//buffer/industrialio-buffer-dmaengine.c:117:2: error: unknown field 'release' specified in initializer .release = iio_dmaengine_buffer_release, ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:117:13: warning: excess elements in struct initializer .release = iio_dmaengine_buffer_release, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:117:13: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio//buffer/industrialio-buffer-dmaengine.c:119:2: error: unknown field 'modes' specified in initializer .modes = INDIO_BUFFER_HARDWARE, ^ In file included from drivers/iio//buffer/industrialio-buffer-dmaengine.c:15:0: >> include/linux/iio/iio.h:353:32: warning: excess elements in struct initializer #define INDIO_BUFFER_HARDWARE 0x08 ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:119:11: note: in expansion of macro 'INDIO_BUFFER_HARDWARE' .modes = INDIO_BUFFER_HARDWARE, ^~~~~~~~~~~~~~~~~~~~~ include/linux/iio/iio.h:353:32: note: (near initialization for 'iio_dmaengine_buffer_ops') #define INDIO_BUFFER_HARDWARE 0x08 ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:119:11: note: in expansion of macro 'INDIO_BUFFER_HARDWARE' .modes = INDIO_BUFFER_HARDWARE, ^~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:120:2: error: unknown field 'flags' specified in initializer .flags = INDIO_BUFFER_FLAG_FIXED_WATERMARK, ^ drivers/iio//buffer/industrialio-buffer-dmaengine.c:120:11: error: 'INDIO_BUFFER_FLAG_FIXED_WATERMARK' undeclared here (not in a function) .flags = INDIO_BUFFER_FLAG_FIXED_WATERMARK, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c:120:11: warning: excess elements in struct initializer drivers/iio//buffer/industrialio-buffer-dmaengine.c:120:11: note: (near initialization for 'iio_dmaengine_buffer_ops') drivers/iio//buffer/industrialio-buffer-dmaengine.c: In function 'iio_dmaengine_buffer_free': drivers/iio//buffer/industrialio-buffer-dmaengine.c:206:2: error: implicit declaration of function 'iio_buffer_put' [-Werror=implicit-function-declaration] iio_buffer_put(buffer); ^~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c: At top level: drivers/iio//buffer/industrialio-buffer-dmaengine.c:109:45: error: storage size of 'iio_dmaengine_buffer_ops' isn't known static const struct iio_buffer_access_funcs iio_dmaengine_buffer_ops = { ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/iio//buffer/industrialio-buffer-dmaengine.c: In function 'iio_buffer_to_dmaengine_buffer': drivers/iio//buffer/industrialio-buffer-dmaengine.c:44:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ cc1: some warnings being treated as errors vim +/container_of +29 drivers/iio/hw_consumer.c d5ca88eb Lars-Peter Clausen 2017-03-17 1 #include <linux/err.h> d5ca88eb Lars-Peter Clausen 2017-03-17 2 #include <linux/export.h> d5ca88eb Lars-Peter Clausen 2017-03-17 @3 #include <linux/slab.h> d5ca88eb Lars-Peter Clausen 2017-03-17 4 #include <linux/mutex.h> d5ca88eb Lars-Peter Clausen 2017-03-17 5 #include <linux/of.h> d5ca88eb Lars-Peter Clausen 2017-03-17 6 d5ca88eb Lars-Peter Clausen 2017-03-17 7 #include <linux/iio/iio.h> d5ca88eb Lars-Peter Clausen 2017-03-17 8 #include "iio_core.h" d5ca88eb Lars-Peter Clausen 2017-03-17 9 #include <linux/iio/machine.h> d5ca88eb Lars-Peter Clausen 2017-03-17 10 #include <linux/iio/driver.h> d5ca88eb Lars-Peter Clausen 2017-03-17 11 #include <linux/iio/consumer.h> d5ca88eb Lars-Peter Clausen 2017-03-17 12 #include <linux/iio/hw_consumer.h> d5ca88eb Lars-Peter Clausen 2017-03-17 13 #include <linux/iio/buffer.h> d5ca88eb Lars-Peter Clausen 2017-03-17 14 d5ca88eb Lars-Peter Clausen 2017-03-17 15 struct iio_hw_consumer { d5ca88eb Lars-Peter Clausen 2017-03-17 16 struct list_head buffers; d5ca88eb Lars-Peter Clausen 2017-03-17 17 struct iio_channel *channels; d5ca88eb Lars-Peter Clausen 2017-03-17 18 }; d5ca88eb Lars-Peter Clausen 2017-03-17 19 d5ca88eb Lars-Peter Clausen 2017-03-17 20 struct hw_consumer_buffer { d5ca88eb Lars-Peter Clausen 2017-03-17 21 struct list_head head; d5ca88eb Lars-Peter Clausen 2017-03-17 22 struct iio_dev *indio_dev; d5ca88eb Lars-Peter Clausen 2017-03-17 23 struct iio_buffer buffer; d5ca88eb Lars-Peter Clausen 2017-03-17 24 }; d5ca88eb Lars-Peter Clausen 2017-03-17 25 d5ca88eb Lars-Peter Clausen 2017-03-17 26 static struct hw_consumer_buffer *iio_buffer_to_hw_consumer_buffer( d5ca88eb Lars-Peter Clausen 2017-03-17 27 struct iio_buffer *buffer) d5ca88eb Lars-Peter Clausen 2017-03-17 28 { d5ca88eb Lars-Peter Clausen 2017-03-17 @29 return container_of(buffer, struct hw_consumer_buffer, buffer); d5ca88eb Lars-Peter Clausen 2017-03-17 30 } d5ca88eb Lars-Peter Clausen 2017-03-17 31 d5ca88eb Lars-Peter Clausen 2017-03-17 32 static void iio_hw_buf_release(struct iio_buffer *buffer) d5ca88eb Lars-Peter Clausen 2017-03-17 33 { d5ca88eb Lars-Peter Clausen 2017-03-17 34 struct hw_consumer_buffer *hw_buf = d5ca88eb Lars-Peter Clausen 2017-03-17 35 iio_buffer_to_hw_consumer_buffer(buffer); d5ca88eb Lars-Peter Clausen 2017-03-17 36 kfree(hw_buf->buffer.scan_mask); d5ca88eb Lars-Peter Clausen 2017-03-17 37 kfree(hw_buf); d5ca88eb Lars-Peter Clausen 2017-03-17 38 } d5ca88eb Lars-Peter Clausen 2017-03-17 39 d5ca88eb Lars-Peter Clausen 2017-03-17 @40 static const struct iio_buffer_access_funcs iio_hw_buf_access = { d5ca88eb Lars-Peter Clausen 2017-03-17 @41 .release = &iio_hw_buf_release, d5ca88eb Lars-Peter Clausen 2017-03-17 @42 .modes = INDIO_BUFFER_HARDWARE, d5ca88eb Lars-Peter Clausen 2017-03-17 43 }; d5ca88eb Lars-Peter Clausen 2017-03-17 44 d5ca88eb Lars-Peter Clausen 2017-03-17 45 static struct hw_consumer_buffer *iio_hw_consumer_get_buffer( :::::: The code at line 29 was first introduced by commit :::::: d5ca88ebd75256ba43b57c82dfa9a3cbeb3cacf7 iio: Add hardware consumer support :::::: TO: Lars-Peter Clausen <lars@xxxxxxxxxx> :::::: CC: 0day robot <fengguang.wu@xxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip