firmware: arm_scmi: fix bitfield definitions for SENSOR_DESC attributes
authorSudeep Holla <sudeep.holla@arm.com>
Tue, 14 May 2019 16:10:31 +0000 (17:10 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Wed, 12 Jun 2019 11:29:10 +0000 (12:29 +0100)
As per the SCMI specification the bitfields for SENSOR_DESC attributes
are as follows:
attributes_low  [7:0]  Number of trip points supported
attributes_high [15:11] The power-of-10 multiplier in 2's-complement
format that is applied to the sensor units

Looks like the code developed during the draft versions of the
specification slipped through and are wrong with respect to final
released version. Fix them by adjusting the bitfields appropriately.

Fixes: 5179c523c1ea ("firmware: arm_scmi: add initial support for sensor protocol")
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_scmi/sensors.c

index b53d5cc9c9f6c57ebae04f6a43e42fb814fc27d9..c00287b5f2c237f8c73eb4ad482df6dc5ba3fd9d 100644 (file)
@@ -30,10 +30,10 @@ struct scmi_msg_resp_sensor_description {
                __le32 id;
                __le32 attributes_low;
 #define SUPPORTS_ASYNC_READ(x) ((x) & BIT(31))
-#define NUM_TRIP_POINTS(x)     (((x) >> 4) & 0xff)
+#define NUM_TRIP_POINTS(x)     ((x) & 0xff)
                __le32 attributes_high;
 #define SENSOR_TYPE(x)         ((x) & 0xff)
-#define SENSOR_SCALE(x)                (((x) >> 11) & 0x3f)
+#define SENSOR_SCALE(x)                (((x) >> 11) & 0x1f)
 #define SENSOR_UPDATE_SCALE(x) (((x) >> 22) & 0x1f)
 #define SENSOR_UPDATE_BASE(x)  (((x) >> 27) & 0x1f)
                    u8 name[SCMI_MAX_STR_SIZE];