lkml.org 
[lkml]   [2020]   [Nov]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH v2 2/6] firmware: arm_scmi: add SCMIv3.0 Sensors descriptors extensions
Date
On 26.10.20 21:10, Cristian Marussi wrote:
> Add support for new SCMIv3.0 Sensors extensions related to new sensors'
> features, like multiple axis and update intervals, while keeping
> compatibility with SCMIv2.0 features.
> While at that, refactor and simplify all the internal helpers macros and
> move struct scmi_sensor_info to use only non-fixed-size typing.
>
> Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> ---
> v1 --> v2
> - restrict segmented intervals descriptors to single triplet
> - add proper usage of scmi_reset_rx_to_maxsz
> ---
> drivers/firmware/arm_scmi/sensors.c | 391 ++++++++++++++++++++++++++--
> include/linux/scmi_protocol.h | 219 +++++++++++++++-
> 2 files changed, 584 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/firmware/arm_scmi/sensors.c b/drivers/firmware/arm_scmi/sensors.c
> index 6aaff478d032..5a18f8c84bef 100644
> --- a/drivers/firmware/arm_scmi/sensors.c
> +++ b/drivers/firmware/arm_scmi/sensors.c
> @@ -7,16 +7,21 @@
>
> #define pr_fmt(fmt) "SCMI Notifications SENSOR - " fmt
>
> +#include <linux/bitfield.h>
> #include <linux/scmi_protocol.h>
>
> #include "common.h"
> #include "notify.h"
>
> +#define SCMI_MAX_NUM_SENSOR_AXIS 64

IMHO the related 6 bit wide fields, like SENSOR_DESCRIPTION_GET "Number
of axes", should determine the maximum value, so 64 -> 63.

[...]

> +
> +/**
> + * struct scmi_sensor_info - represents information related to one of the
> + * available sensors.
> + * @id: Sensor ID.
> + * @type: Sensor type. Chosen amongst one of @enum scmi_sensor_class.
> + * @scale: Power-of-10 multiplier applied to the sensor unit.
> + * @num_trip_points: Number of maximum configurable trip points.
> + * @async: Flag for asynchronous read support.
> + * @update: Flag for continuouos update notification support.
> + * @timestamped: Flag for timestamped read support.
> + * @tstamp_scale: Power-of-10 multiplier applied to the sensor timestamps to
> + * represent it in seconds.
> + * @num_axis: Number of supported axis if any. Reported as 0 for scalar sensors.
> + * @axis: Pointer to an array of @num_axis descriptors.
> + * @intervals: Descriptor of available update intervals.
> + * @sensor_config: A bitmask reporting the current sensor configuration as
> + * detailed in the SCMI specification: it can accessed and
> + * modified through the accompanying macros.
> + * @name: NULL-terminated string representing sensor name as advertised by
> + * SCMI platform.
> + * @extended_scalar_attrs: Flag to indicate the presence of additional extended
> + * attributes for this sensor.
> + * @sensor_power: Extended attribute representing the average power
> + * consumed by the sensor in microwatts (uW) when it is active.
> + * Reported here only for scalar sensors.

Above line should go to @resolution below.

Best regards,

Peter

> + * Set to 0 if not reported by this sensor.
> + * @resolution: Extended attribute representing the resolution of the sensor.
> + * Set to 0 if not reported by this sensor.
> + * @exponent: Extended attribute representing the power-of-10 multiplier that is
> + * applied to the resolution field.
> + * Reported here only for scalar sensors.
> + * Set to 0 if not reported by this sensor.
> + * @scalar_attrs: Extended attributes representing minimum and maximum
> + * measurable values by this sensor.
> + * Reported here only for scalar sensors.
> + * Set to 0 if not reported by this sensor.
> + */
> struct scmi_sensor_info {
> - u32 id;
> - u8 type;
> - s8 scale;
> - u8 num_trip_points;
> + unsigned int id;
> + unsigned int type;
> + int scale;
> + unsigned int num_trip_points;
> bool async;
> + bool update;
> + bool timestamped;
> + int tstamp_scale;
> + unsigned int num_axis;
> + struct scmi_sensor_axis_info *axis;
> + struct scmi_sensor_intervals_info intervals;
> char name[SCMI_MAX_STR_SIZE];
> + bool extended_scalar_attrs;
> + unsigned int sensor_power;
> + unsigned int resolution;
> + int exponent;
> + struct scmi_range_attrs scalar_attrs;
> };

\
 
 \ /
  Last update: 2020-11-10 17:00    [W:0.133 / U:0.172 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site