aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2011-12-19 09:23:48 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2011-12-22 16:38:09 -0500
commit869871b58c7f7c26ccf7a89cbe599e9b963b8e69 (patch)
tree8835f3b8496c2c1228886762786a247930208c0a /drivers/staging
parent307276cb8366d9c163160fe2775f5bfe7b9c1495 (diff)
staging:iio: Drop buffer mark_param_change callback
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: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/iio/Documentation/ring.txt2
-rw-r--r--drivers/staging/iio/buffer.h4
-rw-r--r--drivers/staging/iio/industrialio-buffer.c5
-rw-r--r--drivers/staging/iio/kfifo_buf.c21
-rw-r--r--drivers/staging/iio/ring_sw.c21
5 files changed, 19 insertions, 34 deletions
diff --git a/drivers/staging/iio/Documentation/ring.txt b/drivers/staging/iio/Documentation/ring.txt
index 1b77aeef179..0f21479ef4e 100644
--- a/drivers/staging/iio/Documentation/ring.txt
+++ b/drivers/staging/iio/Documentation/ring.txt
@@ -39,8 +39,6 @@ rip_first_n
39 The primary buffer reading function. Note that it may well not return 39 The primary buffer reading function. Note that it may well not return
40 as much data as requested. 40 as much data as requested.
41 41
42mark_param_changed
43 Used to indicate that something has changed. Used in conjunction with
44request_update 42request_update
45 If parameters have changed that require reinitialization or configuration of 43 If parameters have changed that require reinitialization or configuration of
46 the buffer this will trigger it. 44 the buffer this will trigger it.
diff --git a/drivers/staging/iio/buffer.h b/drivers/staging/iio/buffer.h
index b0e04df1b54..ea42b5d27e3 100644
--- a/drivers/staging/iio/buffer.h
+++ b/drivers/staging/iio/buffer.h
@@ -22,9 +22,6 @@ struct iio_buffer;
22 * @unmark_in_use: reduce reference count when no longer using buffer 22 * @unmark_in_use: reduce reference count when no longer using buffer
23 * @store_to: actually store stuff to the buffer 23 * @store_to: actually store stuff to the buffer
24 * @read_first_n: try to get a specified number of bytes (must exist) 24 * @read_first_n: try to get a specified number of bytes (must exist)
25 * @mark_param_change: notify buffer that some relevant parameter has changed
26 * Often this means the underlying storage may need to
27 * change.
28 * @request_update: if a parameter change has been marked, update underlying 25 * @request_update: if a parameter change has been marked, update underlying
29 * storage. 26 * storage.
30 * @get_bytes_per_datum:get current bytes per datum 27 * @get_bytes_per_datum:get current bytes per datum
@@ -49,7 +46,6 @@ struct iio_buffer_access_funcs {
49 size_t n, 46 size_t n,
50 char __user *buf); 47 char __user *buf);
51 48
52 int (*mark_param_change)(struct iio_buffer *buffer);
53 int (*request_update)(struct iio_buffer *buffer); 49 int (*request_update)(struct iio_buffer *buffer);
54 50
55 int (*get_bytes_per_datum)(struct iio_buffer *buffer); 51 int (*get_bytes_per_datum)(struct iio_buffer *buffer);
diff --git a/drivers/staging/iio/industrialio-buffer.c b/drivers/staging/iio/industrialio-buffer.c
index 4c6d183509f..d2858ff8aa0 100644
--- a/drivers/staging/iio/industrialio-buffer.c
+++ b/drivers/staging/iio/industrialio-buffer.c
@@ -399,11 +399,8 @@ ssize_t iio_buffer_write_length(struct device *dev,
399 if (iio_buffer_enabled(indio_dev)) { 399 if (iio_buffer_enabled(indio_dev)) {
400 ret = -EBUSY; 400 ret = -EBUSY;
401 } else { 401 } else {
402 if (buffer->access->set_length) { 402 if (buffer->access->set_length)
403 buffer->access->set_length(buffer, val); 403 buffer->access->set_length(buffer, val);
404 if (buffer->access->mark_param_change)
405 buffer->access->mark_param_change(buffer);
406 }
407 ret = 0; 404 ret = 0;
408 } 405 }
409 mutex_unlock(&indio_dev->mlock); 406 mutex_unlock(&indio_dev->mlock);
diff --git a/drivers/staging/iio/kfifo_buf.c b/drivers/staging/iio/kfifo_buf.c
index b69cca5e43c..bae4caf4fce 100644
--- a/drivers/staging/iio/kfifo_buf.c
+++ b/drivers/staging/iio/kfifo_buf.c
@@ -109,20 +109,19 @@ static int iio_get_bytes_per_datum_kfifo(struct iio_buffer *r)
109 return r->bytes_per_datum; 109 return r->bytes_per_datum;
110} 110}
111 111
112static int iio_set_bytes_per_datum_kfifo(struct iio_buffer *r, size_t bpd) 112static int iio_mark_update_needed_kfifo(struct iio_buffer *r)
113{ 113{
114 if (r->bytes_per_datum != bpd) { 114 struct iio_kfifo *kf = iio_to_kfifo(r);
115 r->bytes_per_datum = bpd; 115 kf->update_needed = true;
116 if (r->access->mark_param_change)
117 r->access->mark_param_change(r);
118 }
119 return 0; 116 return 0;
120} 117}
121 118
122static int iio_mark_update_needed_kfifo(struct iio_buffer *r) 119static int iio_set_bytes_per_datum_kfifo(struct iio_buffer *r, size_t bpd)
123{ 120{
124 struct iio_kfifo *kf = iio_to_kfifo(r); 121 if (r->bytes_per_datum != bpd) {
125 kf->update_needed = true; 122 r->bytes_per_datum = bpd;
123 iio_mark_update_needed_kfifo(r);
124 }
126 return 0; 125 return 0;
127} 126}
128 127
@@ -130,8 +129,7 @@ static int iio_set_length_kfifo(struct iio_buffer *r, int length)
130{ 129{
131 if (r->length != length) { 130 if (r->length != length) {
132 r->length = length; 131 r->length = length;
133 if (r->access->mark_param_change) 132 iio_mark_update_needed_kfifo(r);
134 r->access->mark_param_change(r);
135 } 133 }
136 return 0; 134 return 0;
137} 135}
@@ -174,7 +172,6 @@ const struct iio_buffer_access_funcs kfifo_access_funcs = {
174 .unmark_in_use = &iio_unmark_kfifo_in_use, 172 .unmark_in_use = &iio_unmark_kfifo_in_use,
175 .store_to = &iio_store_to_kfifo, 173 .store_to = &iio_store_to_kfifo,
176 .read_first_n = &iio_read_first_n_kfifo, 174 .read_first_n = &iio_read_first_n_kfifo,
177 .mark_param_change = &iio_mark_update_needed_kfifo,
178 .request_update = &iio_request_update_kfifo, 175 .request_update = &iio_request_update_kfifo,
179 .get_bytes_per_datum = &iio_get_bytes_per_datum_kfifo, 176 .get_bytes_per_datum = &iio_get_bytes_per_datum_kfifo,
180 .set_bytes_per_datum = &iio_set_bytes_per_datum_kfifo, 177 .set_bytes_per_datum = &iio_set_bytes_per_datum_kfifo,
diff --git a/drivers/staging/iio/ring_sw.c b/drivers/staging/iio/ring_sw.c
index 4c15cc8e726..c239fd3af4a 100644
--- a/drivers/staging/iio/ring_sw.c
+++ b/drivers/staging/iio/ring_sw.c
@@ -316,12 +316,18 @@ static int iio_get_bytes_per_datum_sw_rb(struct iio_buffer *r)
316 return ring->buf.bytes_per_datum; 316 return ring->buf.bytes_per_datum;
317} 317}
318 318
319static int iio_mark_update_needed_sw_rb(struct iio_buffer *r)
320{
321 struct iio_sw_ring_buffer *ring = iio_to_sw_ring(r);
322 ring->update_needed = true;
323 return 0;
324}
325
319static int iio_set_bytes_per_datum_sw_rb(struct iio_buffer *r, size_t bpd) 326static int iio_set_bytes_per_datum_sw_rb(struct iio_buffer *r, size_t bpd)
320{ 327{
321 if (r->bytes_per_datum != bpd) { 328 if (r->bytes_per_datum != bpd) {
322 r->bytes_per_datum = bpd; 329 r->bytes_per_datum = bpd;
323 if (r->access->mark_param_change) 330 iio_mark_update_needed_sw_rb(r);
324 r->access->mark_param_change(r);
325 } 331 }
326 return 0; 332 return 0;
327} 333}
@@ -335,19 +341,11 @@ static int iio_set_length_sw_rb(struct iio_buffer *r, int length)
335{ 341{
336 if (r->length != length) { 342 if (r->length != length) {
337 r->length = length; 343 r->length = length;
338 if (r->access->mark_param_change) 344 iio_mark_update_needed_sw_rb(r);
339 r->access->mark_param_change(r);
340 } 345 }
341 return 0; 346 return 0;
342} 347}
343 348
344static int iio_mark_update_needed_sw_rb(struct iio_buffer *r)
345{
346 struct iio_sw_ring_buffer *ring = iio_to_sw_ring(r);
347 ring->update_needed = true;
348 return 0;
349}
350
351static IIO_BUFFER_ENABLE_ATTR; 349static IIO_BUFFER_ENABLE_ATTR;
352static IIO_BUFFER_LENGTH_ATTR; 350static IIO_BUFFER_LENGTH_ATTR;
353 351
@@ -392,7 +390,6 @@ const struct iio_buffer_access_funcs ring_sw_access_funcs = {
392 .unmark_in_use = &iio_unmark_sw_rb_in_use, 390 .unmark_in_use = &iio_unmark_sw_rb_in_use,
393 .store_to = &iio_store_to_sw_rb, 391 .store_to = &iio_store_to_sw_rb,
394 .read_first_n = &iio_read_first_n_sw_rb, 392 .read_first_n = &iio_read_first_n_sw_rb,
395 .mark_param_change = &iio_mark_update_needed_sw_rb,
396 .request_update = &iio_request_update_sw_rb, 393 .request_update = &iio_request_update_sw_rb,
397 .get_bytes_per_datum = &iio_get_bytes_per_datum_sw_rb, 394 .get_bytes_per_datum = &iio_get_bytes_per_datum_sw_rb,
398 .set_bytes_per_datum = &iio_set_bytes_per_datum_sw_rb, 395 .set_bytes_per_datum = &iio_set_bytes_per_datum_sw_rb,