diff options
author | Jonathan Cameron <jic23@cam.ac.uk> | 2010-09-21 09:40:51 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-09-21 13:34:40 -0400 |
commit | ef26b83090a49dd55dd2e40a3fcfd9872edcaa17 (patch) | |
tree | cbf794717fb40bd2acc4114e9ba22cea36cf4dc1 /drivers/staging/iio/accel/sca3000_ring.c | |
parent | be3ebd1f161efcbabd0e5f7d51b27469739568ea (diff) |
staging: iio: sca3000 add _type attributes for all scan elements
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Manuel Stahl <manuel.stahl@iis.fraunhofer.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/accel/sca3000_ring.c')
-rw-r--r-- | drivers/staging/iio/accel/sca3000_ring.c | 46 |
1 files changed, 21 insertions, 25 deletions
diff --git a/drivers/staging/iio/accel/sca3000_ring.c b/drivers/staging/iio/accel/sca3000_ring.c index c93f85cacbc..15b91e1a4a8 100644 --- a/drivers/staging/iio/accel/sca3000_ring.c +++ b/drivers/staging/iio/accel/sca3000_ring.c | |||
@@ -145,7 +145,10 @@ static ssize_t sca3000_show_ring_bpse(struct device *dev, | |||
145 | ret = sca3000_read_data(st, SCA3000_REG_ADDR_MODE, &rx, 1); | 145 | ret = sca3000_read_data(st, SCA3000_REG_ADDR_MODE, &rx, 1); |
146 | if (ret) | 146 | if (ret) |
147 | goto error_ret; | 147 | goto error_ret; |
148 | len = sprintf(buf, "%d\n", (rx[1] & SCA3000_RING_BUF_8BIT) ? 8 : 11); | 148 | if (rx[1] & SCA3000_RING_BUF_8BIT) |
149 | len = sprintf(buf, "s8/8\n"); | ||
150 | else | ||
151 | len = sprintf(buf, "s11/16\n"); | ||
149 | kfree(rx); | 152 | kfree(rx); |
150 | error_ret: | 153 | error_ret: |
151 | mutex_unlock(&st->lock); | 154 | mutex_unlock(&st->lock); |
@@ -169,30 +172,23 @@ static ssize_t sca3000_store_ring_bpse(struct device *dev, | |||
169 | struct sca3000_state *st = indio_dev->dev_data; | 172 | struct sca3000_state *st = indio_dev->dev_data; |
170 | int ret; | 173 | int ret; |
171 | u8 *rx; | 174 | u8 *rx; |
172 | long val; | ||
173 | ret = strict_strtol(buf, 10, &val); | ||
174 | if (ret) | ||
175 | return ret; | ||
176 | 175 | ||
177 | mutex_lock(&st->lock); | 176 | mutex_lock(&st->lock); |
178 | 177 | ||
179 | ret = sca3000_read_data(st, SCA3000_REG_ADDR_MODE, &rx, 1); | 178 | ret = sca3000_read_data(st, SCA3000_REG_ADDR_MODE, &rx, 1); |
180 | if (!ret) | 179 | if (ret) |
181 | switch (val) { | 180 | goto error_ret; |
182 | case 8: | 181 | if (strncmp(buf, "s8/8", 4) == 0) { |
183 | ret = sca3000_write_reg(st, SCA3000_REG_ADDR_MODE, | 182 | ret = sca3000_write_reg(st, SCA3000_REG_ADDR_MODE, |
184 | rx[1] | SCA3000_RING_BUF_8BIT); | 183 | rx[1] | SCA3000_RING_BUF_8BIT); |
185 | st->bpse = 8; | 184 | st->bpse = 8; |
186 | break; | 185 | } else if (strncmp(buf, "s11/16", 5) == 0) { |
187 | case 11: | 186 | ret = sca3000_write_reg(st, SCA3000_REG_ADDR_MODE, |
188 | ret = sca3000_write_reg(st, SCA3000_REG_ADDR_MODE, | 187 | rx[1] & ~SCA3000_RING_BUF_8BIT); |
189 | rx[1] & ~SCA3000_RING_BUF_8BIT); | 188 | st->bpse = 11; |
190 | st->bpse = 11; | 189 | } else |
191 | break; | 190 | ret = -EINVAL; |
192 | default: | 191 | error_ret: |
193 | ret = -EINVAL; | ||
194 | break; | ||
195 | } | ||
196 | mutex_unlock(&st->lock); | 192 | mutex_unlock(&st->lock); |
197 | 193 | ||
198 | return ret ? ret : len; | 194 | return ret ? ret : len; |
@@ -201,8 +197,8 @@ static ssize_t sca3000_store_ring_bpse(struct device *dev, | |||
201 | static IIO_SCAN_EL_C(accel_x, 0, 0, 0, NULL); | 197 | static IIO_SCAN_EL_C(accel_x, 0, 0, 0, NULL); |
202 | static IIO_SCAN_EL_C(accel_y, 1, 0, 0, NULL); | 198 | static IIO_SCAN_EL_C(accel_y, 1, 0, 0, NULL); |
203 | static IIO_SCAN_EL_C(accel_z, 2, 0, 0, NULL); | 199 | static IIO_SCAN_EL_C(accel_z, 2, 0, 0, NULL); |
204 | static IIO_CONST_ATTR(accel_precision_available, "8 11"); | 200 | static IIO_CONST_ATTR(accel_type_available, "s8/8 s11/16"); |
205 | static IIO_DEVICE_ATTR(accel_precision, | 201 | static IIO_DEVICE_ATTR(accel_type, |
206 | S_IRUGO | S_IWUSR, | 202 | S_IRUGO | S_IWUSR, |
207 | sca3000_show_ring_bpse, | 203 | sca3000_show_ring_bpse, |
208 | sca3000_store_ring_bpse, | 204 | sca3000_store_ring_bpse, |
@@ -212,8 +208,8 @@ static struct attribute *sca3000_scan_el_attrs[] = { | |||
212 | &iio_scan_el_accel_x.dev_attr.attr, | 208 | &iio_scan_el_accel_x.dev_attr.attr, |
213 | &iio_scan_el_accel_y.dev_attr.attr, | 209 | &iio_scan_el_accel_y.dev_attr.attr, |
214 | &iio_scan_el_accel_z.dev_attr.attr, | 210 | &iio_scan_el_accel_z.dev_attr.attr, |
215 | &iio_const_attr_accel_precision_available.dev_attr.attr, | 211 | &iio_const_attr_accel_type_available.dev_attr.attr, |
216 | &iio_dev_attr_accel_precision.dev_attr.attr, | 212 | &iio_dev_attr_accel_type.dev_attr.attr, |
217 | NULL | 213 | NULL |
218 | }; | 214 | }; |
219 | 215 | ||