On Thu, May 13, 2010 at 4:53 AM, Jonathan Cameron <jic23@xxxxxxxxx> wrote: > Signed-off-by: Jonathan Cameron <jic23@xxxxxxxxx> > --- > drivers/staging/iio/accel/adis16220.h | 3 - > drivers/staging/iio/accel/adis16220_core.c | 106 +++++++++++++++------------- > 2 files changed, 56 insertions(+), 53 deletions(-) > > diff --git a/drivers/staging/iio/accel/adis16220.h b/drivers/staging/iio/accel/adis16220.h > index 6b49f70..2abf485 100644 > --- a/drivers/staging/iio/accel/adis16220.h > +++ b/drivers/staging/iio/accel/adis16220.h > @@ -141,9 +141,6 @@ struct adis16220_state { > struct iio_dev *indio_dev; > u8 *tx; > u8 *rx; > - struct bin_attribute accel_bin; > - struct bin_attribute adc1_bin; > - struct bin_attribute adc2_bin; > struct mutex buf_lock; > }; > > diff --git a/drivers/staging/iio/accel/adis16220_core.c b/drivers/staging/iio/accel/adis16220_core.c > index 8b845d9..e60de4a 100644 > --- a/drivers/staging/iio/accel/adis16220_core.c > +++ b/drivers/staging/iio/accel/adis16220_core.c > @@ -27,8 +27,6 @@ > > #define DRIVER_NAME "adis16220" > > -static int adis16220_check_status(struct device *dev); > - > /** > * adis16220_spi_write_reg_8() - write single byte to a register > * @dev: device associated with child of actual device (iio_dev or iio_trig) > @@ -133,8 +131,6 @@ static int adis16220_spi_read_reg_16(struct device *dev, > mutex_lock(&st->buf_lock); > st->tx[0] = ADIS16220_READ_REG(lower_reg_address); > st->tx[1] = 0; > - st->tx[2] = 0; > - st->tx[3] = 0; > > spi_message_init(&msg); > spi_message_add_tail(&xfers[0], &msg); > @@ -275,23 +271,6 @@ static ssize_t adis16220_write_capture(struct device *dev, > return -1; > } > > -static int adis16220_self_test(struct device *dev) > -{ > - int ret; > - ret = adis16220_spi_write_reg_16(dev, > - ADIS16220_MSC_CTRL, > - ADIS16220_MSC_CTRL_SELF_TEST_EN); > - if (ret) { > - dev_err(dev, "problem starting self test"); > - goto err_ret; > - } > - > - adis16220_check_status(dev); > - > -err_ret: > - return ret; > -} > - > static int adis16220_check_status(struct device *dev) > { > u16 status; > @@ -320,6 +299,23 @@ error_ret: > return ret; > } > > +static int adis16220_self_test(struct device *dev) > +{ > + int ret; > + ret = adis16220_spi_write_reg_16(dev, > + ADIS16220_MSC_CTRL, > + ADIS16220_MSC_CTRL_SELF_TEST_EN); > + if (ret) { > + dev_err(dev, "problem starting self test"); > + goto err_ret; > + } > + > + adis16220_check_status(dev); > + > +err_ret: > + return ret; > +} > + > static int adis16220_initial_setup(struct adis16220_state *st) > { > int ret; > @@ -433,6 +429,15 @@ static ssize_t adis16220_accel_bin_read(struct kobject *kobj, > ADIS16220_CAPT_BUFA); > } > > +static struct bin_attribute accel_bin = { > + .attr = { > + .name = "accel_bin", > + .mode = S_IRUSR, Here i can't understand why read permission is only given to user(probably root). Why not S_IRUGO which means (S_IRUSR|S_IRGRP|S_IROTH) ? > + }, > + .read = adis16220_accel_bin_read, > + .size = ADIS16220_CAPTURE_SIZE, > +}; > + > static ssize_t adis16220_adc1_bin_read(struct kobject *kobj, > struct bin_attribute *attr, > char *buf, loff_t off, > @@ -447,6 +452,15 @@ static ssize_t adis16220_adc1_bin_read(struct kobject *kobj, > ADIS16220_CAPT_BUF1); > } > > +static struct bin_attribute adc1_bin = { > + .attr = { > + .name = "in0_bin", > + .mode = S_IRUSR, > + }, > + .read = adis16220_adc1_bin_read, > + .size = ADIS16220_CAPTURE_SIZE, > +}; > + > static ssize_t adis16220_adc2_bin_read(struct kobject *kobj, > struct bin_attribute *attr, > char *buf, loff_t off, > @@ -461,6 +475,16 @@ static ssize_t adis16220_adc2_bin_read(struct kobject *kobj, > ADIS16220_CAPT_BUF2); > } > > + > +static struct bin_attribute adc2_bin = { > + .attr = { > + .name = "in1_bin", > + .mode = S_IRUSR, > + }, > + .read = adis16220_adc2_bin_read, > + .size = ADIS16220_CAPTURE_SIZE, > +}; > + > static IIO_DEV_ATTR_IN_NAMED_RAW(supply, adis16220_read_12bit_unsigned, > ADIS16220_CAPT_SUPPLY); > static IIO_CONST_ATTR(in_supply_scale, "0.0012207"); > @@ -481,12 +505,12 @@ static IIO_DEV_ATTR_IN_RAW(1, adis16220_read_16bit, ADIS16220_CAPT_BUF2); > static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, > adis16220_write_reset, 0); > > -#define IIO_DEV_ATTR_CAPTURE(_store) \ > +#define IIO_DEV_ATTR_CAPTURE(_store) \ > IIO_DEVICE_ATTR(capture, S_IWUGO, NULL, _store, 0) > > static IIO_DEV_ATTR_CAPTURE(adis16220_write_capture); > > -#define IIO_DEV_ATTR_CAPTURE_COUNT(_mode, _show, _store, _addr) \ > +#define IIO_DEV_ATTR_CAPTURE_COUNT(_mode, _show, _store, _addr) \ > IIO_DEVICE_ATTR(capture_count, _mode, _show, _store, _addr) > > static IIO_DEV_ATTR_CAPTURE_COUNT(S_IWUSR | S_IRUGO, > @@ -563,33 +587,15 @@ static int __devinit adis16220_probe(struct spi_device *spi) > goto error_free_dev; > regdone = 1; > > - st->accel_bin.attr.name = "accel_bin"; > - st->accel_bin.attr.mode = S_IRUGO; > - st->accel_bin.attr.owner = THIS_MODULE; > - st->accel_bin.read = adis16220_accel_bin_read; > - st->accel_bin.size = ADIS16220_CAPTURE_SIZE; > - > - ret = sysfs_create_bin_file(&st->indio_dev->dev.kobj, &st->accel_bin); > + ret = sysfs_create_bin_file(&st->indio_dev->dev.kobj, &accel_bin); > if (ret) > goto error_free_dev; > > - st->adc1_bin.attr.name = "adc1_bin"; > - st->adc1_bin.attr.mode = S_IRUGO; > - st->adc1_bin.attr.owner = THIS_MODULE; > - st->adc1_bin.read = adis16220_adc1_bin_read; > - st->adc1_bin.size = ADIS16220_CAPTURE_SIZE; > - > - ret = sysfs_create_bin_file(&st->indio_dev->dev.kobj, &st->adc1_bin); > + ret = sysfs_create_bin_file(&st->indio_dev->dev.kobj, &adc1_bin); > if (ret) > goto error_rm_accel_bin; > > - st->adc2_bin.attr.name = "adc2_bin"; > - st->adc2_bin.attr.mode = S_IRUGO; > - st->adc2_bin.attr.owner = THIS_MODULE; > - st->adc2_bin.read = adis16220_adc2_bin_read; > - st->adc2_bin.size = ADIS16220_CAPTURE_SIZE; > - > - ret = sysfs_create_bin_file(&st->indio_dev->dev.kobj, &st->adc2_bin); > + ret = sysfs_create_bin_file(&st->indio_dev->dev.kobj, &adc2_bin); > if (ret) > goto error_rm_adc1_bin; > > @@ -600,11 +606,11 @@ static int __devinit adis16220_probe(struct spi_device *spi) > return 0; > > error_rm_adc2_bin: > - sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &st->adc2_bin); > + sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &adc2_bin); > error_rm_adc1_bin: > - sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &st->adc1_bin); > + sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &adc1_bin); > error_rm_accel_bin: > - sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &st->accel_bin); > + sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &accel_bin); > error_free_dev: > if (regdone) > iio_device_unregister(st->indio_dev); > @@ -627,9 +633,9 @@ static int adis16220_remove(struct spi_device *spi) > > flush_scheduled_work(); > > - sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &st->adc2_bin); > - sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &st->adc1_bin); > - sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &st->accel_bin); > + sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &adc2_bin); > + sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &adc1_bin); > + sysfs_remove_bin_file(&st->indio_dev->dev.kobj, &accel_bin); > iio_device_unregister(indio_dev); > kfree(st->tx); > kfree(st->rx); > -- > 1.7.0.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html