gp2ap002
struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
if (!gp2ap002->enabled)
ret = regmap_read(gp2ap002->map, GP2AP002_PROX, &val);
dev_err(gp2ap002->dev, "error reading proximity\n");
dev_dbg(gp2ap002->dev, "close\n");
ret = regmap_write(gp2ap002->map, GP2AP002_HYS,
gp2ap002->hys_far);
dev_err(gp2ap002->dev,
dev_dbg(gp2ap002->dev, "far\n");
ret = regmap_write(gp2ap002->map, GP2AP002_HYS,
gp2ap002->hys_close);
dev_err(gp2ap002->dev,
ret = regmap_write(gp2ap002->map, GP2AP002_CON,
dev_err(gp2ap002->dev, "error setting up VOUT control\n");
static int gp2ap002_get_lux(struct gp2ap002 *gp2ap002)
ret = iio_read_channel_processed(gp2ap002->alsout, &res);
dev_dbg(gp2ap002->dev, "read %d mA from ADC\n", res);
struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
pm_runtime_get_sync(gp2ap002->dev);
ret = gp2ap002_get_lux(gp2ap002);
pm_runtime_put_autosuspend(gp2ap002->dev);
static int gp2ap002_init(struct gp2ap002 *gp2ap002)
ret = regmap_write(gp2ap002->map, GP2AP002_GAIN,
dev_err(gp2ap002->dev, "error setting up LED gain\n");
ret = regmap_write(gp2ap002->map, GP2AP002_HYS, gp2ap002->hys_far);
dev_err(gp2ap002->dev,
ret = regmap_write(gp2ap002->map, GP2AP002_CYCLE,
dev_err(gp2ap002->dev,
ret = regmap_write(gp2ap002->map, GP2AP002_OPMOD,
dev_err(gp2ap002->dev, "error setting up operation mode\n");
ret = regmap_write(gp2ap002->map, GP2AP002_CON,
dev_err(gp2ap002->dev, "error setting up VOUT control\n");
struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
return gp2ap002->enabled;
struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
pm_runtime_get_sync(gp2ap002->dev);
gp2ap002->enabled = true;
pm_runtime_put_autosuspend(gp2ap002->dev);
gp2ap002->enabled = false;
struct gp2ap002 *gp2ap002;
indio_dev = devm_iio_device_alloc(dev, sizeof(*gp2ap002));
gp2ap002 = iio_priv(indio_dev);
gp2ap002->dev = dev;
gp2ap002->is_gp2ap002s00f = !strcmp(compat, "sharp,gp2ap002s00f");
gp2ap002->map = regmap;
gp2ap002->hys_far = val;
gp2ap002->hys_close = val;
if (!gp2ap002->is_gp2ap002s00f) {
gp2ap002->alsout = devm_iio_channel_get(dev, "alsout");
if (IS_ERR(gp2ap002->alsout)) {
ret = PTR_ERR(gp2ap002->alsout);
ret = iio_get_channel_type(gp2ap002->alsout, &ch_type);
gp2ap002->vdd = devm_regulator_get(dev, "vdd");
if (IS_ERR(gp2ap002->vdd))
return dev_err_probe(dev, PTR_ERR(gp2ap002->vdd),
gp2ap002->vio = devm_regulator_get(dev, "vio");
if (IS_ERR(gp2ap002->vio))
return dev_err_probe(dev, PTR_ERR(gp2ap002->vio),
ret = regulator_set_voltage(gp2ap002->vdd, 2400000, 3600000);
ret = regulator_get_voltage(gp2ap002->vdd);
ret = regulator_set_voltage(gp2ap002->vio, 1650000, ret);
ret = regulator_enable(gp2ap002->vdd);
ret = regulator_enable(gp2ap002->vio);
ret = gp2ap002_init(gp2ap002);
gp2ap002->enabled = false;
gp2ap002->irq = client->irq;
if (gp2ap002->is_gp2ap002s00f)
regulator_disable(gp2ap002->vio);
regulator_disable(gp2ap002->vdd);
struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
regulator_disable(gp2ap002->vio);
regulator_disable(gp2ap002->vdd);
struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
disable_irq(gp2ap002->irq);
ret = regmap_write(gp2ap002->map, GP2AP002_OPMOD, 0x00);
dev_err(gp2ap002->dev, "error setting up operation mode\n");
regulator_disable(gp2ap002->vio);
regulator_disable(gp2ap002->vdd);
struct gp2ap002 *gp2ap002 = iio_priv(indio_dev);
ret = regulator_enable(gp2ap002->vdd);
ret = regulator_enable(gp2ap002->vio);
ret = gp2ap002_init(gp2ap002);
enable_irq(gp2ap002->irq);