diff options
| -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; |
