Symbol: aw96103
drivers/iio/proximity/aw96103.c
247
static int aw96103_get_diff_raw(struct aw96103 *aw96103, unsigned int chan,
drivers/iio/proximity/aw96103.c
253
ret = regmap_read(aw96103->regmap,
drivers/iio/proximity/aw96103.c
266
struct aw96103 *aw96103 = iio_priv(indio_dev);
drivers/iio/proximity/aw96103.c
271
ret = aw96103_get_diff_raw(aw96103, chan->channel, val);
drivers/iio/proximity/aw96103.c
281
static int aw96103_read_thresh(struct aw96103 *aw96103,
drivers/iio/proximity/aw96103.c
286
ret = regmap_read(aw96103->regmap,
drivers/iio/proximity/aw96103.c
294
static int aw96103_read_out_debounce(struct aw96103 *aw96103,
drivers/iio/proximity/aw96103.c
301
ret = regmap_read(aw96103->regmap,
drivers/iio/proximity/aw96103.c
310
static int aw96103_read_in_debounce(struct aw96103 *aw96103,
drivers/iio/proximity/aw96103.c
316
ret = regmap_read(aw96103->regmap,
drivers/iio/proximity/aw96103.c
325
static int aw96103_read_hysteresis(struct aw96103 *aw96103,
drivers/iio/proximity/aw96103.c
331
ret = regmap_read(aw96103->regmap,
drivers/iio/proximity/aw96103.c
347
struct aw96103 *aw96103 = iio_priv(indio_dev);
drivers/iio/proximity/aw96103.c
354
return aw96103_read_thresh(aw96103, chan, val);
drivers/iio/proximity/aw96103.c
358
return aw96103_read_out_debounce(aw96103, chan, val);
drivers/iio/proximity/aw96103.c
360
return aw96103_read_in_debounce(aw96103, chan, val);
drivers/iio/proximity/aw96103.c
365
return aw96103_read_hysteresis(aw96103, chan, val);
drivers/iio/proximity/aw96103.c
377
struct aw96103 *aw96103 = iio_priv(indio_dev);
drivers/iio/proximity/aw96103.c
384
return regmap_write(aw96103->regmap,
drivers/iio/proximity/aw96103.c
389
return regmap_update_bits(aw96103->regmap,
drivers/iio/proximity/aw96103.c
395
return regmap_update_bits(aw96103->regmap,
drivers/iio/proximity/aw96103.c
403
return regmap_update_bits(aw96103->regmap,
drivers/iio/proximity/aw96103.c
417
struct aw96103 *aw96103 = iio_priv(indio_dev);
drivers/iio/proximity/aw96103.c
419
return aw96103->channels_arr[chan->channel].used;
drivers/iio/proximity/aw96103.c
427
struct aw96103 *aw96103 = iio_priv(indio_dev);
drivers/iio/proximity/aw96103.c
429
aw96103->channels_arr[chan->channel].used = !!state;
drivers/iio/proximity/aw96103.c
431
return regmap_update_bits(aw96103->regmap, AW96103_REG_SCANCTRL0,
drivers/iio/proximity/aw96103.c
444
static int aw96103_channel_scan_start(struct aw96103 *aw96103)
drivers/iio/proximity/aw96103.c
448
ret = regmap_write(aw96103->regmap, AW96103_REG_CMD,
drivers/iio/proximity/aw96103.c
453
return regmap_write(aw96103->regmap, AW96103_REG_IRQEN,
drivers/iio/proximity/aw96103.c
454
aw96103->hostirqen);
drivers/iio/proximity/aw96103.c
457
static int aw96103_reg_version_comp(struct aw96103 *aw96103,
drivers/iio/proximity/aw96103.c
464
ret = regmap_read(aw96103->regmap, AW96103_REG_FWVER2, &fw_ver);
drivers/iio/proximity/aw96103.c
475
for (i = 0; i < aw96103->max_channels; i++) {
drivers/iio/proximity/aw96103.c
476
ret = regmap_read(aw96103->regmap,
drivers/iio/proximity/aw96103.c
484
ret = regmap_update_bits(aw96103->regmap,
drivers/iio/proximity/aw96103.c
494
static int aw96103_bin_valid_loaded(struct aw96103 *aw96103,
drivers/iio/proximity/aw96103.c
511
aw96103->hostirqen = reg_data;
drivers/iio/proximity/aw96103.c
515
aw96103->chan_en = FIELD_GET(AW96103_CHAN_EN_MASK,
drivers/iio/proximity/aw96103.c
518
ret = regmap_write(aw96103->regmap, reg_addr, reg_data);
drivers/iio/proximity/aw96103.c
523
ret = aw96103_reg_version_comp(aw96103, aw_bin_data_s);
drivers/iio/proximity/aw96103.c
527
return aw96103_channel_scan_start(aw96103);
drivers/iio/proximity/aw96103.c
530
static int aw96103_para_loaded(struct aw96103 *aw96103)
drivers/iio/proximity/aw96103.c
535
ret = regmap_write(aw96103->regmap,
drivers/iio/proximity/aw96103.c
541
aw96103->hostirqen = aw96103_reg_default[i + 1];
drivers/iio/proximity/aw96103.c
543
aw96103->chan_en = FIELD_GET(AW96103_CHAN_EN_MASK,
drivers/iio/proximity/aw96103.c
547
return aw96103_channel_scan_start(aw96103);
drivers/iio/proximity/aw96103.c
551
struct aw96103 *aw96103)
drivers/iio/proximity/aw96103.c
566
return aw96103_bin_valid_loaded(aw96103, aw_bin);
drivers/iio/proximity/aw96103.c
571
struct aw96103 *aw96103 = data;
drivers/iio/proximity/aw96103.c
575
dev_err(aw96103->dev, "No firmware.\n");
drivers/iio/proximity/aw96103.c
579
ret = aw96103_cfg_all_loaded(fw, aw96103);
drivers/iio/proximity/aw96103.c
586
ret = aw96103_para_loaded(aw96103);
drivers/iio/proximity/aw96103.c
588
dev_err(aw96103->dev, "load param error.\n");
drivers/iio/proximity/aw96103.c
593
for (i = 0; i < aw96103->max_channels; i++) {
drivers/iio/proximity/aw96103.c
594
if ((aw96103->chan_en >> i) & 0x01)
drivers/iio/proximity/aw96103.c
595
aw96103->channels_arr[i].used = true;
drivers/iio/proximity/aw96103.c
597
aw96103->channels_arr[i].used = false;
drivers/iio/proximity/aw96103.c
601
static int aw96103_sw_reset(struct aw96103 *aw96103)
drivers/iio/proximity/aw96103.c
605
ret = regmap_write(aw96103->regmap, AW96103_REG_RESET, 0);
drivers/iio/proximity/aw96103.c
627
struct aw96103 *aw96103 = iio_priv(indio_dev);
drivers/iio/proximity/aw96103.c
630
ret = regmap_read(aw96103->regmap, AW96103_REG_IRQSRC, &irq_status);
drivers/iio/proximity/aw96103.c
634
ret = regmap_read(aw96103->regmap, AW96103_REG_STAT0, &curr_status_val);
drivers/iio/proximity/aw96103.c
642
for (i = 0; i < aw96103->max_channels; i++) {
drivers/iio/proximity/aw96103.c
643
if (!aw96103->channels_arr[i].used)
drivers/iio/proximity/aw96103.c
650
if (aw96103->channels_arr[i].old_irq_status == curr_status)
drivers/iio/proximity/aw96103.c
674
aw96103->channels_arr[i].old_irq_status = curr_status;
drivers/iio/proximity/aw96103.c
683
struct aw96103 *aw96103 = iio_priv(indio_dev);
drivers/iio/proximity/aw96103.c
687
ret = regmap_write(aw96103->regmap, AW96103_REG_IRQEN, 0);
drivers/iio/proximity/aw96103.c
690
ret = regmap_read(aw96103->regmap, AW96103_REG_IRQSRC, &irq_status);
drivers/iio/proximity/aw96103.c
693
ret = devm_request_threaded_irq(aw96103->dev, i2c->irq, NULL,
drivers/iio/proximity/aw96103.c
699
return regmap_write(aw96103->regmap, AW96103_REG_IRQEN,
drivers/iio/proximity/aw96103.c
700
aw96103->hostirqen);
drivers/iio/proximity/aw96103.c
703
static int aw96103_wait_chip_init(struct aw96103 *aw96103)
drivers/iio/proximity/aw96103.c
714
ret = regmap_read(aw96103->regmap, AW96103_REG_IRQSRC,
drivers/iio/proximity/aw96103.c
727
static int aw96103_read_chipid(struct aw96103 *aw96103)
drivers/iio/proximity/aw96103.c
740
ret = regmap_read(aw96103->regmap, AW96103_REG_CHIPID,
drivers/iio/proximity/aw96103.c
753
dev_info(aw96103->dev,
drivers/iio/proximity/aw96103.c
763
struct aw96103 *aw96103;
drivers/iio/proximity/aw96103.c
766
indio_dev = devm_iio_device_alloc(&i2c->dev, sizeof(*aw96103));
drivers/iio/proximity/aw96103.c
770
aw96103 = iio_priv(indio_dev);
drivers/iio/proximity/aw96103.c
771
aw96103->dev = &i2c->dev;
drivers/iio/proximity/aw96103.c
773
aw96103->max_channels = chip_info->num_channels;
drivers/iio/proximity/aw96103.c
775
aw96103->regmap = devm_regmap_init_i2c(i2c, &aw96103_regmap_confg);
drivers/iio/proximity/aw96103.c
776
if (IS_ERR(aw96103->regmap))
drivers/iio/proximity/aw96103.c
777
return PTR_ERR(aw96103->regmap);
drivers/iio/proximity/aw96103.c
779
ret = devm_regulator_get_enable(aw96103->dev, "vcc");
drivers/iio/proximity/aw96103.c
783
ret = aw96103_read_chipid(aw96103);
drivers/iio/proximity/aw96103.c
787
ret = aw96103_sw_reset(aw96103);
drivers/iio/proximity/aw96103.c
791
ret = aw96103_wait_chip_init(aw96103);
drivers/iio/proximity/aw96103.c
796
aw96103->dev, GFP_KERNEL, aw96103,
drivers/iio/proximity/aw96103.c
811
return devm_iio_device_register(aw96103->dev, indio_dev);