Lines Matching +full:proxraw +full:- +full:strength

1 // SPDX-License-Identifier: GPL-2.0
8 * linux-driver-SX9310_NoSmartHSensing>.
259 ret = regmap_write(data->regmap, SX9310_REG_SENSOR_SEL, chan->channel); in sx9310_read_prox_data()
263 return regmap_bulk_read(data->regmap, chan->address, val, sizeof(*val)); in sx9310_read_prox_data()
275 ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL0, &val); in sx9310_wait_for_sample()
292 ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL3, &regval); in sx9310_read_gain()
296 switch (chan->channel) { in sx9310_read_gain()
306 return -EINVAL; in sx9310_read_gain()
319 ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL0, &regval); in sx9310_read_samp_freq()
337 if (chan->type != IIO_PROXIMITY) in sx9310_read_raw()
338 return -EINVAL; in sx9310_read_raw()
360 return -EINVAL; in sx9310_read_raw()
371 if (chan->type != IIO_PROXIMITY) in sx9310_read_avail()
372 return -EINVAL; in sx9310_read_avail()
386 return -EINVAL; in sx9310_read_avail()
405 return -EINVAL; in sx9310_get_thresh_reg()
416 reg = ret = sx9310_get_thresh_reg(chan->channel); in sx9310_read_thresh()
420 ret = regmap_read(data->regmap, reg, &regval); in sx9310_read_thresh()
426 return -EINVAL; in sx9310_read_thresh()
442 ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL10, &regval); in sx9310_read_hysteresis()
451 *val = pthresh >> (5 - regval); in sx9310_read_hysteresis()
461 ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL10, &regval); in sx9310_read_far_debounce()
479 ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL10, &regval); in sx9310_read_close_debounce()
500 if (chan->type != IIO_PROXIMITY) in sx9310_read_event_val()
501 return -EINVAL; in sx9310_read_event_val()
513 return -EINVAL; in sx9310_read_event_val()
518 return -EINVAL; in sx9310_read_event_val()
529 reg = ret = sx9310_get_thresh_reg(chan->channel); in sx9310_write_thresh()
541 return -EINVAL; in sx9310_write_thresh()
544 mutex_lock(&data->mutex); in sx9310_write_thresh()
545 ret = regmap_update_bits(data->regmap, reg, in sx9310_write_thresh()
547 mutex_unlock(&data->mutex); in sx9310_write_thresh()
571 return -EINVAL; in sx9310_write_hysteresis()
574 mutex_lock(&data->mutex); in sx9310_write_hysteresis()
575 ret = regmap_update_bits(data->regmap, SX9310_REG_PROX_CTRL10, in sx9310_write_hysteresis()
577 mutex_unlock(&data->mutex); in sx9310_write_hysteresis()
590 return -EINVAL; in sx9310_write_far_debounce()
594 mutex_lock(&data->mutex); in sx9310_write_far_debounce()
595 ret = regmap_update_bits(data->regmap, SX9310_REG_PROX_CTRL10, in sx9310_write_far_debounce()
598 mutex_unlock(&data->mutex); in sx9310_write_far_debounce()
611 return -EINVAL; in sx9310_write_close_debounce()
615 mutex_lock(&data->mutex); in sx9310_write_close_debounce()
616 ret = regmap_update_bits(data->regmap, SX9310_REG_PROX_CTRL10, in sx9310_write_close_debounce()
619 mutex_unlock(&data->mutex); in sx9310_write_close_debounce()
632 if (chan->type != IIO_PROXIMITY) in sx9310_write_event_val()
633 return -EINVAL; in sx9310_write_event_val()
645 return -EINVAL; in sx9310_write_event_val()
650 return -EINVAL; in sx9310_write_event_val()
664 return -EINVAL; in sx9310_set_samp_freq()
666 mutex_lock(&data->mutex); in sx9310_set_samp_freq()
669 data->regmap, SX9310_REG_PROX_CTRL0, in sx9310_set_samp_freq()
673 mutex_unlock(&data->mutex); in sx9310_set_samp_freq()
686 switch (chan->channel) { in sx9310_write_gain()
698 return -EINVAL; in sx9310_write_gain()
701 mutex_lock(&data->mutex); in sx9310_write_gain()
702 ret = regmap_update_bits(data->regmap, SX9310_REG_PROX_CTRL3, mask, in sx9310_write_gain()
704 mutex_unlock(&data->mutex); in sx9310_write_gain()
715 if (chan->type != IIO_PROXIMITY) in sx9310_write_raw()
716 return -EINVAL; in sx9310_write_raw()
724 return -EINVAL; in sx9310_write_raw()
778 ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL0, &ctrl0); in sx9310_init_compensation()
783 ret = regmap_write(data->regmap, SX9310_REG_PROX_CTRL0, in sx9310_init_compensation()
788 ret = regmap_read_poll_timeout(data->regmap, SX9310_REG_STAT1, val, in sx9310_init_compensation()
794 regmap_write(data->regmap, SX9310_REG_PROX_CTRL0, ctrl0); in sx9310_init_compensation()
809 switch (reg_def->reg) { in sx9310_get_default_reg()
811 if (device_property_read_bool(dev, "semtech,cs0-ground")) { in sx9310_get_default_reg()
812 reg_def->def &= ~SX9310_REG_PROX_CTRL2_SHIELDEN_MASK; in sx9310_get_default_reg()
813 reg_def->def |= SX9310_REG_PROX_CTRL2_SHIELDEN_GROUND; in sx9310_get_default_reg()
816 count = device_property_count_u32(dev, "semtech,combined-sensors"); in sx9310_get_default_reg()
819 ret = device_property_read_u32_array(dev, "semtech,combined-sensors", in sx9310_get_default_reg()
827 reg_def->def &= ~SX9310_REG_PROX_CTRL2_COMBMODE_MASK; in sx9310_get_default_reg()
829 reg_def->def |= SX9310_REG_PROX_CTRL2_COMBMODE_CS0_CS1_CS2_CS3; in sx9310_get_default_reg()
831 reg_def->def |= SX9310_REG_PROX_CTRL2_COMBMODE_CS1_CS2; in sx9310_get_default_reg()
833 reg_def->def |= SX9310_REG_PROX_CTRL2_COMBMODE_CS0_CS1; in sx9310_get_default_reg()
835 reg_def->def |= SX9310_REG_PROX_CTRL2_COMBMODE_CS3; in sx9310_get_default_reg()
843 reg_def->def &= ~SX9310_REG_PROX_CTRL4_RESOLUTION_MASK; in sx9310_get_default_reg()
845 reg_def->def |= SX9310_REG_PROX_CTRL4_RESOLUTION_COARSEST; in sx9310_get_default_reg()
846 else if (!strcmp(res, "very-coarse")) in sx9310_get_default_reg()
847 reg_def->def |= SX9310_REG_PROX_CTRL4_RESOLUTION_VERY_COARSE; in sx9310_get_default_reg()
849 reg_def->def |= SX9310_REG_PROX_CTRL4_RESOLUTION_COARSE; in sx9310_get_default_reg()
850 else if (!strcmp(res, "medium-coarse")) in sx9310_get_default_reg()
851 reg_def->def |= SX9310_REG_PROX_CTRL4_RESOLUTION_MEDIUM_COARSE; in sx9310_get_default_reg()
853 reg_def->def |= SX9310_REG_PROX_CTRL4_RESOLUTION_MEDIUM; in sx9310_get_default_reg()
855 reg_def->def |= SX9310_REG_PROX_CTRL4_RESOLUTION_FINE; in sx9310_get_default_reg()
856 else if (!strcmp(res, "very-fine")) in sx9310_get_default_reg()
857 reg_def->def |= SX9310_REG_PROX_CTRL4_RESOLUTION_VERY_FINE; in sx9310_get_default_reg()
859 reg_def->def |= SX9310_REG_PROX_CTRL4_RESOLUTION_FINEST; in sx9310_get_default_reg()
863 ret = device_property_read_u32(dev, "semtech,startup-sensor", &start); in sx9310_get_default_reg()
866 reg_def->def); in sx9310_get_default_reg()
869 reg_def->def &= ~SX9310_REG_PROX_CTRL5_STARTUPSENS_MASK; in sx9310_get_default_reg()
870 reg_def->def |= FIELD_PREP(SX9310_REG_PROX_CTRL5_STARTUPSENS_MASK, in sx9310_get_default_reg()
873 ret = device_property_read_u32(dev, "semtech,proxraw-strength", &raw); in sx9310_get_default_reg()
876 reg_def->def); in sx9310_get_default_reg()
881 reg_def->def &= ~SX9310_REG_PROX_CTRL5_RAWFILT_MASK; in sx9310_get_default_reg()
882 reg_def->def |= FIELD_PREP(SX9310_REG_PROX_CTRL5_RAWFILT_MASK, in sx9310_get_default_reg()
886 ret = device_property_read_u32(dev, "semtech,avg-pos-strength", &pos); in sx9310_get_default_reg()
891 pos = clamp(ilog2(pos), 3, 11) - (pos >= 32 ? 4 : 3); in sx9310_get_default_reg()
892 reg_def->def &= ~SX9310_REG_PROX_CTRL7_AVGPOSFILT_MASK; in sx9310_get_default_reg()
893 reg_def->def |= FIELD_PREP(SX9310_REG_PROX_CTRL7_AVGPOSFILT_MASK, in sx9310_get_default_reg()
909 ret = regmap_read(data->regmap, SX9310_REG_WHOAMI, &whoami); in sx9310_check_whoami()
915 return -EINVAL; in sx9310_check_whoami()
919 indio_dev->name = "sx9310"; in sx9310_check_whoami()
922 indio_dev->name = "sx9311"; in sx9310_check_whoami()
925 return -ENODEV; in sx9310_check_whoami()
974 disable_irq_nosync(data->client->irq); in sx9310_suspend()
976 mutex_lock(&data->mutex); in sx9310_suspend()
977 ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL0, in sx9310_suspend()
978 &data->suspend_ctrl); in sx9310_suspend()
982 ctrl0 = data->suspend_ctrl & ~SX9310_REG_PROX_CTRL0_SENSOREN_MASK; in sx9310_suspend()
983 ret = regmap_write(data->regmap, SX9310_REG_PROX_CTRL0, ctrl0); in sx9310_suspend()
987 ret = regmap_write(data->regmap, SX9310_REG_PAUSE, 0); in sx9310_suspend()
990 mutex_unlock(&data->mutex); in sx9310_suspend()
999 mutex_lock(&data->mutex); in sx9310_resume()
1000 ret = regmap_write(data->regmap, SX9310_REG_PAUSE, 1); in sx9310_resume()
1004 ret = regmap_write(data->regmap, SX9310_REG_PROX_CTRL0, in sx9310_resume()
1005 data->suspend_ctrl); in sx9310_resume()
1008 mutex_unlock(&data->mutex); in sx9310_resume()
1012 enable_irq(data->client->irq); in sx9310_resume()