Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8e83374 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "input: sensors: add sensor class poll_delay interface for apds9930"

parents 93e2dd46 b831bfb6
Loading
Loading
Loading
Loading
+26 −12
Original line number Diff line number Diff line
@@ -268,7 +268,7 @@ static struct sensors_classdev sensors_light_cdev = {
	.max_range = "30000",
	.resolution = "0.0125",
	.sensor_power = "0.20",
	.min_delay = 1000, /* in microseconds */
	.min_delay = 0, /* in microseconds */
	.fifo_reserved_event_count = 0,
	.fifo_max_event_count = 0,
	.enabled = 0,
@@ -286,7 +286,7 @@ static struct sensors_classdev sensors_proximity_cdev = {
	.max_range = "5",
	.resolution = "5.0",
	.sensor_power = "3",
	.min_delay = 1000, /* in microseconds */
	.min_delay = 0, /* in microseconds */
	.fifo_reserved_event_count = 0,
	.fifo_max_event_count = 0,
	.enabled = 0,
@@ -1188,12 +1188,10 @@ static int apds993x_set_als_poll_delay(struct i2c_client *client,

	pr_debug("%s: val=%d\n", __func__, val);

	/* minimum 5ms */
	if (val < 3000)
		val = 3000;

	/* convert us => ms */
	data->als_poll_delay = val / 1000;
	/* minimum 3ms */
	if (val < 3)
		val = 3;
	data->als_poll_delay = val;

	if (data->als_poll_delay >= 100)
		atime_index = APDS993X_ALS_RES_37888;
@@ -1754,7 +1752,7 @@ static ssize_t apds993x_show_als_poll_delay(struct device *dev,
	struct apds993x_data *data = i2c_get_clientdata(client);

	/* return in micro-second */
	return sprintf(buf, "%d\n", data->als_poll_delay * 1000);
	return snprintf(buf, PAGE_SIZE, "%d\n", data->als_poll_delay);
}

static ssize_t apds993x_store_als_poll_delay(struct device *dev,
@@ -1770,6 +1768,23 @@ static ssize_t apds993x_store_als_poll_delay(struct device *dev,
	return count;
}

#ifdef ALS_POLLING_ENABLED
static int apds993x_als_poll_delay(struct sensors_classdev *sensors_cdev,
		unsigned int delay_msec)
{
	struct apds993x_data *data = container_of(sensors_cdev,
			struct apds993x_data, als_cdev);
	apds993x_set_als_poll_delay(data->client, delay_msec);
	return 0;
}
#else
static int apds993x_als_poll_delay(struct sensors_classdev *sensors_cdev,
		unsigned int delay_msec)
{
	return 0;
}
#endif

static DEVICE_ATTR(als_poll_delay, S_IWUSR | S_IRUGO,
		apds993x_show_als_poll_delay, apds993x_store_als_poll_delay);

@@ -2402,11 +2417,10 @@ static int apds993x_probe(struct i2c_client *client,
	/* Register to sensors class */
	data->als_cdev = sensors_light_cdev;
	data->als_cdev.sensors_enable = apds993x_als_set_enable;
	data->als_cdev.sensors_poll_delay = NULL;

	data->als_cdev.sensors_poll_delay = apds993x_als_poll_delay;
	data->ps_cdev = sensors_proximity_cdev;
	data->ps_cdev.sensors_enable = apds993x_ps_set_enable;
	data->ps_cdev.sensors_poll_delay = NULL,
	data->ps_cdev.sensors_poll_delay = NULL;

	err = sensors_classdev_register(&client->dev, &data->als_cdev);
	if (err) {