aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/accel/sca3000_ring.c
diff options
context:
space:
mode:
authorJonathan Cameron <jic23@cam.ac.uk>2010-09-21 09:40:51 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-09-21 13:34:40 -0400
commitef26b83090a49dd55dd2e40a3fcfd9872edcaa17 (patch)
treecbf794717fb40bd2acc4114e9ba22cea36cf4dc1 /drivers/staging/iio/accel/sca3000_ring.c
parentbe3ebd1f161efcbabd0e5f7d51b27469739568ea (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.c46
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);
150error_ret: 153error_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: 191error_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,
201static IIO_SCAN_EL_C(accel_x, 0, 0, 0, NULL); 197static IIO_SCAN_EL_C(accel_x, 0, 0, 0, NULL);
202static IIO_SCAN_EL_C(accel_y, 1, 0, 0, NULL); 198static IIO_SCAN_EL_C(accel_y, 1, 0, 0, NULL);
203static IIO_SCAN_EL_C(accel_z, 2, 0, 0, NULL); 199static IIO_SCAN_EL_C(accel_z, 2, 0, 0, NULL);
204static IIO_CONST_ATTR(accel_precision_available, "8 11"); 200static IIO_CONST_ATTR(accel_type_available, "s8/8 s11/16");
205static IIO_DEVICE_ATTR(accel_precision, 201static 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