.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,
(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;
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:
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 */
* @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
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;