Message ID | 20170930010921.15447-4-masneyb@onstation.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, 29 Sep 2017 21:09:21 -0400 Brian Masney <masneyb@onstation.org> wrote: > The sysfs attributes in_intensity0_thresh_period and > in_proximity0_thresh_period are currently directly created by the driver. > This patch migrates the creation of these sysfs attributes from the driver > to using the IIO core via iio_event_spec. > > Signed-off-by: Brian Masney <masneyb@onstation.org> One question down the end about whether we should be using IIO_EV_DIR_EITHER rather than IIO_EV_DIR_NONE NONE is only really for thing where a direction makes not sense rather than to remove the direction be specified for a particular element. Otherwise looks good. I'd just have changed this, but wasn't sure if there was deeper logic behind your choice that I was missing! Jonathan > --- > drivers/staging/iio/light/tsl2x7x.c | 196 ++++++++++-------------------------- > 1 file changed, 52 insertions(+), 144 deletions(-) > > diff --git a/drivers/staging/iio/light/tsl2x7x.c b/drivers/staging/iio/light/tsl2x7x.c > index e6a71f5fc9cb..be2806593e59 100644 > --- a/drivers/staging/iio/light/tsl2x7x.c > +++ b/drivers/staging/iio/light/tsl2x7x.c > @@ -932,108 +932,6 @@ static ssize_t in_illuminance0_target_input_store(struct device *dev, > return len; > } > > -/* persistence settings */ > -static ssize_t in_intensity0_thresh_period_show(struct device *dev, > - struct device_attribute *attr, > - char *buf) > -{ > - struct tsl2X7X_chip *chip = iio_priv(dev_to_iio_dev(dev)); > - int y, z, filter_delay; > - > - /* Determine integration time */ > - y = (TSL2X7X_MAX_TIMER_CNT - (u8)chip->settings.als_time) + 1; > - z = y * TSL2X7X_MIN_ITIME; > - filter_delay = z * (chip->settings.persistence & 0x0F); > - y = filter_delay / 1000; > - z = filter_delay % 1000; > - > - return snprintf(buf, PAGE_SIZE, "%d.%03d\n", y, z); > -} > - > -static ssize_t in_intensity0_thresh_period_store(struct device *dev, > - struct device_attribute *attr, > - const char *buf, size_t len) > -{ > - struct iio_dev *indio_dev = dev_to_iio_dev(dev); > - struct tsl2X7X_chip *chip = iio_priv(indio_dev); > - struct tsl2x7x_parse_result result; > - int y, z, filter_delay; > - int ret; > - > - ret = iio_str_to_fixpoint(buf, 100, &result.integer, &result.fract); > - if (ret) > - return ret; > - > - y = (TSL2X7X_MAX_TIMER_CNT - (u8)chip->settings.als_time) + 1; > - z = y * TSL2X7X_MIN_ITIME; > - > - filter_delay = > - DIV_ROUND_UP((result.integer * 1000) + result.fract, z); > - > - chip->settings.persistence &= 0xF0; > - chip->settings.persistence |= (filter_delay & 0x0F); > - > - dev_info(&chip->client->dev, "%s: als persistence = %d", > - __func__, filter_delay); > - > - ret = tsl2x7x_invoke_change(indio_dev); > - if (ret < 0) > - return ret; > - > - return IIO_VAL_INT_PLUS_MICRO; > -} > - > -static ssize_t in_proximity0_thresh_period_show(struct device *dev, > - struct device_attribute *attr, > - char *buf) > -{ > - struct tsl2X7X_chip *chip = iio_priv(dev_to_iio_dev(dev)); > - int y, z, filter_delay; > - > - /* Determine integration time */ > - y = (TSL2X7X_MAX_TIMER_CNT - (u8)chip->settings.prx_time) + 1; > - z = y * TSL2X7X_MIN_ITIME; > - filter_delay = z * ((chip->settings.persistence & 0xF0) >> 4); > - y = filter_delay / 1000; > - z = filter_delay % 1000; > - > - return snprintf(buf, PAGE_SIZE, "%d.%03d\n", y, z); > -} > - > -static ssize_t in_proximity0_thresh_period_store(struct device *dev, > - struct device_attribute *attr, > - const char *buf, size_t len) > -{ > - struct iio_dev *indio_dev = dev_to_iio_dev(dev); > - struct tsl2X7X_chip *chip = iio_priv(indio_dev); > - struct tsl2x7x_parse_result result; > - int y, z, filter_delay; > - int ret; > - > - ret = iio_str_to_fixpoint(buf, 100, &result.integer, &result.fract); > - if (ret) > - return ret; > - > - y = (TSL2X7X_MAX_TIMER_CNT - (u8)chip->settings.prx_time) + 1; > - z = y * TSL2X7X_MIN_ITIME; > - > - filter_delay = > - DIV_ROUND_UP((result.integer * 1000) + result.fract, z); > - > - chip->settings.persistence &= 0x0F; > - chip->settings.persistence |= ((filter_delay << 4) & 0xF0); > - > - dev_info(&chip->client->dev, "%s: prox persistence = %d", > - __func__, filter_delay); > - > - ret = tsl2x7x_invoke_change(indio_dev); > - if (ret < 0) > - return ret; > - > - > - return IIO_VAL_INT_PLUS_MICRO; > -} > - > static ssize_t in_illuminance0_calibrate_store(struct device *dev, > struct device_attribute *attr, > const char *buf, size_t len) > @@ -1198,7 +1096,8 @@ static int tsl2x7x_write_event_value(struct iio_dev *indio_dev, > int val, int val2) > { > struct tsl2X7X_chip *chip = iio_priv(indio_dev); > - int ret = -EINVAL; > + int ret = -EINVAL, y, z, filter_delay; > + u8 time; > > switch (info) { > case IIO_EV_INFO_VALUE: > @@ -1230,6 +1129,33 @@ static int tsl2x7x_write_event_value(struct iio_dev *indio_dev, > } > } > break; > + case IIO_EV_INFO_PERIOD: > + if (chan->type == IIO_INTENSITY) > + time = chip->settings.als_time; > + else > + time = chip->settings.prx_time; > + > + y = (TSL2X7X_MAX_TIMER_CNT - time) + 1; > + z = y * TSL2X7X_MIN_ITIME; > + > + filter_delay = DIV_ROUND_UP((val * 1000) + val2, z); > + > + if (chan->type == IIO_INTENSITY) { > + chip->settings.persistence &= 0xF0; > + chip->settings.persistence |= > + (filter_delay & 0x0F); > + dev_info(&chip->client->dev, "%s: ALS persistence = %d", > + __func__, filter_delay); > + } else { > + chip->settings.persistence &= 0x0F; > + chip->settings.persistence |= > + ((filter_delay << 4) & 0xF0); > + dev_info(&chip->client->dev, > + "%s: Proximity persistence = %d", > + __func__, filter_delay); > + } > + ret = 0; > + break; > default: > break; > } > @@ -1248,7 +1174,8 @@ static int tsl2x7x_read_event_value(struct iio_dev *indio_dev, > int *val, int *val2) > { > struct tsl2X7X_chip *chip = iio_priv(indio_dev); > - int ret = -EINVAL; > + int ret = -EINVAL, filter_delay, mult; > + u8 time; > > switch (info) { > case IIO_EV_INFO_VALUE: > @@ -1280,6 +1207,23 @@ static int tsl2x7x_read_event_value(struct iio_dev *indio_dev, > } > } > break; > + case IIO_EV_INFO_PERIOD: > + if (chan->type == IIO_INTENSITY) { > + time = chip->settings.als_time; > + mult = chip->settings.persistence & 0x0F; > + } else { > + time = chip->settings.prx_time; > + mult = (chip->settings.persistence & 0xF0) >> 4; > + } > + > + /* Determine integration time */ > + *val = (TSL2X7X_MAX_TIMER_CNT - time) + 1; > + *val2 = *val * TSL2X7X_MIN_ITIME; > + filter_delay = *val2 * mult; > + *val = filter_delay / 1000; > + *val2 = filter_delay % 1000; > + ret = IIO_VAL_INT_PLUS_MICRO; > + break; > default: > break; > } > @@ -1444,10 +1388,6 @@ static DEVICE_ATTR_WO(in_proximity0_calibrate); > > static DEVICE_ATTR_RW(in_illuminance0_lux_table); > > -static DEVICE_ATTR_RW(in_intensity0_thresh_period); > - > -static DEVICE_ATTR_RW(in_proximity0_thresh_period); > - > /* Use the default register values to identify the Taos device */ > static int tsl2x7x_device_id(int *id, int target) > { > @@ -1554,22 +1494,6 @@ static struct attribute *tsl2x7x_ALSPRX2_device_attrs[] = { > NULL > }; > > -static struct attribute *tsl2X7X_ALS_event_attrs[] = { > - &dev_attr_in_intensity0_thresh_period.attr, > - NULL, > -}; > - > -static struct attribute *tsl2X7X_PRX_event_attrs[] = { > - &dev_attr_in_proximity0_thresh_period.attr, > - NULL, > -}; > - > -static struct attribute *tsl2X7X_ALSPRX_event_attrs[] = { > - &dev_attr_in_intensity0_thresh_period.attr, > - &dev_attr_in_proximity0_thresh_period.attr, > - NULL, > -}; > - > static const struct attribute_group tsl2X7X_device_attr_group_tbl[] = { > [ALS] = { > .attrs = tsl2x7x_ALS_device_attrs, > @@ -1588,25 +1512,9 @@ static const struct attribute_group tsl2X7X_device_attr_group_tbl[] = { > }, > }; > > -static const struct attribute_group tsl2X7X_event_attr_group_tbl[] = { > - [ALS] = { > - .attrs = tsl2X7X_ALS_event_attrs, > - .name = "events", > - }, > - [PRX] = { > - .attrs = tsl2X7X_PRX_event_attrs, > - .name = "events", > - }, > - [ALSPRX] = { > - .attrs = tsl2X7X_ALSPRX_event_attrs, > - .name = "events", > - }, > -}; > - > static const struct iio_info tsl2X7X_device_info[] = { > [ALS] = { > .attrs = &tsl2X7X_device_attr_group_tbl[ALS], > - .event_attrs = &tsl2X7X_event_attr_group_tbl[ALS], > .read_raw = &tsl2x7x_read_raw, > .write_raw = &tsl2x7x_write_raw, > .read_event_value = &tsl2x7x_read_event_value, > @@ -1616,7 +1524,6 @@ static const struct iio_info tsl2X7X_device_info[] = { > }, > [PRX] = { > .attrs = &tsl2X7X_device_attr_group_tbl[PRX], > - .event_attrs = &tsl2X7X_event_attr_group_tbl[PRX], > .read_raw = &tsl2x7x_read_raw, > .write_raw = &tsl2x7x_write_raw, > .read_event_value = &tsl2x7x_read_event_value, > @@ -1626,7 +1533,6 @@ static const struct iio_info tsl2X7X_device_info[] = { > }, > [ALSPRX] = { > .attrs = &tsl2X7X_device_attr_group_tbl[ALSPRX], > - .event_attrs = &tsl2X7X_event_attr_group_tbl[ALSPRX], > .read_raw = &tsl2x7x_read_raw, > .write_raw = &tsl2x7x_write_raw, > .read_event_value = &tsl2x7x_read_event_value, > @@ -1636,7 +1542,6 @@ static const struct iio_info tsl2X7X_device_info[] = { > }, > [PRX2] = { > .attrs = &tsl2X7X_device_attr_group_tbl[PRX2], > - .event_attrs = &tsl2X7X_event_attr_group_tbl[PRX], > .read_raw = &tsl2x7x_read_raw, > .write_raw = &tsl2x7x_write_raw, > .read_event_value = &tsl2x7x_read_event_value, > @@ -1646,7 +1551,6 @@ static const struct iio_info tsl2X7X_device_info[] = { > }, > [ALSPRX2] = { > .attrs = &tsl2X7X_device_attr_group_tbl[ALSPRX2], > - .event_attrs = &tsl2X7X_event_attr_group_tbl[ALSPRX], > .read_raw = &tsl2x7x_read_raw, > .write_raw = &tsl2x7x_write_raw, > .read_event_value = &tsl2x7x_read_event_value, > @@ -1667,6 +1571,10 @@ static const struct iio_event_spec tsl2x7x_events[] = { > .dir = IIO_EV_DIR_FALLING, > .mask_separate = BIT(IIO_EV_INFO_VALUE) | > BIT(IIO_EV_INFO_ENABLE), > + }, { > + .type = IIO_EV_TYPE_THRESH, > + .dir = IIO_EV_DIR_NONE, Hmm. Should this not be _EITHER rather than _NONE? > + .mask_separate = BIT(IIO_EV_INFO_PERIOD), > }, > }; > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, Oct 01, 2017 at 11:14:46AM +0100, Jonathan Cameron wrote: > On Fri, 29 Sep 2017 21:09:21 -0400 > Brian Masney <masneyb@onstation.org> wrote: > > > The sysfs attributes in_intensity0_thresh_period and > > in_proximity0_thresh_period are currently directly created by the driver. > > This patch migrates the creation of these sysfs attributes from the driver > > to using the IIO core via iio_event_spec. > > > > Signed-off-by: Brian Masney <masneyb@onstation.org> > > One question down the end about whether we should be using IIO_EV_DIR_EITHER > rather than IIO_EV_DIR_NONE > > NONE is only really for thing where a direction makes not sense rather > than to remove the direction be specified for a particular element. > > Otherwise looks good. I'd just have changed this, but wasn't sure if > there was deeper logic behind your choice that I was missing! There wasn't any deeper logic to this. :) I'll test it with IIO_EV_DIR_EITHER and send v2 with my next batch of cleanups unless you change it before then. Thanks, Brian -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/staging/iio/light/tsl2x7x.c b/drivers/staging/iio/light/tsl2x7x.c index e6a71f5fc9cb..be2806593e59 100644 --- a/drivers/staging/iio/light/tsl2x7x.c +++ b/drivers/staging/iio/light/tsl2x7x.c @@ -932,108 +932,6 @@ static ssize_t in_illuminance0_target_input_store(struct device *dev, return len; } -/* persistence settings */ -static ssize_t in_intensity0_thresh_period_show(struct device *dev, - struct device_attribute *attr, - char *buf) -{ - struct tsl2X7X_chip *chip = iio_priv(dev_to_iio_dev(dev)); - int y, z, filter_delay; - - /* Determine integration time */ - y = (TSL2X7X_MAX_TIMER_CNT - (u8)chip->settings.als_time) + 1; - z = y * TSL2X7X_MIN_ITIME; - filter_delay = z * (chip->settings.persistence & 0x0F); - y = filter_delay / 1000; - z = filter_delay % 1000; - - return snprintf(buf, PAGE_SIZE, "%d.%03d\n", y, z); -} - -static ssize_t in_intensity0_thresh_period_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t len) -{ - struct iio_dev *indio_dev = dev_to_iio_dev(dev); - struct tsl2X7X_chip *chip = iio_priv(indio_dev); - struct tsl2x7x_parse_result result; - int y, z, filter_delay; - int ret; - - ret = iio_str_to_fixpoint(buf, 100, &result.integer, &result.fract); - if (ret) - return ret; - - y = (TSL2X7X_MAX_TIMER_CNT - (u8)chip->settings.als_time) + 1; - z = y * TSL2X7X_MIN_ITIME; - - filter_delay = - DIV_ROUND_UP((result.integer * 1000) + result.fract, z); - - chip->settings.persistence &= 0xF0; - chip->settings.persistence |= (filter_delay & 0x0F); - - dev_info(&chip->client->dev, "%s: als persistence = %d", - __func__, filter_delay); - - ret = tsl2x7x_invoke_change(indio_dev); - if (ret < 0) - return ret; - - return IIO_VAL_INT_PLUS_MICRO; -} - -static ssize_t in_proximity0_thresh_period_show(struct device *dev, - struct device_attribute *attr, - char *buf) -{ - struct tsl2X7X_chip *chip = iio_priv(dev_to_iio_dev(dev)); - int y, z, filter_delay; - - /* Determine integration time */ - y = (TSL2X7X_MAX_TIMER_CNT - (u8)chip->settings.prx_time) + 1; - z = y * TSL2X7X_MIN_ITIME; - filter_delay = z * ((chip->settings.persistence & 0xF0) >> 4); - y = filter_delay / 1000; - z = filter_delay % 1000; - - return snprintf(buf, PAGE_SIZE, "%d.%03d\n", y, z); -} - -static ssize_t in_proximity0_thresh_period_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t len) -{ - struct iio_dev *indio_dev = dev_to_iio_dev(dev); - struct tsl2X7X_chip *chip = iio_priv(indio_dev); - struct tsl2x7x_parse_result result; - int y, z, filter_delay; - int ret; - - ret = iio_str_to_fixpoint(buf, 100, &result.integer, &result.fract); - if (ret) - return ret; - - y = (TSL2X7X_MAX_TIMER_CNT - (u8)chip->settings.prx_time) + 1; - z = y * TSL2X7X_MIN_ITIME; - - filter_delay = - DIV_ROUND_UP((result.integer * 1000) + result.fract, z); - - chip->settings.persistence &= 0x0F; - chip->settings.persistence |= ((filter_delay << 4) & 0xF0); - - dev_info(&chip->client->dev, "%s: prox persistence = %d", - __func__, filter_delay); - - ret = tsl2x7x_invoke_change(indio_dev); - if (ret < 0) - return ret; - - - return IIO_VAL_INT_PLUS_MICRO; -} - static ssize_t in_illuminance0_calibrate_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t len) @@ -1198,7 +1096,8 @@ static int tsl2x7x_write_event_value(struct iio_dev *indio_dev, int val, int val2) { struct tsl2X7X_chip *chip = iio_priv(indio_dev); - int ret = -EINVAL; + int ret = -EINVAL, y, z, filter_delay; + u8 time; switch (info) { case IIO_EV_INFO_VALUE: @@ -1230,6 +1129,33 @@ static int tsl2x7x_write_event_value(struct iio_dev *indio_dev, } } break; + case IIO_EV_INFO_PERIOD: + if (chan->type == IIO_INTENSITY) + time = chip->settings.als_time; + else + time = chip->settings.prx_time; + + y = (TSL2X7X_MAX_TIMER_CNT - time) + 1; + z = y * TSL2X7X_MIN_ITIME; + + filter_delay = DIV_ROUND_UP((val * 1000) + val2, z); + + if (chan->type == IIO_INTENSITY) { + chip->settings.persistence &= 0xF0; + chip->settings.persistence |= + (filter_delay & 0x0F); + dev_info(&chip->client->dev, "%s: ALS persistence = %d", + __func__, filter_delay); + } else { + chip->settings.persistence &= 0x0F; + chip->settings.persistence |= + ((filter_delay << 4) & 0xF0); + dev_info(&chip->client->dev, + "%s: Proximity persistence = %d", + __func__, filter_delay); + } + ret = 0; + break; default: break; } @@ -1248,7 +1174,8 @@ static int tsl2x7x_read_event_value(struct iio_dev *indio_dev, int *val, int *val2) { struct tsl2X7X_chip *chip = iio_priv(indio_dev); - int ret = -EINVAL; + int ret = -EINVAL, filter_delay, mult; + u8 time; switch (info) { case IIO_EV_INFO_VALUE: @@ -1280,6 +1207,23 @@ static int tsl2x7x_read_event_value(struct iio_dev *indio_dev, } } break; + case IIO_EV_INFO_PERIOD: + if (chan->type == IIO_INTENSITY) { + time = chip->settings.als_time; + mult = chip->settings.persistence & 0x0F; + } else { + time = chip->settings.prx_time; + mult = (chip->settings.persistence & 0xF0) >> 4; + } + + /* Determine integration time */ + *val = (TSL2X7X_MAX_TIMER_CNT - time) + 1; + *val2 = *val * TSL2X7X_MIN_ITIME; + filter_delay = *val2 * mult; + *val = filter_delay / 1000; + *val2 = filter_delay % 1000; + ret = IIO_VAL_INT_PLUS_MICRO; + break; default: break; } @@ -1444,10 +1388,6 @@ static DEVICE_ATTR_WO(in_proximity0_calibrate); static DEVICE_ATTR_RW(in_illuminance0_lux_table); -static DEVICE_ATTR_RW(in_intensity0_thresh_period); - -static DEVICE_ATTR_RW(in_proximity0_thresh_period); - /* Use the default register values to identify the Taos device */ static int tsl2x7x_device_id(int *id, int target) { @@ -1554,22 +1494,6 @@ static struct attribute *tsl2x7x_ALSPRX2_device_attrs[] = { NULL }; -static struct attribute *tsl2X7X_ALS_event_attrs[] = { - &dev_attr_in_intensity0_thresh_period.attr, - NULL, -}; - -static struct attribute *tsl2X7X_PRX_event_attrs[] = { - &dev_attr_in_proximity0_thresh_period.attr, - NULL, -}; - -static struct attribute *tsl2X7X_ALSPRX_event_attrs[] = { - &dev_attr_in_intensity0_thresh_period.attr, - &dev_attr_in_proximity0_thresh_period.attr, - NULL, -}; - static const struct attribute_group tsl2X7X_device_attr_group_tbl[] = { [ALS] = { .attrs = tsl2x7x_ALS_device_attrs, @@ -1588,25 +1512,9 @@ static const struct attribute_group tsl2X7X_device_attr_group_tbl[] = { }, }; -static const struct attribute_group tsl2X7X_event_attr_group_tbl[] = { - [ALS] = { - .attrs = tsl2X7X_ALS_event_attrs, - .name = "events", - }, - [PRX] = { - .attrs = tsl2X7X_PRX_event_attrs, - .name = "events", - }, - [ALSPRX] = { - .attrs = tsl2X7X_ALSPRX_event_attrs, - .name = "events", - }, -}; - static const struct iio_info tsl2X7X_device_info[] = { [ALS] = { .attrs = &tsl2X7X_device_attr_group_tbl[ALS], - .event_attrs = &tsl2X7X_event_attr_group_tbl[ALS], .read_raw = &tsl2x7x_read_raw, .write_raw = &tsl2x7x_write_raw, .read_event_value = &tsl2x7x_read_event_value, @@ -1616,7 +1524,6 @@ static const struct iio_info tsl2X7X_device_info[] = { }, [PRX] = { .attrs = &tsl2X7X_device_attr_group_tbl[PRX], - .event_attrs = &tsl2X7X_event_attr_group_tbl[PRX], .read_raw = &tsl2x7x_read_raw, .write_raw = &tsl2x7x_write_raw, .read_event_value = &tsl2x7x_read_event_value, @@ -1626,7 +1533,6 @@ static const struct iio_info tsl2X7X_device_info[] = { }, [ALSPRX] = { .attrs = &tsl2X7X_device_attr_group_tbl[ALSPRX], - .event_attrs = &tsl2X7X_event_attr_group_tbl[ALSPRX], .read_raw = &tsl2x7x_read_raw, .write_raw = &tsl2x7x_write_raw, .read_event_value = &tsl2x7x_read_event_value, @@ -1636,7 +1542,6 @@ static const struct iio_info tsl2X7X_device_info[] = { }, [PRX2] = { .attrs = &tsl2X7X_device_attr_group_tbl[PRX2], - .event_attrs = &tsl2X7X_event_attr_group_tbl[PRX], .read_raw = &tsl2x7x_read_raw, .write_raw = &tsl2x7x_write_raw, .read_event_value = &tsl2x7x_read_event_value, @@ -1646,7 +1551,6 @@ static const struct iio_info tsl2X7X_device_info[] = { }, [ALSPRX2] = { .attrs = &tsl2X7X_device_attr_group_tbl[ALSPRX2], - .event_attrs = &tsl2X7X_event_attr_group_tbl[ALSPRX], .read_raw = &tsl2x7x_read_raw, .write_raw = &tsl2x7x_write_raw, .read_event_value = &tsl2x7x_read_event_value, @@ -1667,6 +1571,10 @@ static const struct iio_event_spec tsl2x7x_events[] = { .dir = IIO_EV_DIR_FALLING, .mask_separate = BIT(IIO_EV_INFO_VALUE) | BIT(IIO_EV_INFO_ENABLE), + }, { + .type = IIO_EV_TYPE_THRESH, + .dir = IIO_EV_DIR_NONE, + .mask_separate = BIT(IIO_EV_INFO_PERIOD), }, };
The sysfs attributes in_intensity0_thresh_period and in_proximity0_thresh_period are currently directly created by the driver. This patch migrates the creation of these sysfs attributes from the driver to using the IIO core via iio_event_spec. Signed-off-by: Brian Masney <masneyb@onstation.org> --- drivers/staging/iio/light/tsl2x7x.c | 196 ++++++++++-------------------------- 1 file changed, 52 insertions(+), 144 deletions(-)