Lines Matching defs:isl29501
3 * isl29501.c: ISL29501 Time of Flight sensor driver.
197 static int isl29501_register_read(struct isl29501_private *isl29501,
205 mutex_lock(&isl29501->lock);
207 ret = i2c_smbus_read_byte_data(isl29501->client, reg->msb);
214 ret = i2c_smbus_read_byte_data(isl29501->client, reg->lsb);
219 mutex_unlock(&isl29501->lock);
225 mutex_unlock(&isl29501->lock);
230 static u32 isl29501_register_write(struct isl29501_private *isl29501,
243 mutex_lock(&isl29501->lock);
245 ret = i2c_smbus_write_byte_data(isl29501->client,
251 ret = i2c_smbus_write_byte_data(isl29501->client, reg->lsb, value);
254 mutex_unlock(&isl29501->lock);
263 struct isl29501_private *isl29501 = iio_priv(indio_dev);
271 ret = isl29501_register_read(isl29501, reg, &gain);
281 ret = isl29501_register_read(isl29501, REG_PHASE_EXP, &exp);
285 ret = isl29501_register_read(isl29501, reg, &coeff);
298 static int isl29501_set_shadow_coeff(struct isl29501_private *isl29501,
320 isl29501->shadow_coeffs[coeff] = val;
325 static int isl29501_write_coeff(struct isl29501_private *isl29501,
348 return isl29501_register_write(isl29501, reg, val);
385 struct isl29501_private *isl29501 = iio_priv(indio_dev);
401 ret = isl29501_register_write(isl29501, reg, val);
415 ret = isl29501_set_shadow_coeff(isl29501, reg, val);
427 corr = isl29501->shadow_coeffs[i];
431 dev_dbg(&isl29501->client->dev,
446 corr = isl29501->shadow_coeffs[i];
452 ret = isl29501_write_coeff(isl29501, i, mantissa);
457 ret = isl29501_register_write(isl29501, REG_PHASE_EXP, max_exp);
539 static int isl29501_reset_registers(struct isl29501_private *isl29501)
543 ret = i2c_smbus_write_byte_data(isl29501->client,
547 dev_err(&isl29501->client->dev,
552 ret = i2c_smbus_write_byte_data(isl29501->client,
556 dev_err(&isl29501->client->dev,
562 static int isl29501_begin_acquisition(struct isl29501_private *isl29501)
566 ret = i2c_smbus_write_byte_data(isl29501->client,
570 dev_err(&isl29501->client->dev,
612 static int isl29501_get_raw(struct isl29501_private *isl29501,
620 ret = isl29501_register_read(isl29501, REG_DISTANCE, raw);
626 ret = isl29501_register_read(isl29501,
634 ret = isl29501_register_read(isl29501, REG_PHASE, raw);
640 ret = isl29501_register_read(isl29501, REG_EMITTER_DAC, raw);
646 ret = isl29501_register_read(isl29501, REG_TEMPERATURE, raw);
656 static int isl29501_get_scale(struct isl29501_private *isl29501,
683 ret = isl29501_register_read(isl29501,
713 static int isl29501_get_calibbias(struct isl29501_private *isl29501,
719 return isl29501_register_read(isl29501,
723 return isl29501_register_read(isl29501,
731 static int isl29501_get_inttime(struct isl29501_private *isl29501,
737 ret = isl29501_register_read(isl29501, REG_INT_TIME, &inttime);
750 static int isl29501_get_freq(struct isl29501_private *isl29501,
758 ret = isl29501_register_read(isl29501, REG_SAMPLE_TIME, &sample_time);
778 struct isl29501_private *isl29501 = iio_priv(indio_dev);
782 return isl29501_get_raw(isl29501, chan, val);
784 return isl29501_get_scale(isl29501, chan, val, val2);
786 return isl29501_get_inttime(isl29501, val, val2);
788 return isl29501_get_freq(isl29501, val, val2);
790 return isl29501_get_calibbias(isl29501, chan, val);
796 static int isl29501_set_raw(struct isl29501_private *isl29501,
802 return isl29501_register_write(isl29501, REG_EMITTER_DAC, raw);
808 static int isl29501_set_inttime(struct isl29501_private *isl29501,
816 return isl29501_register_write(isl29501,
825 static int isl29501_set_scale(struct isl29501_private *isl29501,
837 return isl29501_register_write(isl29501,
846 static int isl29501_set_calibbias(struct isl29501_private *isl29501,
852 return isl29501_register_write(isl29501,
856 return isl29501_register_write(isl29501,
864 static int isl29501_set_freq(struct isl29501_private *isl29501,
880 return isl29501_register_write(isl29501, REG_SAMPLE_TIME, sample_time);
887 struct isl29501_private *isl29501 = iio_priv(indio_dev);
891 return isl29501_set_raw(isl29501, chan, val);
893 return isl29501_set_inttime(isl29501, val, val2);
895 return isl29501_set_freq(isl29501, val, val2);
897 return isl29501_set_scale(isl29501, chan, val, val2);
899 return isl29501_set_calibbias(isl29501, chan, val);
911 static int isl29501_init_chip(struct isl29501_private *isl29501)
915 ret = i2c_smbus_read_byte_data(isl29501->client, ISL29501_DEVICE_ID);
917 dev_err(&isl29501->client->dev, "Error reading device id\n");
922 dev_err(&isl29501->client->dev,
928 ret = isl29501_reset_registers(isl29501);
932 return isl29501_begin_acquisition(isl29501);
939 struct isl29501_private *isl29501 = iio_priv(indio_dev);
944 isl29501_register_read(isl29501, REG_DISTANCE, buffer);
956 struct isl29501_private *isl29501;
959 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*isl29501));
963 isl29501 = iio_priv(indio_dev);
966 isl29501->client = client;
968 mutex_init(&isl29501->lock);
970 ret = isl29501_init_chip(isl29501);
993 {"isl29501", 0},
1001 { .compatible = "renesas,isl29501" },
1009 .name = "isl29501",