diff mbox series

[v2,8/9] HID: amd_sfh: Add light chromaticity support

Message ID 20230919081054.2050714-9-Basavaraj.Natikar@amd.com (mailing list archive)
State Mainlined
Commit 3244d44a7c5e6961d79eafa44370ff13c909d670
Delegated to: Jiri Kosina
Headers show
Series Support light color temperature and chromaticity | expand

Commit Message

Basavaraj Natikar Sept. 19, 2023, 8:10 a.m. UTC
In most cases, ambient color sensors also support the x and y light
colors, which represent the coordinates on the CIE 1931 chromaticity
diagram. Thus, add light chromaticity x and y.

Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
---
 .../amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c  |  5 ++++-
 .../amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h  |  2 ++
 .../hid_descriptor/amd_sfh_hid_report_desc.h       | 14 ++++++++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)

Comments

Jiri Kosina Sept. 20, 2023, 3:25 p.m. UTC | #1
On Tue, 19 Sep 2023, Basavaraj Natikar wrote:

> In most cases, ambient color sensors also support the x and y light
> colors, which represent the coordinates on the CIE 1931 chromaticity
> diagram. Thus, add light chromaticity x and y.
> 
> Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>

Acked-by: Jiri Kosina <jkosina@suse.cz>

> ---
>  .../amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c  |  5 ++++-
>  .../amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h  |  2 ++
>  .../hid_descriptor/amd_sfh_hid_report_desc.h       | 14 ++++++++++++++
>  3 files changed, 20 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c
> index b7e732ec4806..ef1f9be8b893 100644
> --- a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c
> +++ b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c
> @@ -258,8 +258,11 @@ static u8 get_input_report(u8 current_index, int sensor_idx, int report_id,
>  			als_input.illuminance_value =
>  				(int)sensor_virt_addr[0] / AMD_SFH_FW_MULTIPLIER;
>  
> -		if (sensor_idx == ACS_IDX)
> +		if (sensor_idx == ACS_IDX) {
>  			als_input.light_color_temp = sensor_virt_addr[1];
> +			als_input.chromaticity_x_value = sensor_virt_addr[2];
> +			als_input.chromaticity_y_value = sensor_virt_addr[3];
> +		}
>  
>  		report_size = sizeof(als_input);
>  		memcpy(input_report, &als_input, sizeof(als_input));
> diff --git a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h
> index a7fc50deca4d..882434b1501f 100644
> --- a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h
> +++ b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h
> @@ -100,6 +100,8 @@ struct als_input_report {
>  	/* values specific to this sensor */
>  	int illuminance_value;
>  	int light_color_temp;
> +	int chromaticity_x_value;
> +	int chromaticity_y_value;
>  } __packed;
>  
>  struct hpd_feature_report {
> diff --git a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h
> index 26e994e54ded..67ec2d6a417d 100644
> --- a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h
> +++ b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h
> @@ -648,6 +648,20 @@ static const u8 als_report_descriptor[] = {
>  0x75, 32,		/* HID report size(32) */
>  0x95, 1,		/* HID report count (1) */
>  0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
> +0x0A, 0xD4, 0x04,       /* HID usage sensor data light chromaticity_x */
> +0x17, 0x00, 0x00, 0x01, 0x80,	 /* HID logical Min_32 */
> +0x27, 0xFF, 0xFF, 0xFF, 0x7F,	 /* HID logical Max_32 */
> +0x55, 0x0,		/* HID unit exponent(0x0) */
> +0x75, 32,		/* HID report size(32) */
> +0x95, 1,		/* HID report count(1) */
> +0X81, 0x02,		/* HID Input (Data_Var_Abs) */
> +0x0A, 0xD5, 0x04,       /* HID usage sensor data light chromaticity_y */
> +0x17, 0x00, 0x00, 0x01, 0x80,	 /* HID logical Min_32 */
> +0x27, 0xFF, 0xFF, 0xFF, 0x7F,	 /* HID logical Max_32 */
> +0x55, 0x0,		/* HID unit exponent(0x0) */
> +0x75, 32,		/* HID report size(32) */
> +0x95, 1,		/* HID report count (1) */
> +0X81, 0x02,		/* HID Input (Data_Var_Abs) */
>  0xC0			/* HID end collection */
>  };
>  
> -- 
> 2.25.1
>
diff mbox series

Patch

diff --git a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c
index b7e732ec4806..ef1f9be8b893 100644
--- a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c
+++ b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c
@@ -258,8 +258,11 @@  static u8 get_input_report(u8 current_index, int sensor_idx, int report_id,
 			als_input.illuminance_value =
 				(int)sensor_virt_addr[0] / AMD_SFH_FW_MULTIPLIER;
 
-		if (sensor_idx == ACS_IDX)
+		if (sensor_idx == ACS_IDX) {
 			als_input.light_color_temp = sensor_virt_addr[1];
+			als_input.chromaticity_x_value = sensor_virt_addr[2];
+			als_input.chromaticity_y_value = sensor_virt_addr[3];
+		}
 
 		report_size = sizeof(als_input);
 		memcpy(input_report, &als_input, sizeof(als_input));
diff --git a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h
index a7fc50deca4d..882434b1501f 100644
--- a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h
+++ b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h
@@ -100,6 +100,8 @@  struct als_input_report {
 	/* values specific to this sensor */
 	int illuminance_value;
 	int light_color_temp;
+	int chromaticity_x_value;
+	int chromaticity_y_value;
 } __packed;
 
 struct hpd_feature_report {
diff --git a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h
index 26e994e54ded..67ec2d6a417d 100644
--- a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h
+++ b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h
@@ -648,6 +648,20 @@  static const u8 als_report_descriptor[] = {
 0x75, 32,		/* HID report size(32) */
 0x95, 1,		/* HID report count (1) */
 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
+0x0A, 0xD4, 0x04,       /* HID usage sensor data light chromaticity_x */
+0x17, 0x00, 0x00, 0x01, 0x80,	 /* HID logical Min_32 */
+0x27, 0xFF, 0xFF, 0xFF, 0x7F,	 /* HID logical Max_32 */
+0x55, 0x0,		/* HID unit exponent(0x0) */
+0x75, 32,		/* HID report size(32) */
+0x95, 1,		/* HID report count(1) */
+0X81, 0x02,		/* HID Input (Data_Var_Abs) */
+0x0A, 0xD5, 0x04,       /* HID usage sensor data light chromaticity_y */
+0x17, 0x00, 0x00, 0x01, 0x80,	 /* HID logical Min_32 */
+0x27, 0xFF, 0xFF, 0xFF, 0x7F,	 /* HID logical Max_32 */
+0x55, 0x0,		/* HID unit exponent(0x0) */
+0x75, 32,		/* HID report size(32) */
+0x95, 1,		/* HID report count (1) */
+0X81, 0x02,		/* HID Input (Data_Var_Abs) */
 0xC0			/* HID end collection */
 };