HID: amd_sfh: Add illuminance mask to limit ALS max value
authorBasavaraj Natikar <Basavaraj.Natikar@amd.com>
Mon, 31 Jan 2022 17:18:33 +0000 (22:48 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 Feb 2022 11:03:03 +0000 (12:03 +0100)
commit 91aaea527bc3b707c5d3208cde035421ed54f79c upstream.

ALS illuminance value present only in first 15 bits from SFH firmware
for V2 platforms. Hence added a mask of 15 bit to limit ALS max
illuminance values to get correct illuminance value.

Fixes: 0aad9c95eb9a ("HID: amd_sfh: Extend ALS support for newer AMD platform")
Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c

index 0c36972193821d1daf645751ebd917019fe68043..07eb3281b88dbb14b0f68210499b9844b47f8bff 100644 (file)
@@ -26,6 +26,7 @@
 #define HID_USAGE_SENSOR_STATE_READY_ENUM                             0x02
 #define HID_USAGE_SENSOR_STATE_INITIALIZING_ENUM                      0x05
 #define HID_USAGE_SENSOR_EVENT_DATA_UPDATED_ENUM                      0x04
+#define ILLUMINANCE_MASK                                       GENMASK(14, 0)
 
 int get_report_descriptor(int sensor_idx, u8 *rep_desc)
 {
@@ -245,7 +246,8 @@ u8 get_input_report(u8 current_index, int sensor_idx, int report_id, struct amd_
                get_common_inputs(&als_input.common_property, report_id);
                /* For ALS ,V2 Platforms uses C2P_MSG5 register instead of DRAM access method */
                if (supported_input == V2_STATUS)
-                       als_input.illuminance_value = (int)readl(privdata->mmio + AMD_C2P_MSG(5));
+                       als_input.illuminance_value =
+                               readl(privdata->mmio + AMD_C2P_MSG(5)) & ILLUMINANCE_MASK;
                else
                        als_input.illuminance_value =
                                (int)sensor_virt_addr[0] / AMD_SFH_FW_MULTIPLIER;