• Home
  • Raw
  • Download

Lines Matching +full:timing +full:- +full:adjustment

1 // SPDX-License-Identifier: GPL-2.0-only
32 #define VCNL_PS_MOD_ADJ 0x8f /* Proximity Modulator Timing Adjustment */
36 #define VCNL_PS_OD BIT(3) /* start on-demand proximity
44 * struct vcnl3020_data - vcnl3020 specific data.
58 * struct vcnl3020_property - vcnl3020 property.
79 .name = "vishay,led-current-microamp",
90 rc = device_property_read_u32(data->dev, prop.name, &val); in vcnl3020_get_and_apply_property()
97 rc = regmap_write(data->regmap, prop.reg, val); in vcnl3020_get_and_apply_property()
99 dev_err(data->dev, "Error (%d) setting property (%s)\n", in vcnl3020_get_and_apply_property()
111 rc = regmap_read(data->regmap, VCNL_PROD_REV, &reg); in vcnl3020_init()
113 dev_err(data->dev, in vcnl3020_init()
119 dev_err(data->dev, in vcnl3020_init()
122 return -ENODEV; in vcnl3020_init()
125 data->rev = reg; in vcnl3020_init()
126 mutex_init(&data->lock); in vcnl3020_init()
138 mutex_lock(&data->lock); in vcnl3020_measure_proximity()
140 rc = regmap_write(data->regmap, VCNL_COMMAND, VCNL_PS_OD); in vcnl3020_measure_proximity()
145 rc = regmap_read_poll_timeout(data->regmap, VCNL_COMMAND, reg, in vcnl3020_measure_proximity()
149 dev_err(data->dev, in vcnl3020_measure_proximity()
155 rc = regmap_bulk_read(data->regmap, VCNL_PS_RESULT_HI, &res, in vcnl3020_measure_proximity()
163 mutex_unlock(&data->lock); in vcnl3020_measure_proximity()
189 return -EINVAL; in vcnl3020_read_raw()
212 dev_err(&client->dev, "regmap_init failed\n"); in vcnl3020_probe()
216 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in vcnl3020_probe()
218 return -ENOMEM; in vcnl3020_probe()
222 data->regmap = regmap; in vcnl3020_probe()
223 data->dev = &client->dev; in vcnl3020_probe()
229 indio_dev->info = &vcnl3020_info; in vcnl3020_probe()
230 indio_dev->channels = vcnl3020_channels; in vcnl3020_probe()
231 indio_dev->num_channels = ARRAY_SIZE(vcnl3020_channels); in vcnl3020_probe()
232 indio_dev->name = "vcnl3020"; in vcnl3020_probe()
233 indio_dev->modes = INDIO_DIRECT_MODE; in vcnl3020_probe()
235 return devm_iio_device_register(&client->dev, indio_dev); in vcnl3020_probe()