diff --git a/drivers/iio/light/cm32181.c b/drivers/iio/light/cm32181.c index 001055d097509..df7095166c977 100644 --- a/drivers/iio/light/cm32181.c +++ b/drivers/iio/light/cm32181.c @@ -414,8 +414,31 @@ static const struct iio_chan_spec cm32181_channels[] = { static IIO_DEVICE_ATTR(in_illuminance_integration_time_available, S_IRUGO, cm32181_get_it_available, NULL, 0); +static ssize_t cm32181_store_disable(struct device *dev, + struct device_attribute *attr, const char *buf, size_t len) +{ + struct cm32181_chip *cm32181 = iio_priv(dev_to_iio_dev(dev)); + struct i2c_client *client = cm32181->client; + int ret; + + ret = i2c_smbus_write_word_data(client, CM32181_REG_ADDR_CMD, + CM32181_CMD_ALS_DISABLE); + + if (ret < 0) { + dev_warn(dev, "CM32181_CMD_ALS_DISABLE failed.\n"); + return ret; + } else + dev_warn(dev, "CM32181_CMD_ALS_DISABLE succeeded.\n"); + + return len; +} + +static IIO_DEVICE_ATTR(disable, + S_IWUSR, NULL, cm32181_store_disable, 0); + static struct attribute *cm32181_attributes[] = { &iio_dev_attr_in_illuminance_integration_time_available.dev_attr.attr, + &iio_dev_attr_disable.dev_attr.attr, NULL, };