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

Commit 6a55331c authored by Sudeep Holla's avatar Sudeep Holla
Browse files

firmware: arm_scmi: Drop async flag in sensor_ops->reading_get



SENSOR_DESCRIPTION_GET provides attributes to indicate if the sensor
supports asynchronous read. Ideally we should be able to read that flag
and use asynchronous reads for any sensors with that attribute set.

In order to add that support, let's drop the async flag passed to
sensor_ops->reading_get and dynamically switch between sync and async
flags based on the attributes as provided by the firmware.

Cc: linux-hwmon@vger.kernel.org
Acked-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
parent 58ecdf03
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -211,7 +211,7 @@ scmi_sensor_trip_point_config(const struct scmi_handle *handle, u32 sensor_id,
}
}


static int scmi_sensor_reading_get(const struct scmi_handle *handle,
static int scmi_sensor_reading_get(const struct scmi_handle *handle,
				   u32 sensor_id, bool async, u64 *value)
				   u32 sensor_id, u64 *value)
{
{
	int ret;
	int ret;
	struct scmi_xfer *t;
	struct scmi_xfer *t;
@@ -225,7 +225,7 @@ static int scmi_sensor_reading_get(const struct scmi_handle *handle,


	sensor = t->tx.buf;
	sensor = t->tx.buf;
	sensor->id = cpu_to_le32(sensor_id);
	sensor->id = cpu_to_le32(sensor_id);
	sensor->flags = cpu_to_le32(async ? SENSOR_READ_ASYNC : 0);
	sensor->flags = cpu_to_le32(0);


	ret = scmi_do_xfer(handle, t);
	ret = scmi_do_xfer(handle, t);
	if (!ret) {
	if (!ret) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -72,7 +72,7 @@ static int scmi_hwmon_read(struct device *dev, enum hwmon_sensor_types type,
	const struct scmi_handle *h = scmi_sensors->handle;
	const struct scmi_handle *h = scmi_sensors->handle;


	sensor = *(scmi_sensors->info[type] + channel);
	sensor = *(scmi_sensors->info[type] + channel);
	ret = h->sensor_ops->reading_get(h, sensor->id, false, &value);
	ret = h->sensor_ops->reading_get(h, sensor->id, &value);
	if (ret)
	if (ret)
		return ret;
		return ret;


+1 −1
Original line number Original line Diff line number Diff line
@@ -182,7 +182,7 @@ struct scmi_sensor_ops {
	int (*trip_point_config)(const struct scmi_handle *handle,
	int (*trip_point_config)(const struct scmi_handle *handle,
				 u32 sensor_id, u8 trip_id, u64 trip_value);
				 u32 sensor_id, u8 trip_id, u64 trip_value);
	int (*reading_get)(const struct scmi_handle *handle, u32 sensor_id,
	int (*reading_get)(const struct scmi_handle *handle, u32 sensor_id,
			   bool async, u64 *value);
			   u64 *value);
};
};


/**
/**