On Wed, 21 Mar 2018 06:29:08 -0400 Brian Masney <masneyb@xxxxxxxxxxxxx> wrote: > The struct tsl2x7x_settings contained a persistence member that > contained both the ALS and proximity persistence fields. This patch > splits this out into two separate fields so that the bitmasks in > several parts of the code are no longer necessary. > > The default persistence settings are also changed by this patch from: > > - Proximity: 0 (Every proximity cycle generates an interrupt) > - ALS: 255 (60 consecutive values out of range) > > to something a little more reasonable based on my testing: > > - Proximity: 1 (1 proximity value out of range) > - ALS: 1 (1 value outside of threshold range) > > Signed-off-by: Brian Masney <masneyb@xxxxxxxxxxxxx> Applied, thanks. Jonathan > --- > drivers/staging/iio/light/tsl2x7x.c | 24 +++++++++++------------- > drivers/staging/iio/light/tsl2x7x.h | 9 ++++++--- > 2 files changed, 17 insertions(+), 16 deletions(-) > > diff --git a/drivers/staging/iio/light/tsl2x7x.c b/drivers/staging/iio/light/tsl2x7x.c > index 07ce3076a05d..c1e441857226 100644 > --- a/drivers/staging/iio/light/tsl2x7x.c > +++ b/drivers/staging/iio/light/tsl2x7x.c > @@ -226,10 +226,11 @@ static const struct tsl2x7x_settings tsl2x7x_default_settings = { > .prox_config = 0, > .als_gain_trim = 1000, > .als_cal_target = 150, > + .als_persistence = 1, > .als_interrupt_en = false, > .als_thresh_low = 200, > .als_thresh_high = 256, > - .persistence = 255, > + .prox_persistence = 1, > .prox_interrupt_en = false, > .prox_thres_low = 0, > .prox_thres_high = 512, > @@ -621,7 +622,9 @@ static int tsl2x7x_chip_on(struct iio_dev *indio_dev) > (chip->settings.als_thresh_high) & 0xFF; > chip->tsl2x7x_config[TSL2X7X_ALS_MAXTHRESHHI] = > (chip->settings.als_thresh_high >> 8) & 0xFF; > - chip->tsl2x7x_config[TSL2X7X_PERSISTENCE] = chip->settings.persistence; > + chip->tsl2x7x_config[TSL2X7X_PERSISTENCE] = > + (chip->settings.prox_persistence & 0xFF) << 4 | > + (chip->settings.als_persistence & 0xFF); > > chip->tsl2x7x_config[TSL2X7X_PRX_COUNT] = > chip->settings.prox_pulse_count; > @@ -1043,15 +1046,10 @@ static int tsl2x7x_write_event_value(struct iio_dev *indio_dev, > > filter_delay = DIV_ROUND_UP((val * 1000) + val2, z); > > - if (chan->type == IIO_INTENSITY) { > - chip->settings.persistence &= 0xF0; > - chip->settings.persistence |= > - (filter_delay & 0x0F); > - } else { > - chip->settings.persistence &= 0x0F; > - chip->settings.persistence |= > - ((filter_delay << 4) & 0xF0); > - } > + if (chan->type == IIO_INTENSITY) > + chip->settings.als_persistence = filter_delay; > + else > + chip->settings.prox_persistence = filter_delay; > ret = 0; > break; > default: > @@ -1108,10 +1106,10 @@ static int tsl2x7x_read_event_value(struct iio_dev *indio_dev, > case IIO_EV_INFO_PERIOD: > if (chan->type == IIO_INTENSITY) { > time = chip->settings.als_time; > - mult = chip->settings.persistence & 0x0F; > + mult = chip->settings.als_persistence; > } else { > time = chip->settings.prx_time; > - mult = (chip->settings.persistence & 0xF0) >> 4; > + mult = chip->settings.prox_persistence; > } > > /* Determine integration time */ > diff --git a/drivers/staging/iio/light/tsl2x7x.h b/drivers/staging/iio/light/tsl2x7x.h > index b2aa642299b3..d382cdbb976e 100644 > --- a/drivers/staging/iio/light/tsl2x7x.h > +++ b/drivers/staging/iio/light/tsl2x7x.h > @@ -50,11 +50,13 @@ struct tsl2x7x_lux { > * @prox_config: Prox configuration filters. > * @als_cal_target: Known external ALS reading for > * calibration. > - * @persistence: H/W Filters, Number of 'out of limits' > - * ADC readings PRX/ALS. > + * @als_persistence: H/W Filters, Number of 'out of limits' > + * ALS readings. > * @als_interrupt_en: Enable/Disable ALS interrupts > * @als_thresh_low: CH0 'low' count to trigger interrupt. > * @als_thresh_high: CH0 'high' count to trigger interrupt. > + * @prox_persistence: H/W Filters, Number of 'out of limits' > + * proximity readings. > * @prox_interrupt_en: Enable/Disable proximity interrupts > * @prox_thres_low: Low threshold proximity detection. > * @prox_thres_high: High threshold proximity detection > @@ -70,10 +72,11 @@ struct tsl2x7x_settings { > int prox_gain; > int prox_config; > int als_cal_target; > - u8 persistence; > + u8 als_persistence; > bool als_interrupt_en; > int als_thresh_low; > int als_thresh_high; > + u8 prox_persistence; > bool prox_interrupt_en; > int prox_thres_low; > int prox_thres_high; -- 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