diff options
author | Jonathan Cameron <jic23@cam.ac.uk> | 2011-05-18 09:42:39 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-05-19 19:15:06 -0400 |
commit | 0ed731d2343f7ff964348377bde81c595f8af9e6 (patch) | |
tree | 471eac40713d4f9105c6cd58a022ae78b21b2b95 /drivers/staging | |
parent | 58f0a255454dc2338d24d9827eadbd9db386acc5 (diff) |
staging:iio: use pollfunc allocation helpers in remaining drivers.
Some didn't get converted the first time around.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/iio/accel/lis3l02dq_ring.c | 16 | ||||
-rw-r--r-- | drivers/staging/iio/adc/ad7298_ring.c | 24 | ||||
-rw-r--r-- | drivers/staging/iio/adc/ad7476_ring.c | 26 | ||||
-rw-r--r-- | drivers/staging/iio/adc/ad7606_ring.c | 24 | ||||
-rw-r--r-- | drivers/staging/iio/adc/ad7887_ring.c | 24 | ||||
-rw-r--r-- | drivers/staging/iio/adc/ad799x_ring.c | 25 | ||||
-rw-r--r-- | drivers/staging/iio/adc/max1363_ring.c | 24 | ||||
-rw-r--r-- | drivers/staging/iio/gyro/adis16260_ring.c | 23 | ||||
-rw-r--r-- | drivers/staging/iio/meter/ade7758_ring.c | 22 |
9 files changed, 79 insertions, 129 deletions
diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c index 1c208d268c73..8d5c8ac7db51 100644 --- a/drivers/staging/iio/accel/lis3l02dq_ring.c +++ b/drivers/staging/iio/accel/lis3l02dq_ring.c | |||
@@ -344,8 +344,7 @@ void lis3l02dq_remove_trigger(struct iio_dev *indio_dev) | |||
344 | 344 | ||
345 | void lis3l02dq_unconfigure_ring(struct iio_dev *indio_dev) | 345 | void lis3l02dq_unconfigure_ring(struct iio_dev *indio_dev) |
346 | { | 346 | { |
347 | kfree(indio_dev->pollfunc->name); | 347 | iio_dealloc_pollfunc(indio_dev->pollfunc); |
348 | kfree(indio_dev->pollfunc); | ||
349 | lis3l02dq_free_buf(indio_dev->ring); | 348 | lis3l02dq_free_buf(indio_dev->ring); |
350 | } | 349 | } |
351 | 350 | ||
@@ -448,18 +447,17 @@ int lis3l02dq_configure_ring(struct iio_dev *indio_dev) | |||
448 | iio_scan_mask_set(ring, 2); | 447 | iio_scan_mask_set(ring, 2); |
449 | 448 | ||
450 | /* Functions are NULL as we set handler below */ | 449 | /* Functions are NULL as we set handler below */ |
451 | indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL); | 450 | indio_dev->pollfunc = iio_alloc_pollfunc(&iio_pollfunc_store_time, |
451 | &lis3l02dq_trigger_handler, | ||
452 | 0, | ||
453 | indio_dev, | ||
454 | "lis3l02dq_consumer%d", | ||
455 | indio_dev->id); | ||
452 | 456 | ||
453 | if (indio_dev->pollfunc == NULL) { | 457 | if (indio_dev->pollfunc == NULL) { |
454 | ret = -ENOMEM; | 458 | ret = -ENOMEM; |
455 | goto error_iio_sw_rb_free; | 459 | goto error_iio_sw_rb_free; |
456 | } | 460 | } |
457 | indio_dev->pollfunc->private_data = indio_dev; | ||
458 | indio_dev->pollfunc->thread = &lis3l02dq_trigger_handler; | ||
459 | indio_dev->pollfunc->h = &iio_pollfunc_store_time; | ||
460 | indio_dev->pollfunc->type = 0; | ||
461 | indio_dev->pollfunc->name | ||
462 | = kasprintf(GFP_KERNEL, "lis3l02dq_consumer%d", indio_dev->id); | ||
463 | 461 | ||
464 | indio_dev->modes |= INDIO_RING_TRIGGERED; | 462 | indio_dev->modes |= INDIO_RING_TRIGGERED; |
465 | return 0; | 463 | return 0; |
diff --git a/drivers/staging/iio/adc/ad7298_ring.c b/drivers/staging/iio/adc/ad7298_ring.c index d0a0aeaaf398..a04c03352624 100644 --- a/drivers/staging/iio/adc/ad7298_ring.c +++ b/drivers/staging/iio/adc/ad7298_ring.c | |||
@@ -164,20 +164,18 @@ int ad7298_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
164 | /* Effectively select the ring buffer implementation */ | 164 | /* Effectively select the ring buffer implementation */ |
165 | indio_dev->ring->access = &ring_sw_access_funcs; | 165 | indio_dev->ring->access = &ring_sw_access_funcs; |
166 | 166 | ||
167 | indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL); | 167 | indio_dev->pollfunc = iio_alloc_pollfunc(NULL, |
168 | &ad7298_trigger_handler, | ||
169 | IRQF_ONESHOT, | ||
170 | indio_dev, | ||
171 | "ad7298_consumer%d", | ||
172 | indio_dev->id); | ||
173 | |||
168 | if (indio_dev->pollfunc == NULL) { | 174 | if (indio_dev->pollfunc == NULL) { |
169 | ret = -ENOMEM; | 175 | ret = -ENOMEM; |
170 | goto error_deallocate_sw_rb; | 176 | goto error_deallocate_sw_rb; |
171 | } | 177 | } |
172 | indio_dev->pollfunc->private_data = indio_dev; | 178 | |
173 | indio_dev->pollfunc->thread = &ad7298_trigger_handler; | ||
174 | indio_dev->pollfunc->type = IRQF_ONESHOT; | ||
175 | indio_dev->pollfunc->name = | ||
176 | kasprintf(GFP_KERNEL, "ad7298_consumer%d", indio_dev->id); | ||
177 | if (indio_dev->pollfunc->name == NULL) { | ||
178 | ret = -ENOMEM; | ||
179 | goto error_free_poll_func; | ||
180 | } | ||
181 | /* Ring buffer functions - here trigger setup related */ | 179 | /* Ring buffer functions - here trigger setup related */ |
182 | indio_dev->ring->setup_ops = &ad7298_ring_setup_ops; | 180 | indio_dev->ring->setup_ops = &ad7298_ring_setup_ops; |
183 | indio_dev->ring->scan_timestamp = true; | 181 | indio_dev->ring->scan_timestamp = true; |
@@ -185,8 +183,7 @@ int ad7298_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
185 | /* Flag that polled ring buffering is possible */ | 183 | /* Flag that polled ring buffering is possible */ |
186 | indio_dev->modes |= INDIO_RING_TRIGGERED; | 184 | indio_dev->modes |= INDIO_RING_TRIGGERED; |
187 | return 0; | 185 | return 0; |
188 | error_free_poll_func: | 186 | |
189 | kfree(indio_dev->pollfunc); | ||
190 | error_deallocate_sw_rb: | 187 | error_deallocate_sw_rb: |
191 | iio_sw_rb_free(indio_dev->ring); | 188 | iio_sw_rb_free(indio_dev->ring); |
192 | error_ret: | 189 | error_ret: |
@@ -200,7 +197,6 @@ void ad7298_ring_cleanup(struct iio_dev *indio_dev) | |||
200 | iio_trigger_dettach_poll_func(indio_dev->trig, | 197 | iio_trigger_dettach_poll_func(indio_dev->trig, |
201 | indio_dev->pollfunc); | 198 | indio_dev->pollfunc); |
202 | } | 199 | } |
203 | kfree(indio_dev->pollfunc->name); | 200 | iio_dealloc_pollfunc(indio_dev->pollfunc); |
204 | kfree(indio_dev->pollfunc); | ||
205 | iio_sw_rb_free(indio_dev->ring); | 201 | iio_sw_rb_free(indio_dev->ring); |
206 | } | 202 | } |
diff --git a/drivers/staging/iio/adc/ad7476_ring.c b/drivers/staging/iio/adc/ad7476_ring.c index 1d696ef5f4de..b1b2ee2c56b0 100644 --- a/drivers/staging/iio/adc/ad7476_ring.c +++ b/drivers/staging/iio/adc/ad7476_ring.c | |||
@@ -125,22 +125,18 @@ int ad7476_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
125 | } | 125 | } |
126 | /* Effectively select the ring buffer implementation */ | 126 | /* Effectively select the ring buffer implementation */ |
127 | indio_dev->ring->access = &ring_sw_access_funcs; | 127 | indio_dev->ring->access = &ring_sw_access_funcs; |
128 | indio_dev->pollfunc = kzalloc(sizeof(indio_dev->pollfunc), GFP_KERNEL); | 128 | indio_dev->pollfunc |
129 | = iio_alloc_pollfunc(NULL, | ||
130 | &ad7476_trigger_handler, | ||
131 | IRQF_ONESHOT, | ||
132 | indio_dev, | ||
133 | "%s_consumer%d", | ||
134 | spi_get_device_id(st->spi)->name, | ||
135 | indio_dev->id); | ||
129 | if (indio_dev->pollfunc == NULL) { | 136 | if (indio_dev->pollfunc == NULL) { |
130 | ret = -ENOMEM; | 137 | ret = -ENOMEM; |
131 | goto error_deallocate_sw_rb; | 138 | goto error_deallocate_sw_rb; |
132 | } | 139 | } |
133 | indio_dev->pollfunc->private_data = indio_dev; | ||
134 | indio_dev->pollfunc->thread = &ad7476_trigger_handler; | ||
135 | indio_dev->pollfunc->type = IRQF_ONESHOT; | ||
136 | indio_dev->pollfunc->name | ||
137 | = kasprintf(GFP_KERNEL, "%s_consumer%d", | ||
138 | spi_get_device_id(st->spi)->name, | ||
139 | indio_dev->id); | ||
140 | if (indio_dev->pollfunc->name == NULL) { | ||
141 | ret = -ENOMEM; | ||
142 | goto error_free_pollfunc; | ||
143 | } | ||
144 | 140 | ||
145 | /* Ring buffer functions - here trigger setup related */ | 141 | /* Ring buffer functions - here trigger setup related */ |
146 | indio_dev->ring->setup_ops = &ad7476_ring_setup_ops; | 142 | indio_dev->ring->setup_ops = &ad7476_ring_setup_ops; |
@@ -149,8 +145,7 @@ int ad7476_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
149 | /* Flag that polled ring buffering is possible */ | 145 | /* Flag that polled ring buffering is possible */ |
150 | indio_dev->modes |= INDIO_RING_TRIGGERED; | 146 | indio_dev->modes |= INDIO_RING_TRIGGERED; |
151 | return 0; | 147 | return 0; |
152 | error_free_pollfunc: | 148 | |
153 | kfree(indio_dev->pollfunc); | ||
154 | error_deallocate_sw_rb: | 149 | error_deallocate_sw_rb: |
155 | iio_sw_rb_free(indio_dev->ring); | 150 | iio_sw_rb_free(indio_dev->ring); |
156 | error_ret: | 151 | error_ret: |
@@ -165,7 +160,6 @@ void ad7476_ring_cleanup(struct iio_dev *indio_dev) | |||
165 | iio_trigger_dettach_poll_func(indio_dev->trig, | 160 | iio_trigger_dettach_poll_func(indio_dev->trig, |
166 | indio_dev->pollfunc); | 161 | indio_dev->pollfunc); |
167 | } | 162 | } |
168 | kfree(indio_dev->pollfunc->name); | 163 | iio_dealloc_pollfunc(indio_dev->pollfunc); |
169 | kfree(indio_dev->pollfunc); | ||
170 | iio_sw_rb_free(indio_dev->ring); | 164 | iio_sw_rb_free(indio_dev->ring); |
171 | } | 165 | } |
diff --git a/drivers/staging/iio/adc/ad7606_ring.c b/drivers/staging/iio/adc/ad7606_ring.c index 85cde6a92070..a199bf48396c 100644 --- a/drivers/staging/iio/adc/ad7606_ring.c +++ b/drivers/staging/iio/adc/ad7606_ring.c | |||
@@ -169,22 +169,18 @@ int ad7606_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
169 | 169 | ||
170 | /* Effectively select the ring buffer implementation */ | 170 | /* Effectively select the ring buffer implementation */ |
171 | indio_dev->ring->access = &ring_sw_access_funcs; | 171 | indio_dev->ring->access = &ring_sw_access_funcs; |
172 | indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL); | 172 | indio_dev->pollfunc = iio_alloc_pollfunc(&ad7606_trigger_handler_th_bh, |
173 | &ad7606_trigger_handler_th_bh, | ||
174 | 0, | ||
175 | indio_dev, | ||
176 | "%s_consumer%d", | ||
177 | indio_dev->name, | ||
178 | indio_dev->id); | ||
173 | if (indio_dev->pollfunc == NULL) { | 179 | if (indio_dev->pollfunc == NULL) { |
174 | ret = -ENOMEM; | 180 | ret = -ENOMEM; |
175 | goto error_deallocate_sw_rb; | 181 | goto error_deallocate_sw_rb; |
176 | } | 182 | } |
177 | 183 | ||
178 | indio_dev->pollfunc->private_data = indio_dev; | ||
179 | indio_dev->pollfunc->h = &ad7606_trigger_handler_th_bh; | ||
180 | indio_dev->pollfunc->thread = &ad7606_trigger_handler_th_bh; | ||
181 | indio_dev->pollfunc->name = | ||
182 | kasprintf(GFP_KERNEL, "%s_consumer%d", indio_dev->name, | ||
183 | indio_dev->id); | ||
184 | if (indio_dev->pollfunc->name == NULL) { | ||
185 | ret = -ENOMEM; | ||
186 | goto error_free_poll_func; | ||
187 | } | ||
188 | /* Ring buffer functions - here trigger setup related */ | 184 | /* Ring buffer functions - here trigger setup related */ |
189 | 185 | ||
190 | indio_dev->ring->setup_ops = &ad7606_ring_setup_ops; | 186 | indio_dev->ring->setup_ops = &ad7606_ring_setup_ops; |
@@ -195,8 +191,7 @@ int ad7606_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
195 | /* Flag that polled ring buffering is possible */ | 191 | /* Flag that polled ring buffering is possible */ |
196 | indio_dev->modes |= INDIO_RING_TRIGGERED; | 192 | indio_dev->modes |= INDIO_RING_TRIGGERED; |
197 | return 0; | 193 | return 0; |
198 | error_free_poll_func: | 194 | |
199 | kfree(indio_dev->pollfunc); | ||
200 | error_deallocate_sw_rb: | 195 | error_deallocate_sw_rb: |
201 | iio_sw_rb_free(indio_dev->ring); | 196 | iio_sw_rb_free(indio_dev->ring); |
202 | error_ret: | 197 | error_ret: |
@@ -210,7 +205,6 @@ void ad7606_ring_cleanup(struct iio_dev *indio_dev) | |||
210 | iio_trigger_dettach_poll_func(indio_dev->trig, | 205 | iio_trigger_dettach_poll_func(indio_dev->trig, |
211 | indio_dev->pollfunc); | 206 | indio_dev->pollfunc); |
212 | } | 207 | } |
213 | kfree(indio_dev->pollfunc->name); | 208 | iio_dealloc_pollfunc(indio_dev->pollfunc); |
214 | kfree(indio_dev->pollfunc); | ||
215 | iio_sw_rb_free(indio_dev->ring); | 209 | iio_sw_rb_free(indio_dev->ring); |
216 | } | 210 | } |
diff --git a/drivers/staging/iio/adc/ad7887_ring.c b/drivers/staging/iio/adc/ad7887_ring.c index f3485b372171..0e4a5f4fd892 100644 --- a/drivers/staging/iio/adc/ad7887_ring.c +++ b/drivers/staging/iio/adc/ad7887_ring.c | |||
@@ -166,30 +166,23 @@ int ad7887_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
166 | } | 166 | } |
167 | /* Effectively select the ring buffer implementation */ | 167 | /* Effectively select the ring buffer implementation */ |
168 | indio_dev->ring->access = &ring_sw_access_funcs; | 168 | indio_dev->ring->access = &ring_sw_access_funcs; |
169 | indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL); | 169 | indio_dev->pollfunc = iio_alloc_pollfunc(&iio_pollfunc_store_time, |
170 | &ad7887_trigger_handler, | ||
171 | IRQF_ONESHOT, | ||
172 | indio_dev, | ||
173 | "ad7887_consumer%d", | ||
174 | indio_dev->id); | ||
170 | if (indio_dev->pollfunc == NULL) { | 175 | if (indio_dev->pollfunc == NULL) { |
171 | ret = -ENOMEM; | 176 | ret = -ENOMEM; |
172 | goto error_deallocate_sw_rb; | 177 | goto error_deallocate_sw_rb; |
173 | } | 178 | } |
174 | |||
175 | indio_dev->pollfunc->private_data = indio_dev; | ||
176 | indio_dev->pollfunc->h = &iio_pollfunc_store_time; | ||
177 | indio_dev->pollfunc->thread = &ad7887_trigger_handler; | ||
178 | indio_dev->pollfunc->type = IRQF_ONESHOT; | ||
179 | indio_dev->pollfunc->name = | ||
180 | kasprintf(GFP_KERNEL, "ad7887_consumer%d", indio_dev->id); | ||
181 | if (indio_dev->pollfunc->name == NULL) { | ||
182 | ret = -ENOMEM; | ||
183 | goto error_free_pollfunc; | ||
184 | } | ||
185 | /* Ring buffer functions - here trigger setup related */ | 179 | /* Ring buffer functions - here trigger setup related */ |
186 | indio_dev->ring->setup_ops = &ad7887_ring_setup_ops; | 180 | indio_dev->ring->setup_ops = &ad7887_ring_setup_ops; |
187 | 181 | ||
188 | /* Flag that polled ring buffering is possible */ | 182 | /* Flag that polled ring buffering is possible */ |
189 | indio_dev->modes |= INDIO_RING_TRIGGERED; | 183 | indio_dev->modes |= INDIO_RING_TRIGGERED; |
190 | return 0; | 184 | return 0; |
191 | error_free_pollfunc: | 185 | |
192 | kfree(indio_dev->pollfunc); | ||
193 | error_deallocate_sw_rb: | 186 | error_deallocate_sw_rb: |
194 | iio_sw_rb_free(indio_dev->ring); | 187 | iio_sw_rb_free(indio_dev->ring); |
195 | error_ret: | 188 | error_ret: |
@@ -204,7 +197,6 @@ void ad7887_ring_cleanup(struct iio_dev *indio_dev) | |||
204 | iio_trigger_dettach_poll_func(indio_dev->trig, | 197 | iio_trigger_dettach_poll_func(indio_dev->trig, |
205 | indio_dev->pollfunc); | 198 | indio_dev->pollfunc); |
206 | } | 199 | } |
207 | kfree(indio_dev->pollfunc->name); | 200 | iio_dealloc_pollfunc(indio_dev->pollfunc); |
208 | kfree(indio_dev->pollfunc); | ||
209 | iio_sw_rb_free(indio_dev->ring); | 201 | iio_sw_rb_free(indio_dev->ring); |
210 | } | 202 | } |
diff --git a/drivers/staging/iio/adc/ad799x_ring.c b/drivers/staging/iio/adc/ad799x_ring.c index 57dca2075487..1ae8857b3d25 100644 --- a/drivers/staging/iio/adc/ad799x_ring.c +++ b/drivers/staging/iio/adc/ad799x_ring.c | |||
@@ -179,21 +179,18 @@ int ad799x_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
179 | } | 179 | } |
180 | /* Effectively select the ring buffer implementation */ | 180 | /* Effectively select the ring buffer implementation */ |
181 | indio_dev->ring->access = &ring_sw_access_funcs; | 181 | indio_dev->ring->access = &ring_sw_access_funcs; |
182 | indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL); | 182 | indio_dev->pollfunc = iio_alloc_pollfunc(NULL, |
183 | &ad799x_trigger_handler, | ||
184 | IRQF_ONESHOT, | ||
185 | indio_dev, | ||
186 | "%s_consumer%d", | ||
187 | indio_dev->name, | ||
188 | indio_dev->id); | ||
183 | if (indio_dev->pollfunc == NULL) { | 189 | if (indio_dev->pollfunc == NULL) { |
184 | ret = -ENOMEM; | 190 | ret = -ENOMEM; |
185 | goto error_deallocate_sw_rb; | 191 | goto error_deallocate_sw_rb; |
186 | } | 192 | } |
187 | indio_dev->pollfunc->private_data = indio_dev; | 193 | |
188 | indio_dev->pollfunc->thread = &ad799x_trigger_handler; | ||
189 | indio_dev->pollfunc->type = IRQF_ONESHOT; | ||
190 | indio_dev->pollfunc->name = | ||
191 | kasprintf(GFP_KERNEL, "%s_consumer%d", indio_dev->name, | ||
192 | indio_dev->id); | ||
193 | if (indio_dev->pollfunc->name == NULL) { | ||
194 | ret = -ENOMEM; | ||
195 | goto error_free_poll_func; | ||
196 | } | ||
197 | /* Ring buffer functions - here trigger setup related */ | 194 | /* Ring buffer functions - here trigger setup related */ |
198 | indio_dev->ring->setup_ops = &ad799x_buf_setup_ops; | 195 | indio_dev->ring->setup_ops = &ad799x_buf_setup_ops; |
199 | indio_dev->ring->scan_timestamp = true; | 196 | indio_dev->ring->scan_timestamp = true; |
@@ -201,8 +198,7 @@ int ad799x_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
201 | /* Flag that polled ring buffering is possible */ | 198 | /* Flag that polled ring buffering is possible */ |
202 | indio_dev->modes |= INDIO_RING_TRIGGERED; | 199 | indio_dev->modes |= INDIO_RING_TRIGGERED; |
203 | return 0; | 200 | return 0; |
204 | error_free_poll_func: | 201 | |
205 | kfree(indio_dev->pollfunc); | ||
206 | error_deallocate_sw_rb: | 202 | error_deallocate_sw_rb: |
207 | iio_sw_rb_free(indio_dev->ring); | 203 | iio_sw_rb_free(indio_dev->ring); |
208 | error_ret: | 204 | error_ret: |
@@ -217,7 +213,6 @@ void ad799x_ring_cleanup(struct iio_dev *indio_dev) | |||
217 | iio_trigger_dettach_poll_func(indio_dev->trig, | 213 | iio_trigger_dettach_poll_func(indio_dev->trig, |
218 | indio_dev->pollfunc); | 214 | indio_dev->pollfunc); |
219 | } | 215 | } |
220 | kfree(indio_dev->pollfunc->name); | 216 | iio_dealloc_pollfunc(indio_dev->pollfunc); |
221 | kfree(indio_dev->pollfunc); | ||
222 | iio_sw_rb_free(indio_dev->ring); | 217 | iio_sw_rb_free(indio_dev->ring); |
223 | } | 218 | } |
diff --git a/drivers/staging/iio/adc/max1363_ring.c b/drivers/staging/iio/adc/max1363_ring.c index 1587aec1238f..f43befd1f776 100644 --- a/drivers/staging/iio/adc/max1363_ring.c +++ b/drivers/staging/iio/adc/max1363_ring.c | |||
@@ -169,21 +169,17 @@ int max1363_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
169 | ret = -ENOMEM; | 169 | ret = -ENOMEM; |
170 | goto error_ret; | 170 | goto error_ret; |
171 | } | 171 | } |
172 | indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL); | 172 | indio_dev->pollfunc = iio_alloc_pollfunc(NULL, |
173 | &max1363_trigger_handler, | ||
174 | IRQF_ONESHOT, | ||
175 | indio_dev, | ||
176 | "%s_consumer%d", | ||
177 | st->client->name, | ||
178 | indio_dev->id); | ||
173 | if (indio_dev->pollfunc == NULL) { | 179 | if (indio_dev->pollfunc == NULL) { |
174 | ret = -ENOMEM; | 180 | ret = -ENOMEM; |
175 | goto error_deallocate_sw_rb; | 181 | goto error_deallocate_sw_rb; |
176 | } | 182 | } |
177 | indio_dev->pollfunc->private_data = indio_dev; | ||
178 | indio_dev->pollfunc->thread = &max1363_trigger_handler; | ||
179 | indio_dev->pollfunc->type = IRQF_ONESHOT; | ||
180 | indio_dev->pollfunc->name = | ||
181 | kasprintf(GFP_KERNEL, "%s_consumer%d", | ||
182 | st->client->name, indio_dev->id); | ||
183 | if (indio_dev->pollfunc->name == NULL) { | ||
184 | ret = -ENOMEM; | ||
185 | goto error_free_pollfunc; | ||
186 | } | ||
187 | /* Effectively select the ring buffer implementation */ | 183 | /* Effectively select the ring buffer implementation */ |
188 | indio_dev->ring->access = &ring_sw_access_funcs; | 184 | indio_dev->ring->access = &ring_sw_access_funcs; |
189 | /* Ring buffer functions - here trigger setup related */ | 185 | /* Ring buffer functions - here trigger setup related */ |
@@ -193,8 +189,7 @@ int max1363_register_ring_funcs_and_init(struct iio_dev *indio_dev) | |||
193 | indio_dev->modes |= INDIO_RING_TRIGGERED; | 189 | indio_dev->modes |= INDIO_RING_TRIGGERED; |
194 | 190 | ||
195 | return 0; | 191 | return 0; |
196 | error_free_pollfunc: | 192 | |
197 | kfree(indio_dev->pollfunc); | ||
198 | error_deallocate_sw_rb: | 193 | error_deallocate_sw_rb: |
199 | iio_sw_rb_free(indio_dev->ring); | 194 | iio_sw_rb_free(indio_dev->ring); |
200 | error_ret: | 195 | error_ret: |
@@ -209,7 +204,6 @@ void max1363_ring_cleanup(struct iio_dev *indio_dev) | |||
209 | iio_trigger_dettach_poll_func(indio_dev->trig, | 204 | iio_trigger_dettach_poll_func(indio_dev->trig, |
210 | indio_dev->pollfunc); | 205 | indio_dev->pollfunc); |
211 | } | 206 | } |
212 | kfree(indio_dev->pollfunc->name); | 207 | iio_dealloc_pollfunc(indio_dev->pollfunc); |
213 | kfree(indio_dev->pollfunc); | ||
214 | iio_sw_rb_free(indio_dev->ring); | 208 | iio_sw_rb_free(indio_dev->ring); |
215 | } | 209 | } |
diff --git a/drivers/staging/iio/gyro/adis16260_ring.c b/drivers/staging/iio/gyro/adis16260_ring.c index 85586e42380c..a0925044eaa5 100644 --- a/drivers/staging/iio/gyro/adis16260_ring.c +++ b/drivers/staging/iio/gyro/adis16260_ring.c | |||
@@ -101,8 +101,7 @@ static irqreturn_t adis16260_trigger_handler(int irq, void *p) | |||
101 | 101 | ||
102 | void adis16260_unconfigure_ring(struct iio_dev *indio_dev) | 102 | void adis16260_unconfigure_ring(struct iio_dev *indio_dev) |
103 | { | 103 | { |
104 | kfree(indio_dev->pollfunc->name); | 104 | iio_dealloc_pollfunc(indio_dev->pollfunc); |
105 | kfree(indio_dev->pollfunc); | ||
106 | iio_sw_rb_free(indio_dev->ring); | 105 | iio_sw_rb_free(indio_dev->ring); |
107 | } | 106 | } |
108 | 107 | ||
@@ -137,26 +136,20 @@ int adis16260_configure_ring(struct iio_dev *indio_dev) | |||
137 | iio_scan_mask_set(ring, ADIS16260_SCAN_TEMP); | 136 | iio_scan_mask_set(ring, ADIS16260_SCAN_TEMP); |
138 | iio_scan_mask_set(ring, ADIS16260_SCAN_ANGL); | 137 | iio_scan_mask_set(ring, ADIS16260_SCAN_ANGL); |
139 | 138 | ||
140 | indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL); | 139 | indio_dev->pollfunc = iio_alloc_pollfunc(&iio_pollfunc_store_time, |
140 | &adis16260_trigger_handler, | ||
141 | IRQF_ONESHOT, | ||
142 | indio_dev, | ||
143 | "adis16260_consumer%d", | ||
144 | indio_dev->id); | ||
141 | if (indio_dev->pollfunc == NULL) { | 145 | if (indio_dev->pollfunc == NULL) { |
142 | ret = -ENOMEM; | 146 | ret = -ENOMEM; |
143 | goto error_iio_sw_rb_free; | 147 | goto error_iio_sw_rb_free; |
144 | } | 148 | } |
145 | indio_dev->pollfunc->private_data = indio_dev; | ||
146 | indio_dev->pollfunc->h = &iio_pollfunc_store_time; | ||
147 | indio_dev->pollfunc->thread = &adis16260_trigger_handler; | ||
148 | indio_dev->pollfunc->type = IRQF_ONESHOT; | ||
149 | indio_dev->pollfunc->name = | ||
150 | kasprintf(GFP_KERNEL, "adis16260_consumer%d", indio_dev->id); | ||
151 | if (indio_dev->pollfunc->name == NULL) { | ||
152 | ret = -ENOMEM; | ||
153 | goto error_free_pollfunc; | ||
154 | } | ||
155 | 149 | ||
156 | indio_dev->modes |= INDIO_RING_TRIGGERED; | 150 | indio_dev->modes |= INDIO_RING_TRIGGERED; |
157 | return 0; | 151 | return 0; |
158 | error_free_pollfunc: | 152 | |
159 | kfree(indio_dev->pollfunc); | ||
160 | error_iio_sw_rb_free: | 153 | error_iio_sw_rb_free: |
161 | iio_sw_rb_free(indio_dev->ring); | 154 | iio_sw_rb_free(indio_dev->ring); |
162 | return ret; | 155 | return ret; |
diff --git a/drivers/staging/iio/meter/ade7758_ring.c b/drivers/staging/iio/meter/ade7758_ring.c index a5e48c1bd424..b89b7f882e84 100644 --- a/drivers/staging/iio/meter/ade7758_ring.c +++ b/drivers/staging/iio/meter/ade7758_ring.c | |||
@@ -142,8 +142,7 @@ void ade7758_unconfigure_ring(struct iio_dev *indio_dev) | |||
142 | iio_trigger_dettach_poll_func(indio_dev->trig, | 142 | iio_trigger_dettach_poll_func(indio_dev->trig, |
143 | indio_dev->pollfunc); | 143 | indio_dev->pollfunc); |
144 | } | 144 | } |
145 | kfree(indio_dev->pollfunc->name); | 145 | iio_dealloc_pollfunc(indio_dev->pollfunc); |
146 | kfree(indio_dev->pollfunc); | ||
147 | iio_sw_rb_free(indio_dev->ring); | 146 | iio_sw_rb_free(indio_dev->ring); |
148 | } | 147 | } |
149 | 148 | ||
@@ -163,20 +162,17 @@ int ade7758_configure_ring(struct iio_dev *indio_dev) | |||
163 | indio_dev->ring->setup_ops = &ade7758_ring_setup_ops; | 162 | indio_dev->ring->setup_ops = &ade7758_ring_setup_ops; |
164 | indio_dev->ring->owner = THIS_MODULE; | 163 | indio_dev->ring->owner = THIS_MODULE; |
165 | 164 | ||
166 | indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL); | 165 | indio_dev->pollfunc = iio_alloc_pollfunc(&iio_pollfunc_store_time, |
166 | &ade7758_trigger_handler, | ||
167 | 0, | ||
168 | indio_dev, | ||
169 | "ade7759_consumer%d", | ||
170 | indio_dev->id); | ||
167 | if (indio_dev->pollfunc == NULL) { | 171 | if (indio_dev->pollfunc == NULL) { |
168 | ret = -ENOMEM; | 172 | ret = -ENOMEM; |
169 | goto error_iio_sw_rb_free; | 173 | goto error_iio_sw_rb_free; |
170 | } | 174 | } |
171 | indio_dev->pollfunc->private_data = indio_dev; | 175 | |
172 | indio_dev->pollfunc->h = &iio_pollfunc_store_time; | ||
173 | indio_dev->pollfunc->thread = &ade7758_trigger_handler; | ||
174 | indio_dev->pollfunc->name | ||
175 | = kasprintf(GFP_KERNEL, "ade7759_consumer%d", indio_dev->id); | ||
176 | if (indio_dev->pollfunc->name == NULL) { | ||
177 | ret = -ENOMEM; | ||
178 | goto error_free_pollfunc; | ||
179 | } | ||
180 | indio_dev->modes |= INDIO_RING_TRIGGERED; | 176 | indio_dev->modes |= INDIO_RING_TRIGGERED; |
181 | 177 | ||
182 | st->tx_buf[0] = ADE7758_READ_REG(ADE7758_RSTATUS); | 178 | st->tx_buf[0] = ADE7758_READ_REG(ADE7758_RSTATUS); |
@@ -214,8 +210,6 @@ int ade7758_configure_ring(struct iio_dev *indio_dev) | |||
214 | 210 | ||
215 | return 0; | 211 | return 0; |
216 | 212 | ||
217 | error_free_pollfunc: | ||
218 | kfree(indio_dev->pollfunc); | ||
219 | error_iio_sw_rb_free: | 213 | error_iio_sw_rb_free: |
220 | iio_sw_rb_free(indio_dev->ring); | 214 | iio_sw_rb_free(indio_dev->ring); |
221 | return ret; | 215 | return ret; |