Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: hid-sensor-als: Add light color temperature support

On some platforms, ambient color sensors also support light color
temperature. Add support of light color temperature.

Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Link: https://lore.kernel.org/r/20240205185926.3030521-4-srinivas.pandruvada@linux.intel.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Basavaraj Natikar and committed by
Jonathan Cameron
3765d426 00c45c9e

+22
+21
drivers/iio/light/hid-sensor-als.c
··· 16 16 enum { 17 17 CHANNEL_SCAN_INDEX_INTENSITY, 18 18 CHANNEL_SCAN_INDEX_ILLUM, 19 + CHANNEL_SCAN_INDEX_COLOR_TEMP, 19 20 CHANNEL_SCAN_INDEX_MAX 20 21 }; 21 22 ··· 44 43 static const u32 als_usage_ids[] = { 45 44 HID_USAGE_SENSOR_LIGHT_ILLUM, 46 45 HID_USAGE_SENSOR_LIGHT_ILLUM, 46 + HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE, 47 47 }; 48 48 49 49 static const u32 als_sensitivity_addresses[] = { ··· 75 73 BIT(IIO_CHAN_INFO_HYSTERESIS) | 76 74 BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE), 77 75 .scan_index = CHANNEL_SCAN_INDEX_ILLUM, 76 + }, 77 + { 78 + .type = IIO_COLORTEMP, 79 + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), 80 + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) | 81 + BIT(IIO_CHAN_INFO_SCALE) | 82 + BIT(IIO_CHAN_INFO_SAMP_FREQ) | 83 + BIT(IIO_CHAN_INFO_HYSTERESIS) | 84 + BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE), 85 + .scan_index = CHANNEL_SCAN_INDEX_COLOR_TEMP, 78 86 }, 79 87 IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP) 80 88 }; ··· 123 111 report_id = als_state->als[chan->scan_index].report_id; 124 112 min = als_state->als[chan->scan_index].logical_minimum; 125 113 address = HID_USAGE_SENSOR_LIGHT_ILLUM; 114 + break; 115 + case CHANNEL_SCAN_INDEX_COLOR_TEMP: 116 + report_id = als_state->als[chan->scan_index].report_id; 117 + min = als_state->als[chan->scan_index].logical_minimum; 118 + address = HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE; 126 119 break; 127 120 default: 128 121 report_id = -1; ··· 247 230 case HID_USAGE_SENSOR_LIGHT_ILLUM: 248 231 als_state->scan.illum[CHANNEL_SCAN_INDEX_INTENSITY] = sample_data; 249 232 als_state->scan.illum[CHANNEL_SCAN_INDEX_ILLUM] = sample_data; 233 + ret = 0; 234 + break; 235 + case HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE: 236 + als_state->scan.illum[CHANNEL_SCAN_INDEX_COLOR_TEMP] = sample_data; 250 237 ret = 0; 251 238 break; 252 239 case HID_USAGE_SENSOR_TIME_TIMESTAMP:
+1
include/linux/hid-sensor-ids.h
··· 21 21 #define HID_USAGE_SENSOR_ALS 0x200041 22 22 #define HID_USAGE_SENSOR_DATA_LIGHT 0x2004d0 23 23 #define HID_USAGE_SENSOR_LIGHT_ILLUM 0x2004d1 24 + #define HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE 0x2004d2 24 25 25 26 /* PROX (200011) */ 26 27 #define HID_USAGE_SENSOR_PROX 0x200011