Lines Matching refs:chip

125 static void tsl2583_defaults(struct tsl2583_chip *chip)
131 chip->als_settings.als_time = 100;
137 chip->als_settings.als_gain = 0;
140 chip->als_settings.als_gain_trim = 1000;
143 chip->als_settings.als_cal_target = 130;
146 memcpy(chip->als_settings.als_device_lux, tsl2583_default_lux,
171 struct tsl2583_chip *chip = iio_priv(indio_dev);
174 ret = i2c_smbus_read_byte_data(chip->client, TSL2583_CMD_REG);
176 dev_err(&chip->client->dev, "%s: failed to read CMD_REG register\n",
183 dev_err(&chip->client->dev, "%s: data not valid; returning last value\n",
185 ret = chip->als_cur_info.lux; /* return LAST VALUE */
192 ret = i2c_smbus_read_byte_data(chip->client, reg);
194 dev_err(&chip->client->dev, "%s: failed to read register %x\n",
202 * Clear the pending interrupt status bit on the chip to allow the next
206 ret = i2c_smbus_write_byte(chip->client,
210 dev_err(&chip->client->dev, "%s: failed to clear the interrupt bit\n",
219 chip->als_cur_info.als_ch0 = ch0;
220 chip->als_cur_info.als_ch1 = ch1;
222 if ((ch0 >= chip->als_saturation) || (ch1 >= chip->als_saturation))
232 chip->als_cur_info.lux = 0;
240 for (p = (struct tsl2583_lux *)chip->als_settings.als_device_lux;
250 (gainadj[chip->als_settings.als_gain].ch0 >> 1))
251 / gainadj[chip->als_settings.als_gain].ch0;
253 (gainadj[chip->als_settings.als_gain].ch1 >> 1))
254 / gainadj[chip->als_settings.als_gain].ch1;
258 dev_dbg(&chip->client->dev, "%s: No Data - Returning 0\n",
261 chip->als_cur_info.lux = 0;
269 if (chip->als_time_scale == 0)
272 lux = (lux + (chip->als_time_scale >> 1)) /
273 chip->als_time_scale;
285 lux64 = lux64 * chip->als_settings.als_gain_trim;
296 chip->als_cur_info.lux = lux;
310 struct tsl2583_chip *chip = iio_priv(indio_dev);
315 ret = i2c_smbus_read_byte_data(chip->client,
318 dev_err(&chip->client->dev,
326 dev_err(&chip->client->dev,
331 dev_err(&chip->client->dev,
339 dev_err(&chip->client->dev, "%s: failed to get lux\n",
346 dev_err(&chip->client->dev,
352 gain_trim_val = (unsigned int)(((chip->als_settings.als_cal_target)
353 * chip->als_settings.als_gain_trim) / lux_val);
355 dev_err(&chip->client->dev,
361 chip->als_settings.als_gain_trim = (int)gain_trim_val;
366 static int tsl2583_set_als_time(struct tsl2583_chip *chip)
372 als_count = (chip->als_settings.als_time * 100 + 135) / 270;
380 ret = i2c_smbus_write_byte_data(chip->client,
384 dev_err(&chip->client->dev, "%s: failed to set the als time to %d\n",
389 /* set chip struct re scaling and saturation */
390 chip->als_saturation = als_count * 922; /* 90% of full scale */
391 chip->als_time_scale = (als_time + 25) / 50;
396 static int tsl2583_set_als_gain(struct tsl2583_chip *chip)
401 ret = i2c_smbus_write_byte_data(chip->client,
403 chip->als_settings.als_gain);
405 dev_err(&chip->client->dev,
407 chip->als_settings.als_gain);
412 static int tsl2583_set_power_state(struct tsl2583_chip *chip, u8 state)
416 ret = i2c_smbus_write_byte_data(chip->client,
419 dev_err(&chip->client->dev,
432 struct tsl2583_chip *chip = iio_priv(indio_dev);
436 ret = tsl2583_set_power_state(chip, TSL2583_CNTL_PWR_ON);
440 ret = i2c_smbus_write_byte_data(chip->client,
444 dev_err(&chip->client->dev,
449 ret = tsl2583_set_als_time(chip);
453 ret = tsl2583_set_als_gain(chip);
459 ret = tsl2583_set_power_state(chip, TSL2583_CNTL_PWR_ON |
474 struct tsl2583_chip *chip = iio_priv(indio_dev);
477 mutex_lock(&chip->als_mutex);
478 ret = sprintf(buf, "%d\n", chip->als_settings.als_cal_target);
479 mutex_unlock(&chip->als_mutex);
489 struct tsl2583_chip *chip = iio_priv(indio_dev);
495 mutex_lock(&chip->als_mutex);
496 chip->als_settings.als_cal_target = value;
497 mutex_unlock(&chip->als_mutex);
507 struct tsl2583_chip *chip = iio_priv(indio_dev);
513 mutex_lock(&chip->als_mutex);
521 mutex_unlock(&chip->als_mutex);
531 struct tsl2583_chip *chip = iio_priv(indio_dev);
535 for (i = 0; i < ARRAY_SIZE(chip->als_settings.als_device_lux); i++) {
537 chip->als_settings.als_device_lux[i].ratio,
538 chip->als_settings.als_device_lux[i].ch0,
539 chip->als_settings.als_device_lux[i].ch1);
540 if (chip->als_settings.als_device_lux[i].ratio == 0) {
560 struct tsl2583_chip *chip = iio_priv(indio_dev);
566 mutex_lock(&chip->als_mutex);
589 memcpy(chip->als_settings.als_device_lux, &value[1],
595 mutex_unlock(&chip->als_mutex);
642 static int tsl2583_set_pm_runtime_busy(struct tsl2583_chip *chip, bool on)
647 ret = pm_runtime_get_sync(&chip->client->dev);
649 pm_runtime_put_noidle(&chip->client->dev);
651 pm_runtime_mark_last_busy(&chip->client->dev);
652 ret = pm_runtime_put_autosuspend(&chip->client->dev);
662 struct tsl2583_chip *chip = iio_priv(indio_dev);
665 ret = tsl2583_set_pm_runtime_busy(chip, true);
669 mutex_lock(&chip->als_mutex);
689 *val = chip->als_cur_info.als_ch0;
691 *val = chip->als_cur_info.als_ch1;
708 *val = chip->als_settings.als_gain_trim;
714 *val = gainadj[chip->als_settings.als_gain].mean;
721 *val2 = chip->als_settings.als_time;
730 mutex_unlock(&chip->als_mutex);
740 pm_ret = tsl2583_set_pm_runtime_busy(chip, false);
751 struct tsl2583_chip *chip = iio_priv(indio_dev);
754 ret = tsl2583_set_pm_runtime_busy(chip, true);
758 mutex_lock(&chip->als_mutex);
764 chip->als_settings.als_gain_trim = val;
774 chip->als_settings.als_gain = i;
775 ret = tsl2583_set_als_gain(chip);
784 chip->als_settings.als_time = val2;
785 ret = tsl2583_set_als_time(chip);
792 mutex_unlock(&chip->als_mutex);
797 ret = tsl2583_set_pm_runtime_busy(chip, false);
814 struct tsl2583_chip *chip;
824 indio_dev = devm_iio_device_alloc(&clientp->dev, sizeof(*chip));
828 chip = iio_priv(indio_dev);
829 chip->client = clientp;
832 mutex_init(&chip->als_mutex);
838 "%s: failed to read the chip ID register\n", __func__);
843 dev_err(&clientp->dev, "%s: received an unknown chip ID %x\n",
852 indio_dev->name = chip->client->name;
867 tsl2583_defaults(chip);
877 struct tsl2583_chip *chip = iio_priv(indio_dev);
885 return tsl2583_set_power_state(chip, TSL2583_CNTL_PWR_OFF);
891 struct tsl2583_chip *chip = iio_priv(indio_dev);
894 mutex_lock(&chip->als_mutex);
896 ret = tsl2583_set_power_state(chip, TSL2583_CNTL_PWR_OFF);
898 mutex_unlock(&chip->als_mutex);
906 struct tsl2583_chip *chip = iio_priv(indio_dev);
909 mutex_lock(&chip->als_mutex);
913 mutex_unlock(&chip->als_mutex);