Message ID | 20230919081054.2050714-5-Basavaraj.Natikar@amd.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 908fee511ced79537b78db60f9b9bdb2f537679a |
Delegated to: | Jiri Kosina |
Headers | show |
Series | Support light color temperature and chromaticity | expand |
On Tue, 19 Sep 2023, Basavaraj Natikar wrote: > In most cases, ambient color sensors also support light color temperature. > As a result, add support of light color temperature. > > Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com> Acked-by: Jiri Kosina <jkosina@suse.cz> > --- > drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c | 4 ++++ > drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h | 1 + > .../amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h | 7 +++++++ > 3 files changed, 12 insertions(+) > > 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 8716a05950c8..b7e732ec4806 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 > @@ -257,6 +257,10 @@ static u8 get_input_report(u8 current_index, int sensor_idx, int report_id, > else > als_input.illuminance_value = > (int)sensor_virt_addr[0] / AMD_SFH_FW_MULTIPLIER; > + > + if (sensor_idx == ACS_IDX) > + als_input.light_color_temp = sensor_virt_addr[1]; > + > report_size = sizeof(als_input); > memcpy(input_report, &als_input, sizeof(als_input)); > break; > 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 ebd55675eb62..a7fc50deca4d 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 > @@ -99,6 +99,7 @@ struct als_input_report { > struct common_input_property common_property; > /* values specific to this sensor */ > int illuminance_value; > + int light_color_temp; > } __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 697f2791ea9c..26e994e54ded 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 > @@ -641,6 +641,13 @@ 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, 0xD2, 0x04, /* HID usage sensor data light temperature */ > +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_Arr_Abs) */ > 0xC0 /* HID end collection */ > }; > > -- > 2.25.1 >
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 8716a05950c8..b7e732ec4806 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 @@ -257,6 +257,10 @@ static u8 get_input_report(u8 current_index, int sensor_idx, int report_id, else als_input.illuminance_value = (int)sensor_virt_addr[0] / AMD_SFH_FW_MULTIPLIER; + + if (sensor_idx == ACS_IDX) + als_input.light_color_temp = sensor_virt_addr[1]; + report_size = sizeof(als_input); memcpy(input_report, &als_input, sizeof(als_input)); break; 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 ebd55675eb62..a7fc50deca4d 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 @@ -99,6 +99,7 @@ struct als_input_report { struct common_input_property common_property; /* values specific to this sensor */ int illuminance_value; + int light_color_temp; } __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 697f2791ea9c..26e994e54ded 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 @@ -641,6 +641,13 @@ 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, 0xD2, 0x04, /* HID usage sensor data light temperature */ +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_Arr_Abs) */ 0xC0 /* HID end collection */ };
In most cases, ambient color sensors also support light color temperature. As a result, add support of light color temperature. Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com> --- drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c | 4 ++++ drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h | 1 + .../amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h | 7 +++++++ 3 files changed, 12 insertions(+)