diff options
Diffstat (limited to 'drivers/firmware')
-rw-r--r-- | drivers/firmware/arm_scpi.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/firmware/arm_scpi.c b/drivers/firmware/arm_scpi.c index 63441e403f60..4447af482fe9 100644 --- a/drivers/firmware/arm_scpi.c +++ b/drivers/firmware/arm_scpi.c | |||
@@ -347,9 +347,8 @@ struct _scpi_sensor_info { | |||
347 | }; | 347 | }; |
348 | 348 | ||
349 | struct sensor_value { | 349 | struct sensor_value { |
350 | __le32 lo_val; | 350 | __le64 val; |
351 | __le32 hi_val; | 351 | }; |
352 | } __packed; | ||
353 | 352 | ||
354 | struct dev_pstate_set { | 353 | struct dev_pstate_set { |
355 | __le16 dev_id; | 354 | __le16 dev_id; |
@@ -777,11 +776,10 @@ static int scpi_sensor_get_value(u16 sensor, u64 *val) | |||
777 | return ret; | 776 | return ret; |
778 | 777 | ||
779 | if (scpi_info->is_legacy) | 778 | if (scpi_info->is_legacy) |
780 | /* only 32-bits supported, hi_val can be junk */ | 779 | /* only 32-bits supported, upper 32 bits can be junk */ |
781 | *val = le32_to_cpu(buf.lo_val); | 780 | *val = le32_to_cpup((__le32 *)&buf.val); |
782 | else | 781 | else |
783 | *val = (u64)le32_to_cpu(buf.hi_val) << 32 | | 782 | *val = le64_to_cpu(buf.val); |
784 | le32_to_cpu(buf.lo_val); | ||
785 | 783 | ||
786 | return 0; | 784 | return 0; |
787 | } | 785 | } |