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

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

This reverts commit 5f05285df691b1e82108eead7165feae238c95ef.

This commit assumes that every HID descriptor for ALS sensor has
presence of usage id ID HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE.
When the above usage id is absent, driver probe fails. This breaks
ALS sensor functionality on many platforms.

Till we have a good solution, revert this commit.

Reported-by: Thomas Weißschuh <thomas@t-8ch.de>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218223
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: <stable@vger.kernel.org>
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/r/20231217200703.719876-3-srinivas.pandruvada@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Srinivas Pandruvada and committed by
Greg Kroah-Hartman
d4005431 b9670ee2

+2 -36
+2 -35
drivers/iio/light/hid-sensor-als.c
··· 14 14 #include "../common/hid-sensors/hid-sensor-trigger.h" 15 15 16 16 enum { 17 - CHANNEL_SCAN_INDEX_INTENSITY, 18 - CHANNEL_SCAN_INDEX_ILLUM, 19 - CHANNEL_SCAN_INDEX_COLOR_TEMP, 17 + CHANNEL_SCAN_INDEX_INTENSITY = 0, 18 + CHANNEL_SCAN_INDEX_ILLUM = 1, 20 19 CHANNEL_SCAN_INDEX_MAX 21 20 }; 22 21 ··· 65 66 BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE), 66 67 .scan_index = CHANNEL_SCAN_INDEX_ILLUM, 67 68 }, 68 - { 69 - .type = IIO_COLORTEMP, 70 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), 71 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) | 72 - BIT(IIO_CHAN_INFO_SCALE) | 73 - BIT(IIO_CHAN_INFO_SAMP_FREQ) | 74 - BIT(IIO_CHAN_INFO_HYSTERESIS) | 75 - BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE), 76 - .scan_index = CHANNEL_SCAN_INDEX_COLOR_TEMP, 77 - }, 78 69 IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP) 79 70 }; 80 71 ··· 102 113 report_id = als_state->als[chan->scan_index].report_id; 103 114 min = als_state->als[chan->scan_index].logical_minimum; 104 115 address = HID_USAGE_SENSOR_LIGHT_ILLUM; 105 - break; 106 - case CHANNEL_SCAN_INDEX_COLOR_TEMP: 107 - report_id = als_state->als[chan->scan_index].report_id; 108 - min = als_state->als[chan->scan_index].logical_minimum; 109 - address = HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE; 110 116 break; 111 117 default: 112 118 report_id = -1; ··· 223 239 als_state->scan.illum[CHANNEL_SCAN_INDEX_ILLUM] = sample_data; 224 240 ret = 0; 225 241 break; 226 - case HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE: 227 - als_state->scan.illum[CHANNEL_SCAN_INDEX_COLOR_TEMP] = sample_data; 228 - ret = 0; 229 - break; 230 242 case HID_USAGE_SENSOR_TIME_TIMESTAMP: 231 243 als_state->timestamp = hid_sensor_convert_timestamp(&als_state->common_attributes, 232 244 *(s64 *)raw_data); ··· 257 277 dev_dbg(&pdev->dev, "als %x:%x\n", st->als[i].index, 258 278 st->als[i].report_id); 259 279 } 260 - 261 - ret = sensor_hub_input_get_attribute_info(hsdev, HID_INPUT_REPORT, 262 - usage_id, 263 - HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE, 264 - &st->als[CHANNEL_SCAN_INDEX_COLOR_TEMP]); 265 - if (ret < 0) 266 - return ret; 267 - als_adjust_channel_bit_mask(channels, CHANNEL_SCAN_INDEX_COLOR_TEMP, 268 - st->als[CHANNEL_SCAN_INDEX_COLOR_TEMP].size); 269 - 270 - dev_dbg(&pdev->dev, "als %x:%x\n", 271 - st->als[CHANNEL_SCAN_INDEX_COLOR_TEMP].index, 272 - st->als[CHANNEL_SCAN_INDEX_COLOR_TEMP].report_id); 273 280 274 281 st->scale_precision = hid_sensor_format_scale(usage_id, 275 282 &st->als[CHANNEL_SCAN_INDEX_INTENSITY],
-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 25 24 26 25 /* PROX (200011) */ 27 26 #define HID_USAGE_SENSOR_PROX 0x200011