|
@@ -542,39 +542,29 @@ static void tsl2x7x_defaults(struct tsl2X7X_chip *chip)
|
|
static int tsl2x7x_als_calibrate(struct iio_dev *indio_dev)
|
|
static int tsl2x7x_als_calibrate(struct iio_dev *indio_dev)
|
|
{
|
|
{
|
|
struct tsl2X7X_chip *chip = iio_priv(indio_dev);
|
|
struct tsl2X7X_chip *chip = iio_priv(indio_dev);
|
|
- u8 reg_val;
|
|
|
|
int gain_trim_val;
|
|
int gain_trim_val;
|
|
int ret;
|
|
int ret;
|
|
int lux_val;
|
|
int lux_val;
|
|
|
|
|
|
- ret = i2c_smbus_write_byte(chip->client,
|
|
|
|
- (TSL2X7X_CMD_REG | TSL2X7X_CNTRL));
|
|
|
|
|
|
+ ret = i2c_smbus_read_byte_data(chip->client,
|
|
|
|
+ TSL2X7X_CMD_REG | TSL2X7X_CNTRL);
|
|
if (ret < 0) {
|
|
if (ret < 0) {
|
|
dev_err(&chip->client->dev,
|
|
dev_err(&chip->client->dev,
|
|
- "failed to write CNTRL register, ret=%d\n", ret);
|
|
|
|
|
|
+ "%s: failed to read from the CNTRL register\n",
|
|
|
|
+ __func__);
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
- reg_val = i2c_smbus_read_byte(chip->client);
|
|
|
|
- if ((reg_val & (TSL2X7X_CNTL_ADC_ENBL | TSL2X7X_CNTL_PWR_ON))
|
|
|
|
- != (TSL2X7X_CNTL_ADC_ENBL | TSL2X7X_CNTL_PWR_ON)) {
|
|
|
|
- dev_err(&chip->client->dev,
|
|
|
|
- "%s: failed: ADC not enabled\n", __func__);
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- ret = i2c_smbus_write_byte(chip->client,
|
|
|
|
- (TSL2X7X_CMD_REG | TSL2X7X_CNTRL));
|
|
|
|
- if (ret < 0) {
|
|
|
|
|
|
+ if ((ret & (TSL2X7X_CNTL_ADC_ENBL | TSL2X7X_CNTL_PWR_ON))
|
|
|
|
+ != (TSL2X7X_CNTL_ADC_ENBL | TSL2X7X_CNTL_PWR_ON)) {
|
|
dev_err(&chip->client->dev,
|
|
dev_err(&chip->client->dev,
|
|
- "failed to write ctrl reg: ret=%d\n", ret);
|
|
|
|
- return ret;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- reg_val = i2c_smbus_read_byte(chip->client);
|
|
|
|
- if ((reg_val & TSL2X7X_STA_ADC_VALID) != TSL2X7X_STA_ADC_VALID) {
|
|
|
|
|
|
+ "%s: Device is not powered on and/or ADC is not enabled\n",
|
|
|
|
+ __func__);
|
|
|
|
+ return -EINVAL;
|
|
|
|
+ } else if ((ret & TSL2X7X_STA_ADC_VALID) != TSL2X7X_STA_ADC_VALID) {
|
|
dev_err(&chip->client->dev,
|
|
dev_err(&chip->client->dev,
|
|
- "%s: failed: STATUS - ADC not valid.\n", __func__);
|
|
|
|
|
|
+ "%s: The two ADC channels have not completed an integration cycle\n",
|
|
|
|
+ __func__);
|
|
return -ENODATA;
|
|
return -ENODATA;
|
|
}
|
|
}
|
|
|
|
|