- 12 10月, 2013 1 次提交
-
-
由 Lars-Peter Clausen 提交于
Since the buffer is accessed by userspace we can not just free the buffers memory once we are done with it in kernel space. There might still be open file descriptors and userspace still might be accessing the buffer. This patch adds support for reference counting to the IIO buffers. When a buffer is created and initialized its initial reference count is set to 1. Instead of freeing the memory of the buffer the buffer's _free() function will drop that reference again. But only after the last reference to the buffer has been dropped the buffer the buffer's memory will be freed. The IIO device will take a reference to its primary buffer. The patch adds a small helper function for this called iio_device_attach_buffer() which will get a reference to the buffer and assign the buffer to the IIO device. This function must be used instead of assigning the buffer to the device by hand. The reference is only dropped once the IIO device is freed and we can be sure that there are no more open file handles. A reference to a buffer will also be taken whenever the buffer is active to avoid the buffer being freed while data is still being send to it. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 22 9月, 2013 1 次提交
-
-
由 Peter Meerwald 提交于
Signed-off-by: NPeter Meerwald <pmeerw@pmeerw.net> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 21 9月, 2013 2 次提交
-
-
由 Lars-Peter Clausen 提交于
Make sure to stop sampling when the device is removed, otherwise it will continue to sample forever. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
由 Peter Meerwald 提交于
if device has available_scan_masks set and the buffer is enabled without any scan_elements enabled, in a NULL pointer is dereferenced in iio_compute_scan_bytes() [ 18.993713] Unable to handle kernel NULL pointer dereference at virtual address 00000000 [ 19.002593] pgd = debd4000 [ 19.005432] [00000000] *pgd=9ebc0831, *pte=00000000, *ppte=00000000 [ 19.012329] Internal error: Oops: 17 [#1] PREEMPT ARM [ 19.017639] Modules linked in: [ 19.020843] CPU: 0 Not tainted (3.9.11-00036-g75c888a-dirty #207) [ 19.027587] PC is at _find_first_bit_le+0xc/0x2c [ 19.032440] LR is at iio_compute_scan_bytes+0x2c/0xf4 [ 19.037719] pc : [<c021dc60>] lr : [<c03198d0>] psr: 200d0013 [ 19.037719] sp : debd9ed0 ip : 00000000 fp : 000802bc [ 19.049713] r10: 00000000 r9 : 00000000 r8 : deb67250 [ 19.055206] r7 : 00000000 r6 : 00000000 r5 : 00000000 r4 : deb67000 [ 19.062011] r3 : de96ec00 r2 : 00000000 r1 : 00000004 r0 : 00000000 [ 19.068847] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user [ 19.076324] Control: 10c5387d Table: 9ebd4019 DAC: 00000015 problem is the rollback code in iio_update_buffers(), old_mask may be NULL (e.g. on first call) I'm not too confident about the fix; works for me... Signed-off-by: NPeter Meerwald <pmeerw@pmeerw.net> Reviewed-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 19 9月, 2013 1 次提交
-
-
由 Peter Meerwald 提交于
adding one return value check fix one kerneldoc Signed-off-by: NPeter Meerwald <pmeerw@pmeerw.net> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 16 9月, 2013 3 次提交
-
-
由 Lars-Peter Clausen 提交于
Change the type of the 'data' parameter for iio_push_to_buffers() from 'u8 *' to 'const void *'. Drivers typically use the correct type (e.g. __be16 *) for their data buffer. When passing the buffer to iio_push_to_buffers() it needs to be cast to 'u8 *' for the compiler to not complain (and also having to add __force if we want to keep sparse happy as well). Since the buffer implementation should not care about the data layout (except the size of one sample) using a void pointer is the correct thing to do. Also make it const as the buffer implementations are not supposed to modify it. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
由 Jonathan Cameron 提交于
Introduce an enum to specify whether the attribute is separate or shared. Factor out the bitmap handling for loop into a separate function. Tidy up error handling and add a NULL assignment to squish a false positive warning from GCC. Change ext_info shared type from boolean to enum and update in all drivers. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Reviewed-by: NLars-Peter Clausen <lars@metafoo.de>
-
由 Lars-Peter Clausen 提交于
We can skip having to loop through all the device's buffers to see if a certain buffer is active, if we let the buffer's list head point to itself when the buffer is inactive. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 23 5月, 2013 1 次提交
-
-
由 Michał Mirosław 提交于
1. make messages grepable (in one line) 2. include returned errno in them Signed-off-by: NMichał Mirosław <mirq-linux@rere.qmqm.pl> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 10 11月, 2012 1 次提交
-
-
由 Jonathan Cameron 提交于
Route all buffer writes through the demux. Addition or removal of a buffer results in tear down and setup of all the buffers for a given device. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Tested-by: Nsrinivas pandruvada <srinivas.pandruvada@intel.com>
-
- 20 10月, 2012 1 次提交
-
-
由 Lars-Peter Clausen 提交于
strict_strto* has been deprecated in favor of kstrto*. Use strict_strtouint respective strict_strtoint, since that is what the functions we pass the converted values to expect. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 08 9月, 2012 1 次提交
-
-
由 Lars-Peter Clausen 提交于
Drop timestamp parameter from buffer store_to callback and subsequently from iio_push_to_buffer. The timestamp parameter is unused and it seems likely that it will stay unused in the future, so it should be safe to remove it. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 04 9月, 2012 1 次提交
-
-
由 Peter Meerwald 提交于
Signed-off-by: NPeter Meerwald <pmeerw@pmeerw.net> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 10 7月, 2012 2 次提交
-
-
由 Lars-Peter Clausen 提交于
Add a helper function for validating a scan mask for devices where exactly one channel must be selected during sampling. This is a common case among devices which have scan mask restrictions so it makes sense to provide this function in the core. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
由 Lars-Peter Clausen 提交于
This is useful for cases where the number of valid scan masks grows exponentially, but it is rather easy to check whether a mask is valid or not programmatically. An example of such a case is a device with multiple ADCs where each ADC has a upstream MUX, which allows to select from a number of physical channels. +-------+ +-------+ | | | | --- Channel 1 | ADC 1 |---| MUX 1 | --- ... | | | | --- Channel M +-------+ +-------+ . . . . . . . . . +-------+ +-------+ | | | | --- Channel M * N + 1 | ADC N |---| MUX N | --- ... | | | | --- Channel M * N + M +-------+ +-------+ The number of necessary scan masks for this case is (M+1)**N - 1, on the other hand it is easy to check whether subsets for each ADC of the scanmask have only one bit set. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 09 7月, 2012 1 次提交
-
-
由 Lars-Peter Clausen 提交于
The channel set assigned to the iio device is not necessarily the same has the channel set passed to iio_buffer_register. So to avoid possible complications always work with the channel set pass to iio_buffer_register and ignore the channel set assigned to the iio device. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 19 6月, 2012 1 次提交
-
-
由 Lars-Peter Clausen 提交于
It is not always the case that all channels can be used in buffered mode. This patch allows channels, which can not be used in buffered mode, to set their scan index to a negative number, which will cause iio_buffer_register to ignore the channel. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 16 6月, 2012 1 次提交
-
-
由 Lars-Peter Clausen 提交于
iio_scan_mask_match() returns NULL if the passed in scan mask is empty. This will happen if no channel has been selected and buffer is enabled. iio_sw_buffer_preenable() will assign NULL to indio_dev->active_scan_mask in this case. As a result iio_update_demux() will cause a NULL pointer deref, because it expects active_scan_mask to be non-NULL. Since it does not make much sense to start data capture if there is no data to capture this patch updates the code to fail gracefully in iio_scan_mask_match() instead of crashing the kernel. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 15 5月, 2012 1 次提交
-
-
由 Lars-Peter Clausen 提交于
Replace open-coded instances of getting a iio_dev struct from a device struct with dev_to_iio_dev(). Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 26 4月, 2012 2 次提交
-
-
由 Jonathan Cameron 提交于
Take the core support + the kfifo buffer implentation out of staging. Whilst we are far from done in improving this subsystem it is now at a stage where the userspae interfaces (provided by the core) can be considered stable. Drivers will follow over a longer time scale. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Jonathan Cameron 提交于
Step 1 in moving the IIO core out of staging. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 25 4月, 2012 6 次提交
-
-
由 Jonathan Cameron 提交于
This will come in handy again when we move to multiple buffers so lets pull it out into a little utility function now. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Acked-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Jonathan Cameron 提交于
This will be needed when multiple buffer support is added. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Acked-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Jonathan Cameron 提交于
Signed-off-by: NJonathan Cameron <jic23@kernel.org> Acked-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Jonathan Cameron 提交于
This is just a locally cached value that is device specific (rather than buffer specific.) Hence it wants to come out of the buffer before we add multiple buffer support. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Acked-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Jonathan Cameron 提交于
Principal reason is to make later patches more coherent and easier to review but this set in itself separates a logical entity out nicely wihin the code. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Acked-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Jonathan Cameron 提交于
Signed-off-by: NJonathan Cameron <jic23@kernel.org> Acked-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 25 2月, 2012 1 次提交
-
-
由 Michael Hennerich 提交于
The core must not modify available_scan_mask, because it causes problems with drivers where multiple instances of the driver share the same mask set. So make this explicit by marking available scan masks as const. The max1363 driver needs some minor adjustment to accommodate this change. Pull scan mask allocation into a separate function. Signed-off-by: NMichael Hennerich <michael.hennerich@analog.com> Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 23 12月, 2011 7 次提交
-
-
由 Lars-Peter Clausen 提交于
These callbacks are currently used by the individual buffer implementations to ensure that the request_update callback is not issued while the buffer is in use. But the core already provides sufficient measures to prevent this from happening in the first place. So it is safe to remove them. There is one functional change due to this patch. Since the buffer is no longer marked as in use when the chrdev is opened, it is now possible to enable the buffer while it is opened. This did not work before, because mark_param_change did fail if the buffer was marked as in use. Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Lars-Peter Clausen 提交于
Right now we have a mark_param_change callback in the buffer access functions struct, which should be called whenever the parameters (length, bytes per datum) of the buffer change. But it is only called when the user changes the buffer size, not when the bytes per datum change. Additionally each buffer implementation already keeps track internally whether its parameters have changed, making the call to mark_param_change after changing the buffer length redundant. Since each buffer implementation knows best when one of its parameters has changed just make tracking of this internal and drop the mark_param_change callback. Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Lars-Peter Clausen 提交于
The flag is only cleared, never set or tested, so it is safe to remove it. Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Lars-Peter Clausen 提交于
The buffer buffer storage is only update when enabling the buffer. Changing the buffer size while the buffer is enabled will confuse the buffer in regard to its actual buffer size and can cause potential memory corruption. Thus it is only safe to modify the buffer size when the buffer is disabled. Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Lars-Peter Clausen 提交于
Currently we only disallow changing the scan elements, while the buffer is enabled, in triggered buffer mode. This patch changes it to disallow it for all buffered modes. Disabling or enabling scan elements while the buffer is enabled will cause undefined behavior since the reader will not be able to tell samples with the new and old scan element set apart and thus wont be able to extract any meaningful data from the buffer. Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Lars-Peter Clausen 提交于
Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Lars-Peter Clausen 提交于
Fixes the following warning: drivers/staging/iio/industrialio-buffer.c: In function ‘iio_scan_mask_query’: drivers/staging/iio/industrialio-buffer.c:620: warning: unused variable ‘mask’ Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
- 09 12月, 2011 5 次提交
-
-
由 Lars-Peter Clausen 提交于
When updating the scan mask we have to check the actual scan mask for if the channel is already enabled, not the matching scan mask from the available scan masks. The bit will already be set there and as a result the actual scan mask will not get updated and the channel stays disabled. Also fix the return value of iio_scan_el_store which would return 1 instead of the number of bytes written if the channel was already active in the scan mask. Acked-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Jonathan Cameron 提交于
In all existing cases, the calls are coming from a location where the indio_dev is already available. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Jonathan Cameron 提交于
Obviously drivers should only use this for pushing to buffers. They need buffer->scan_mask for pulling from them post demux. Signed-off-by: NJonathan Cameron <jic23@cam.ac.uk> Acked-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Jonathan Cameron 提交于
These callbacks should not be buffer instance specific. Hence move them out of the buffer. Signed-off-by: NJonathan Cameron <jic23@cam.ac.uk> Acked-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
由 Jonathan Cameron 提交于
There are no known reasons why userspace should want this value. It can be established from the buffer description anyway. Signed-off-by: NJonathan Cameron <jic23@cam.ac.uk> Acked-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
-