Lines Matching +full:avg +full:- +full:pos +full:- +full:strength
1 // SPDX-License-Identifier: GPL-2.0
180 * Returns the fake increment of (Max-Min)/2047
215 regmap_reg_range(SX9360_REG_IRQ_CFG + 1, SX9360_REG_GNRL_CTRL0 - 1),
216 regmap_reg_range(SX9360_REG_GNRL_CTRL2 + 1, SX9360_REG_AFE_CTRL1 - 1),
218 SX9360_REG_PROX_CTRL0_PHR - 1),
219 regmap_reg_range(SX9360_REG_PROX_CTRL5 + 1, SX9360_REG_REF_CORR0 - 1),
221 SX9360_REG_USEFUL_PHR_MSB - 1),
222 regmap_reg_range(SX9360_REG_USE_FILTER_LSB + 1, SX9360_REG_RESET - 1),
223 regmap_reg_range(SX9360_REG_RESET + 1, SX9360_REG_WHOAMI - 1),
224 regmap_reg_range(SX9360_REG_WHOAMI + 1, SX9360_REG_REVISION - 1),
260 return regmap_bulk_read(data->regmap, chan->address, val, sizeof(*val)); in sx9360_read_prox_data()
272 ret = regmap_bulk_read(data->regmap, SX9360_REG_GNRL_CTRL1, in sx9360_wait_for_sample()
287 reg = SX9360_REG_PROX_CTRL0_PHR + chan->channel; in sx9360_read_gain()
288 ret = regmap_read(data->regmap, reg, ®val); in sx9360_read_gain()
303 ret = regmap_bulk_read(data->regmap, SX9360_REG_GNRL_CTRL1, in sx9360_read_samp_freq()
329 return -EBUSY; in sx9360_read_raw()
336 return -EBUSY; in sx9360_read_raw()
344 return -EINVAL; in sx9360_read_raw()
355 return sysfs_emit(label, "%s\n", sx9360_channel_labels[chan->channel]); in sx9360_read_label()
365 if (chan->type != IIO_PROXIMITY) in sx9360_read_avail()
366 return -EINVAL; in sx9360_read_avail()
380 return -EINVAL; in sx9360_read_avail()
392 guard(mutex)(&data->mutex); in sx9360_set_samp_freq()
394 return regmap_bulk_write(data->regmap, SX9360_REG_GNRL_CTRL1, &buf, in sx9360_set_samp_freq()
403 ret = regmap_read(data->regmap, SX9360_REG_PROX_CTRL5, ®val); in sx9360_read_thresh()
424 ret = regmap_read(data->regmap, SX9360_REG_PROX_CTRL4, ®val); in sx9360_read_hysteresis()
432 *val = pthresh >> (5 - regval); in sx9360_read_hysteresis()
442 ret = regmap_read(data->regmap, SX9360_REG_PROX_CTRL4, ®val); in sx9360_read_far_debounce()
460 ret = regmap_read(data->regmap, SX9360_REG_PROX_CTRL4, ®val); in sx9360_read_close_debounce()
481 if (chan->type != IIO_PROXIMITY) in sx9360_read_event_val()
482 return -EINVAL; in sx9360_read_event_val()
494 return -EINVAL; in sx9360_read_event_val()
499 return -EINVAL; in sx9360_read_event_val()
511 return -EINVAL; in sx9360_write_thresh()
513 guard(mutex)(&data->mutex); in sx9360_write_thresh()
514 return regmap_write(data->regmap, SX9360_REG_PROX_CTRL5, val); in sx9360_write_thresh()
535 return -EINVAL; in sx9360_write_hysteresis()
538 guard(mutex)(&data->mutex); in sx9360_write_hysteresis()
539 return regmap_update_bits(data->regmap, SX9360_REG_PROX_CTRL4, in sx9360_write_hysteresis()
550 return -EINVAL; in sx9360_write_far_debounce()
554 guard(mutex)(&data->mutex); in sx9360_write_far_debounce()
555 return regmap_update_bits(data->regmap, SX9360_REG_PROX_CTRL4, in sx9360_write_far_debounce()
567 return -EINVAL; in sx9360_write_close_debounce()
571 guard(mutex)(&data->mutex); in sx9360_write_close_debounce()
572 return regmap_update_bits(data->regmap, SX9360_REG_PROX_CTRL4, in sx9360_write_close_debounce()
585 if (chan->type != IIO_PROXIMITY) in sx9360_write_event_val()
586 return -EINVAL; in sx9360_write_event_val()
598 return -EINVAL; in sx9360_write_event_val()
603 return -EINVAL; in sx9360_write_event_val()
613 reg = SX9360_REG_PROX_CTRL0_PHR + chan->channel; in sx9360_write_gain()
616 guard(mutex)(&data->mutex); in sx9360_write_gain()
617 return regmap_update_bits(data->regmap, reg, in sx9360_write_gain()
634 return -EINVAL; in sx9360_write_raw()
681 ret = regmap_set_bits(data->regmap, SX9360_REG_STAT, in sx9360_init_compensation()
686 return regmap_read_poll_timeout(data->regmap, SX9360_REG_STAT, val, in sx9360_init_compensation()
695 u32 raw = 0, pos = 0; in sx9360_get_default_reg() local
699 switch (reg_def->reg) { in sx9360_get_default_reg()
702 "semtech,input-precharge-resistor-ohms", in sx9360_get_default_reg()
707 reg_def->def &= ~SX9360_REG_AFE_CTRL1_RESFILTIN_MASK; in sx9360_get_default_reg()
708 reg_def->def |= FIELD_PREP(SX9360_REG_AFE_CTRL1_RESFILTIN_MASK, in sx9360_get_default_reg()
717 raw = ilog2(raw) - 3; in sx9360_get_default_reg()
719 reg_def->def &= ~SX9360_REG_AFE_PARAM0_RESOLUTION_MASK; in sx9360_get_default_reg()
720 reg_def->def |= FIELD_PREP(SX9360_REG_AFE_PARAM0_RESOLUTION_MASK, raw); in sx9360_get_default_reg()
724 ret = device_property_read_u32(dev, "semtech,proxraw-strength", &raw); in sx9360_get_default_reg()
728 reg_def->def &= ~SX9360_REG_PROX_CTRL0_RAWFILT_MASK; in sx9360_get_default_reg()
729 reg_def->def |= FIELD_PREP(SX9360_REG_PROX_CTRL0_RAWFILT_MASK, raw); in sx9360_get_default_reg()
732 ret = device_property_read_u32(dev, "semtech,avg-pos-strength", in sx9360_get_default_reg()
733 &pos); in sx9360_get_default_reg()
738 raw = clamp(ilog2(pos), 3, 11) - (pos >= 32 ? 4 : 3); in sx9360_get_default_reg()
739 reg_def->def &= ~SX9360_REG_PROX_CTRL3_AVGPOS_FILT_MASK; in sx9360_get_default_reg()
740 reg_def->def |= FIELD_PREP(SX9360_REG_PROX_CTRL3_AVGPOS_FILT_MASK, raw); in sx9360_get_default_reg()
753 indio_dev->name = "sx9360"; in sx9360_check_whoami()
801 disable_irq_nosync(data->client->irq); in sx9360_suspend()
803 guard(mutex)(&data->mutex); in sx9360_suspend()
804 ret = regmap_read(data->regmap, SX9360_REG_GNRL_CTRL0, ®val); in sx9360_suspend()
808 data->suspend_ctrl = in sx9360_suspend()
813 return regmap_write(data->regmap, SX9360_REG_GNRL_CTRL0, 0); in sx9360_suspend()
820 scoped_guard(mutex, &data->mutex) { in sx9360_resume()
821 int ret = regmap_update_bits(data->regmap, in sx9360_resume()
824 data->suspend_ctrl); in sx9360_resume()
828 enable_irq(data->client->irq); in sx9360_resume()