Lines Matching defs:gp2ap002
127 * struct gp2ap002 - GP2AP002 state
140 struct gp2ap002 {
156 struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
161 if (!gp2ap002->enabled)
164 ret = regmap_read(gp2ap002->map, GP2AP002_PROX, &val);
166 dev_err(gp2ap002->dev, "error reading proximity\n");
172 dev_dbg(gp2ap002->dev, "close\n");
173 ret = regmap_write(gp2ap002->map, GP2AP002_HYS,
174 gp2ap002->hys_far);
176 dev_err(gp2ap002->dev,
182 dev_dbg(gp2ap002->dev, "far\n");
183 ret = regmap_write(gp2ap002->map, GP2AP002_HYS,
184 gp2ap002->hys_close);
186 dev_err(gp2ap002->dev,
203 ret = regmap_write(gp2ap002->map, GP2AP002_CON,
206 dev_err(gp2ap002->dev, "error setting up VOUT control\n");
228 static int gp2ap002_get_lux(struct gp2ap002 *gp2ap002)
233 ret = iio_read_channel_processed(gp2ap002->alsout, &res);
237 dev_dbg(gp2ap002->dev, "read %d mA from ADC\n", res);
250 struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
253 pm_runtime_get_sync(gp2ap002->dev);
259 ret = gp2ap002_get_lux(gp2ap002);
274 pm_runtime_mark_last_busy(gp2ap002->dev);
275 pm_runtime_put_autosuspend(gp2ap002->dev);
280 static int gp2ap002_init(struct gp2ap002 *gp2ap002)
285 ret = regmap_write(gp2ap002->map, GP2AP002_GAIN,
288 dev_err(gp2ap002->dev, "error setting up LED gain\n");
291 ret = regmap_write(gp2ap002->map, GP2AP002_HYS, gp2ap002->hys_far);
293 dev_err(gp2ap002->dev,
299 ret = regmap_write(gp2ap002->map, GP2AP002_CYCLE,
302 dev_err(gp2ap002->dev,
308 ret = regmap_write(gp2ap002->map, GP2AP002_OPMOD,
312 dev_err(gp2ap002->dev, "error setting up operation mode\n");
317 ret = regmap_write(gp2ap002->map, GP2AP002_CON,
320 dev_err(gp2ap002->dev, "error setting up VOUT control\n");
330 struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
336 return gp2ap002->enabled;
345 struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
353 pm_runtime_get_sync(gp2ap002->dev);
354 gp2ap002->enabled = true;
356 pm_runtime_mark_last_busy(gp2ap002->dev);
357 pm_runtime_put_autosuspend(gp2ap002->dev);
358 gp2ap002->enabled = false;
431 struct gp2ap002 *gp2ap002;
446 indio_dev = devm_iio_device_alloc(dev, sizeof(*gp2ap002));
451 gp2ap002 = iio_priv(indio_dev);
452 gp2ap002->dev = dev;
464 gp2ap002->is_gp2ap002s00f = !strcmp(compat, "sharp,gp2ap002s00f");
472 gp2ap002->map = regmap;
492 gp2ap002->hys_far = val;
501 gp2ap002->hys_close = val;
504 if (!gp2ap002->is_gp2ap002s00f) {
505 gp2ap002->alsout = devm_iio_channel_get(dev, "alsout");
506 if (IS_ERR(gp2ap002->alsout)) {
507 if (PTR_ERR(gp2ap002->alsout) == -ENODEV) {
512 return PTR_ERR(gp2ap002->alsout);
514 ret = iio_get_channel_type(gp2ap002->alsout, &ch_type);
524 gp2ap002->vdd = devm_regulator_get(dev, "vdd");
525 if (IS_ERR(gp2ap002->vdd)) {
527 return PTR_ERR(gp2ap002->vdd);
529 gp2ap002->vio = devm_regulator_get(dev, "vio");
530 if (IS_ERR(gp2ap002->vio)) {
532 return PTR_ERR(gp2ap002->vio);
536 ret = regulator_set_voltage(gp2ap002->vdd, 2400000, 3600000);
543 ret = regulator_get_voltage(gp2ap002->vdd);
548 ret = regulator_set_voltage(gp2ap002->vio, 1650000, ret);
554 ret = regulator_enable(gp2ap002->vdd);
559 ret = regulator_enable(gp2ap002->vio);
571 ret = gp2ap002_init(gp2ap002);
579 gp2ap002->enabled = false;
583 "gp2ap002", indio_dev);
588 gp2ap002->irq = client->irq;
600 indio_dev->name = "gp2ap002";
604 if (gp2ap002->is_gp2ap002s00f)
621 regulator_disable(gp2ap002->vio);
623 regulator_disable(gp2ap002->vdd);
630 struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
637 regulator_disable(gp2ap002->vio);
638 regulator_disable(gp2ap002->vdd);
646 struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
650 disable_irq(gp2ap002->irq);
653 ret = regmap_write(gp2ap002->map, GP2AP002_OPMOD, 0x00);
655 dev_err(gp2ap002->dev, "error setting up operation mode\n");
662 regulator_disable(gp2ap002->vio);
663 regulator_disable(gp2ap002->vdd);
671 struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
674 ret = regulator_enable(gp2ap002->vdd);
679 ret = regulator_enable(gp2ap002->vio);
687 ret = gp2ap002_init(gp2ap002);
694 enable_irq(gp2ap002->irq);
707 { "gp2ap002", 0 },
721 .name = "gp2ap002",