From patchwork Tue Jan 9 18:00:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: srinivas pandruvada X-Patchwork-Id: 186493 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2411:b0:101:2151:f287 with SMTP id m17csp284069dyi; Tue, 9 Jan 2024 10:01:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IG2v6qts+iVKkZVD5/1cCNkfSPtJZa2gFZ509dB4ZmPwpeLoNIPrEKLZIG09bxP6zhF4VYd X-Received: by 2002:a05:6512:2249:b0:50e:b234:622a with SMTP id i9-20020a056512224900b0050eb234622amr3385640lfu.92.1704823310645; Tue, 09 Jan 2024 10:01:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704823310; cv=none; d=google.com; s=arc-20160816; b=jo5nn9Hf8F9fD8/XDEdG1eUxmXrTRURriWdYHe07mtF8KbaXC8yZvpildcMQe0K0pZ x5edCEW9N+Wml064LkvRNjy/txuQrbKPOCfaka4CM1J35E7OJ3rgcNNo7vVeRYDUtdfw Nb5ge/yMNjfkW/t3jIJQFhPmVvSSw3LGCJKoHt/1+Qd8keLHjB17FWJXFRhuPH5tWKLu NsMYC0m+cDUazUuqTBcJly0PCjTO9ur0s2kbkBxCSpBGoIMKsOGO82dSqOPjuVQrHqJT QWWKKdqQptCbh9MkWLERx4URzXdtyoZtPBsaudodjpM3/7Qbv/wvACUeNi9kfeeiFC7j 9p8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=F8ydjqu7H7KOueTzXABBzC5KQFd4AruADs0Vwe8FWrA=; fh=+qefaNsEkXb+6cE14coUwfWXDSnXoSFS2c07agj5LL0=; b=Z0WkwB7XovENx+PtdgN2LSg5FOouLZNlZD0vRn0HUUH9+UC56TgWGKTeI1rZOQ+JoQ HMQZK3y4GW5HlnplWLS3tl5fPL+6Y20tMcj1r1uN5uKQc1Hii3FYYhvmPItsShwdhziV a/dHH6g7z5oOzwcjdRXqRSMAgOhPqeSmk+/eQW63WLMCdOIersrS2YAEc7p6/qfxe8ti leTU63JRWyUQqvShCOsk9HpMh/AHrnORxd0OVonvzd+4Q9xJim1Ldpuc9TwQ4Yts8HVE CsRcYgsb6wVIz7zVLGpTV/mNmh7Fg0jkESNponMf1Urfb1DgVQhPK6SqOM2NpYbcH/FO 2o/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=lfXMYMK2; spf=pass (google.com: domain of linux-kernel+bounces-21201-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21201-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id v24-20020a1709060b5800b00a27a719a521si943026ejg.961.2024.01.09.10.01.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jan 2024 10:01:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-21201-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=lfXMYMK2; spf=pass (google.com: domain of linux-kernel+bounces-21201-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21201-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 647071F26912 for ; Tue, 9 Jan 2024 18:01:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B548F3D0A9; Tue, 9 Jan 2024 18:00:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="lfXMYMK2" Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4BA823BB25; Tue, 9 Jan 2024 18:00:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1704823221; x=1736359221; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oxuf2qv5qNCQwDrG+FQheyibqpQ4k7NBlmbN6ka5nqM=; b=lfXMYMK2uPAJmEFYDIHSgWra9t91SoSqWPJp6mCjch8lhI0TYaEck9NM 8FrpQpbKMkD1Fi9VlBci8z0A6vjdj7RjluUiokGCtxgwslwkWHO/dL7dM UBFRsniJQ9z1PVTDKl4+yUpfqKOQi6WkQZ+5qhDXLPX2a1wjeTcW/mzNO 6cmKjOaA6t5VionqWt63KTIRD3l8Ncm5Ae88Jjwcl70nId5zVURxI0wfB ABEvnpqRXAYACj/Ef5BX1yzDX9pbp2SHqW+BGEWWMZIVohyKlh7rUHwo1 5ptKHq/Ci3MYq6iqzk3vA/ZUP346FQujjOxQmYUjfKFtW09geAgAVPvGk w==; X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="429458612" X-IronPort-AV: E=Sophos;i="6.04,183,1695711600"; d="scan'208";a="429458612" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jan 2024 10:00:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="852269564" X-IronPort-AV: E=Sophos;i="6.04,183,1695711600"; d="scan'208";a="852269564" Received: from spandruv-desk.jf.intel.com ([10.54.75.14]) by fmsmga004.fm.intel.com with ESMTP; 09 Jan 2024 10:00:18 -0800 From: Srinivas Pandruvada To: jikos@kernel.org, jic23@kernel.org, lars@metafoo.de, Basavaraj.Natikar@amd.com Cc: linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v3 1/4] iio: hid-sensor-als: Assign channels dynamically Date: Tue, 9 Jan 2024 10:00:04 -0800 Message-Id: <20240109180007.3373784-2-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240109180007.3373784-1-srinivas.pandruvada@linux.intel.com> References: <20240109180007.3373784-1-srinivas.pandruvada@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787636807780389180 X-GMAIL-MSGID: 1787636807780389180 Instead of assuming that every channel defined statically by als_channels[] is present, assign dynamically based on presence of the respective usage id in the descriptor. This will allow to register ALS with limited channel support. Append the timestamp as the last channel. When not all usage ids are present, the scan index is adjusted to exclude unsupported channels. There is no intentional function changes done. Signed-off-by: Srinivas Pandruvada --- v3: Addressed comments from Jonthan: - Remove channel allocation and move to iio_priv() - Parse all usage IDs in a single loop and continue for failure. This way the temperature and chromaticity will not need any special processing to parse usage ids. - Don't leave empty channel indexes v2: New change drivers/iio/light/hid-sensor-als.c | 56 +++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c index 5cd27f04b45e..72a7c01c97f8 100644 --- a/drivers/iio/light/hid-sensor-als.c +++ b/drivers/iio/light/hid-sensor-als.c @@ -25,17 +25,26 @@ struct als_state { struct hid_sensor_hub_callbacks callbacks; struct hid_sensor_common common_attributes; struct hid_sensor_hub_attribute_info als[CHANNEL_SCAN_INDEX_MAX]; + struct iio_chan_spec channels[CHANNEL_SCAN_INDEX_MAX + 1]; struct { u32 illum[CHANNEL_SCAN_INDEX_MAX]; + u32 scan_index[CHANNEL_SCAN_INDEX_MAX]; u64 timestamp __aligned(8); } scan; int scale_pre_decml; int scale_post_decml; int scale_precision; int value_offset; + int num_channels; s64 timestamp; }; +/* The order of usage ids must match scan index starting from CHANNEL_SCAN_INDEX_INTENSITY */ +static const u32 als_usage_ids[] = { + HID_USAGE_SENSOR_LIGHT_ILLUM, + HID_USAGE_SENSOR_LIGHT_ILLUM, +}; + static const u32 als_sensitivity_addresses[] = { HID_USAGE_SENSOR_DATA_LIGHT, HID_USAGE_SENSOR_LIGHT_ILLUM, @@ -216,11 +225,14 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev, struct als_state *als_state = iio_priv(indio_dev); int ret = -EINVAL; u32 sample_data = *(u32 *)raw_data; + int scan_index; switch (usage_id) { case HID_USAGE_SENSOR_LIGHT_ILLUM: - als_state->scan.illum[CHANNEL_SCAN_INDEX_INTENSITY] = sample_data; - als_state->scan.illum[CHANNEL_SCAN_INDEX_ILLUM] = sample_data; + scan_index = als_state->scan.scan_index[CHANNEL_SCAN_INDEX_INTENSITY]; + als_state->scan.illum[scan_index] = sample_data; + scan_index = als_state->scan.scan_index[CHANNEL_SCAN_INDEX_ILLUM]; + als_state->scan.illum[scan_index] = sample_data; ret = 0; break; case HID_USAGE_SENSOR_TIME_TIMESTAMP: @@ -237,27 +249,39 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev, /* Parse report which is specific to an usage id*/ static int als_parse_report(struct platform_device *pdev, struct hid_sensor_hub_device *hsdev, - struct iio_chan_spec *channels, unsigned usage_id, struct als_state *st) { - int ret; + struct iio_chan_spec *channels; + int ret, index = 0; int i; + channels = st->channels; + for (i = 0; i <= CHANNEL_SCAN_INDEX_ILLUM; ++i) { ret = sensor_hub_input_get_attribute_info(hsdev, HID_INPUT_REPORT, usage_id, - HID_USAGE_SENSOR_LIGHT_ILLUM, + als_usage_ids[i], &st->als[i]); if (ret < 0) - return ret; - als_adjust_channel_bit_mask(channels, i, st->als[i].size); + continue; + + channels[index] = als_channels[i]; + st->scan.scan_index[i] = index; + + als_adjust_channel_bit_mask(channels, index, st->als[i].size); + ++index; dev_dbg(&pdev->dev, "als %x:%x\n", st->als[i].index, st->als[i].report_id); } + st->num_channels = index; + /* Return success even if one usage id is present */ + if (index) + ret = 0; + st->scale_precision = hid_sensor_format_scale(usage_id, &st->als[CHANNEL_SCAN_INDEX_INTENSITY], &st->scale_pre_decml, &st->scale_post_decml); @@ -293,15 +317,7 @@ static int hid_als_probe(struct platform_device *pdev) return ret; } - indio_dev->channels = devm_kmemdup(&pdev->dev, als_channels, - sizeof(als_channels), GFP_KERNEL); - if (!indio_dev->channels) { - dev_err(&pdev->dev, "failed to duplicate channels\n"); - return -ENOMEM; - } - ret = als_parse_report(pdev, hsdev, - (struct iio_chan_spec *)indio_dev->channels, hsdev->usage, als_state); if (ret) { @@ -309,8 +325,14 @@ static int hid_als_probe(struct platform_device *pdev) return ret; } - indio_dev->num_channels = - ARRAY_SIZE(als_channels); + /* Add timestamp channel */ + als_state->channels[als_state->num_channels] = als_channels[CHANNEL_SCAN_INDEX_TIMESTAMP]; + als_state->channels[als_state->num_channels].scan_index = als_state->num_channels; + + /* +1 for adding timestamp channel */ + indio_dev->num_channels = als_state->num_channels + 1; + + indio_dev->channels = als_state->channels; indio_dev->info = &als_info; indio_dev->name = name; indio_dev->modes = INDIO_DIRECT_MODE; From patchwork Tue Jan 9 18:00:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: srinivas pandruvada X-Patchwork-Id: 186492 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2411:b0:101:2151:f287 with SMTP id m17csp283646dyi; Tue, 9 Jan 2024 10:01:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IFGuisFZXChX4pwcktdAQIhEdR29JoX18usnxKaSa65oc9Niy+EwuSyXNMYOPTEv2qendES X-Received: by 2002:a05:6102:5682:b0:467:b8fa:3a46 with SMTP id dd2-20020a056102568200b00467b8fa3a46mr2164535vsb.20.1704823284499; Tue, 09 Jan 2024 10:01:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704823284; cv=none; d=google.com; s=arc-20160816; b=N5VnxhkWsff5mCl8hLPK6OuOkTu3qy1R2vtrK1p23iI4NFnvQ9IYB3PUogy7xKfWTP EaQFMH9XbYKTlZb38r33gFdhtSl7zAXi31aEozKu1oWJWSmurDl3I7Uesm6ciNjiesIb 1Rym8FaD1w74283IFb9NXDc8/J7Vrjyz+YGDy6x925SN3XfcUdBiNsTgCrlYs5rz6Sy6 zWG2kvvqSYLb9VJgPBC4Xy7MJgIIArqiPKwxmGuUSGSZdSuyqoOT/iNNsVflSuWhr1OD 0hahBeeu1V1ifoBA0UPLMTo2cN3TXzWdC3IPa7taipBkD6STDx9U/DpB4aqDHkDoOMSA Jvgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=Ks51ya0fXjWYJKIS0NoDGdG09+rZ89DWnAL9QBHG+BQ=; fh=+qefaNsEkXb+6cE14coUwfWXDSnXoSFS2c07agj5LL0=; b=vtB+0EOUVuMMcxX5jFjwkrG3v3Me/x4mCwiO57wwJln11REnDI6rpUEOLmx7FczdYQ e7Fp0T2dVXs/daaxhw6O+jmYyM3NZmQIxubjJG3MfJ5WRlw4BmrD5+O8VCKQAo8g6Sbq sJJakyeP3tYJq3F6m/BH194r+vZ2XVUV5Yrh/Lxdei+MOo8/vWcy8rqx1+UYY/UaDJ0q RM7hYZ7ffCEZMfXpxQ/0U9rZukP2QKCZyuBZSW4g3nKL8so0tr14QS8O6gtjPYvFsLqy eetYnomNtizdr6inNRaMbDQITgS3T+5vY/KCcbvbyFTaFZ++USWKfwPGHPI14R665N0y cdyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Xidoo9Il; spf=pass (google.com: domain of linux-kernel+bounces-21202-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21202-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id m5-20020a67f285000000b00466f03a0f32si418333vsk.37.2024.01.09.10.01.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jan 2024 10:01:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-21202-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Xidoo9Il; spf=pass (google.com: domain of linux-kernel+bounces-21202-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21202-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 4C1C61C24BE9 for ; Tue, 9 Jan 2024 18:01:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 869E03D0A0; Tue, 9 Jan 2024 18:00:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Xidoo9Il" Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DF4A3BB2C; Tue, 9 Jan 2024 18:00:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1704823221; x=1736359221; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=V+4Z2SI36gE5bFYHxH+Q/B+lJZGmrb1RKuRByt2yuxA=; b=Xidoo9IlLjL0Q8OS2pw8JkhBL1mEWWCDmNeHIBE1x3MzkcWO2L3A7E1Q d3jppCopGtJe12SbXbVEq+gsoTfI+yv2IGoXO0oYSems5vES0K5RIqXPc +J7jFvFx1BCBKZv3AuCInFAFZ/MoW3Q9b7BPiGlO46yRvwbUTX+dq7ICG z4QY9ozHnZmfNWeeEZ3/A1PPVKOtKvby5B3q5T12O/sUnSpkBXG+asY1f s3CZ/Rwlrb5GCuTplvVBaHTE97LvfTOUD/09WO3d77PjYyKdEAv+o97SB K0rKqyQtvCwOJO0uwEvpQfKZZNHWjGKtxxkKL7h/R3R+/pxtwgw92QhiL Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="429458616" X-IronPort-AV: E=Sophos;i="6.04,183,1695711600"; d="scan'208";a="429458616" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jan 2024 10:00:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="852269566" X-IronPort-AV: E=Sophos;i="6.04,183,1695711600"; d="scan'208";a="852269566" Received: from spandruv-desk.jf.intel.com ([10.54.75.14]) by fmsmga004.fm.intel.com with ESMTP; 09 Jan 2024 10:00:18 -0800 From: Srinivas Pandruvada To: jikos@kernel.org, jic23@kernel.org, lars@metafoo.de, Basavaraj.Natikar@amd.com Cc: linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v3 2/4] iio: hid-sensor-als: Remove hardcoding of values for enums Date: Tue, 9 Jan 2024 10:00:05 -0800 Message-Id: <20240109180007.3373784-3-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240109180007.3373784-1-srinivas.pandruvada@linux.intel.com> References: <20240109180007.3373784-1-srinivas.pandruvada@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787636780393657723 X-GMAIL-MSGID: 1787636780393657723 Remove hardcoding of values for enum CHANNEL_SCAN_INDEX_INTENSITY and CHANNEL_SCAN_INDEX_ILLUM. Signed-off-by: Srinivas Pandruvada --- v3: New patch. Added as the next patch removed the hardcoding of enum values when submitted. To remove unrelated changes, created a patch to just remove hardcoding of values. drivers/iio/light/hid-sensor-als.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c index 72a7c01c97f8..a7bde6b68102 100644 --- a/drivers/iio/light/hid-sensor-als.c +++ b/drivers/iio/light/hid-sensor-als.c @@ -14,8 +14,8 @@ #include "../common/hid-sensors/hid-sensor-trigger.h" enum { - CHANNEL_SCAN_INDEX_INTENSITY = 0, - CHANNEL_SCAN_INDEX_ILLUM = 1, + CHANNEL_SCAN_INDEX_INTENSITY, + CHANNEL_SCAN_INDEX_ILLUM, CHANNEL_SCAN_INDEX_MAX }; From patchwork Tue Jan 9 18:00:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: srinivas pandruvada X-Patchwork-Id: 186495 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2411:b0:101:2151:f287 with SMTP id m17csp285084dyi; Tue, 9 Jan 2024 10:02:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IEfClWpoPbNUVRyEmm7UIMqevn/gk8OM/JhrOZxb/P7lMwzgW0+eRz3tQx3gfzI3pxTdwdA X-Received: by 2002:a05:6a20:7d83:b0:199:99a1:eecd with SMTP id v3-20020a056a207d8300b0019999a1eecdmr5193848pzj.93.1704823373394; Tue, 09 Jan 2024 10:02:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704823373; cv=none; d=google.com; s=arc-20160816; b=ynd/SH8yqZtcq2Mos2iPBfrNp6c4Kz+b66zOf+krfEdd5Kz/m22MJnTacT0bWF44Ne t/rYudFLMHpRsE9BDA4CnyAsY/aZx9gS3MWjqE3H/TfPcXqHz1Jju8+YzD6K0Tu7y2h0 5aLAiryRg6kqeBCIdfiTKFdQIV9eEfOUJzAjJATzney0hXRU2Z3OiQafUzvbGf3KoJ4E NGPgs+LZE57jUuiKZKw+JAEaPgN9KvuCyLWV570A95ffqYjbICeAB2KBYldfmQfMWrDi eXVwAC8qOgR0JgjbHe0TacHMHovNOTMkYtKluxMFTXCTx2KFdlA+R2h20d3VfkYux++9 1UgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=bwtF5bxXleycqfyyomkkLK6RPkEr2ALNKux9DUgXpqc=; fh=+qefaNsEkXb+6cE14coUwfWXDSnXoSFS2c07agj5LL0=; b=Y7xqC+MRS8RA3CszFQs3koEGkw0mm5spekUapGi0xoGS1zbu29CDqN1Ywz54E2rMnh ug9a7yDEqzZcjvP8YFmn10nEtrjgYDv7ysj38IOsQQ8P3Kh2ggpbEUQVzloX3stsLiHb cXzBRTxwLuZxMe75lWATH4vwqcTUwE4tQzf9Laq7OE/MKfm+rj+zDGAxIjhWk97ccYqj uPU9GX1boT0Dy0EiymU2CAZU7GnF/BUmQSB257GeFZDsuCeCzSS3vWl6iOd5Q6X6tknv ZwCYXmHpAuS1OSVzlrKjZZ6kQ7TC8Bfoq18ZBXjBF8cBe7p4qR3sgp9sG92NXVaI31Hd K3Hw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=drgB2zRV; spf=pass (google.com: domain of linux-kernel+bounces-21203-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21203-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id bo10-20020a056a02038a00b005ceeeed8fa5si1867564pgb.176.2024.01.09.10.02.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jan 2024 10:02:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-21203-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=drgB2zRV; spf=pass (google.com: domain of linux-kernel+bounces-21203-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21203-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 4E900B23482 for ; Tue, 9 Jan 2024 18:01:40 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E33923D0D2; Tue, 9 Jan 2024 18:00:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="drgB2zRV" Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE67F3BB4C; Tue, 9 Jan 2024 18:00:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1704823222; x=1736359222; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=q1ovR6+O75gSajU4QJ+Ao6qPau2jMgalmF2X5drMR4I=; b=drgB2zRVjmXqL2vyEt4AwYvpIBX2cquGG9a0s//4YzDWwfTF1kfNzQ2x C6FY1lBkzlr+iC6TZbRZd92MSNSsoj9C0CBQB/tvQnPbrhd2ri4mYjAmw Z4d6WyOiW4J3K4ZKt0m+sPrWhzWCu2UkeziwlUPHGmMdeby+i3tG8HYfy jeVTUAhyPNmBJbT3VWhJKgAmijEJVK6iv4KYo5uRj19pESmrHvvAjGKlD o6YJfMKT6Y9toI61eB6AUtsqCAyL+04QlCUUtT03Pk4VPswHhTTLneE6V 2rIJWRpG2NJ7sRlCnLa2fofcZr1SZo0goQXWhL2PDp7ejSfTCLxHBikPm g==; X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="429458624" X-IronPort-AV: E=Sophos;i="6.04,183,1695711600"; d="scan'208";a="429458624" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jan 2024 10:00:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="852269567" X-IronPort-AV: E=Sophos;i="6.04,183,1695711600"; d="scan'208";a="852269567" Received: from spandruv-desk.jf.intel.com ([10.54.75.14]) by fmsmga004.fm.intel.com with ESMTP; 09 Jan 2024 10:00:19 -0800 From: Srinivas Pandruvada To: jikos@kernel.org, jic23@kernel.org, lars@metafoo.de, Basavaraj.Natikar@amd.com Cc: linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v3 3/4] iio: hid-sensor-als: Add light color temperature support Date: Tue, 9 Jan 2024 10:00:06 -0800 Message-Id: <20240109180007.3373784-4-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240109180007.3373784-1-srinivas.pandruvada@linux.intel.com> References: <20240109180007.3373784-1-srinivas.pandruvada@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787636873834850022 X-GMAIL-MSGID: 1787636873834850022 From: Basavaraj Natikar On some platforms, ambient color sensors also support light color temperature. Add support of light color temperature. Signed-off-by: Basavaraj Natikar Signed-off-by: Srinivas Pandruvada --- I don't have a system to test this patch. Hi Basavraj, Please test. v3: Simplilified as no special processing is required in als_parse_report() v2: Original patch from Basavaraj Natikar is modified to prevent failure when the new usage id is not found in the descriptor. drivers/iio/light/hid-sensor-als.c | 22 ++++++++++++++++++++++ include/linux/hid-sensor-ids.h | 1 + 2 files changed, 23 insertions(+) diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c index a7bde6b68102..0d54eb59e47d 100644 --- a/drivers/iio/light/hid-sensor-als.c +++ b/drivers/iio/light/hid-sensor-als.c @@ -16,6 +16,7 @@ enum { CHANNEL_SCAN_INDEX_INTENSITY, CHANNEL_SCAN_INDEX_ILLUM, + CHANNEL_SCAN_INDEX_COLOR_TEMP, CHANNEL_SCAN_INDEX_MAX }; @@ -43,6 +44,7 @@ struct als_state { static const u32 als_usage_ids[] = { HID_USAGE_SENSOR_LIGHT_ILLUM, HID_USAGE_SENSOR_LIGHT_ILLUM, + HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE, }; static const u32 als_sensitivity_addresses[] = { @@ -74,6 +76,16 @@ static const struct iio_chan_spec als_channels[] = { BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE), .scan_index = CHANNEL_SCAN_INDEX_ILLUM, }, + { + .type = IIO_COLORTEMP, + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) | + BIT(IIO_CHAN_INFO_SCALE) | + BIT(IIO_CHAN_INFO_SAMP_FREQ) | + BIT(IIO_CHAN_INFO_HYSTERESIS) | + BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE), + .scan_index = CHANNEL_SCAN_INDEX_COLOR_TEMP, + }, IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP) }; @@ -112,6 +124,11 @@ static int als_read_raw(struct iio_dev *indio_dev, min = als_state->als[chan->scan_index].logical_minimum; address = HID_USAGE_SENSOR_LIGHT_ILLUM; break; + case CHANNEL_SCAN_INDEX_COLOR_TEMP: + report_id = als_state->als[chan->scan_index].report_id; + min = als_state->als[chan->scan_index].logical_minimum; + address = HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE; + break; default: report_id = -1; break; @@ -235,6 +252,11 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev, als_state->scan.illum[scan_index] = sample_data; ret = 0; break; + case HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE: + scan_index = als_state->scan.scan_index[CHANNEL_SCAN_INDEX_COLOR_TEMP]; + als_state->scan.illum[scan_index] = sample_data; + ret = 0; + break; case HID_USAGE_SENSOR_TIME_TIMESTAMP: als_state->timestamp = hid_sensor_convert_timestamp(&als_state->common_attributes, *(s64 *)raw_data); diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h index 13b1e65fbdcc..8af4fb3e0254 100644 --- a/include/linux/hid-sensor-ids.h +++ b/include/linux/hid-sensor-ids.h @@ -21,6 +21,7 @@ #define HID_USAGE_SENSOR_ALS 0x200041 #define HID_USAGE_SENSOR_DATA_LIGHT 0x2004d0 #define HID_USAGE_SENSOR_LIGHT_ILLUM 0x2004d1 +#define HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE 0x2004d2 /* PROX (200011) */ #define HID_USAGE_SENSOR_PROX 0x200011 From patchwork Tue Jan 9 18:00:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: srinivas pandruvada X-Patchwork-Id: 186494 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2411:b0:101:2151:f287 with SMTP id m17csp284266dyi; Tue, 9 Jan 2024 10:02:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IG4IHtNvEub5oWGAYSmfgX6AQHqV+J9m1F0IYlLMm11mO6so8P0CJrqt1XxI+mJaqqrwwZK X-Received: by 2002:a17:907:6d25:b0:a28:61f7:bbdb with SMTP id sa37-20020a1709076d2500b00a2861f7bbdbmr789984ejc.71.1704823321568; Tue, 09 Jan 2024 10:02:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704823321; cv=none; d=google.com; s=arc-20160816; b=Vt8v/BbDG1psN2kwP3jeulZ+sH5nHDOro90Q5jUUguIY0ykJnuzRUcnkI9T8hgNaut v7jALctv9B6Fj/7YlipyRcCFV/EpAO+HVif+FHCzoAza6Pu5VJU8mr41gOI3sUGNYt2+ IHq+Y+iw3Ilr7tNe1BoGPTyt5FIOTk5ohpttFkPmK28adPzwTB5jyb+r5/EO++kh4Weu KsLqpWf3qBMY6c0UJBxf17KnuLgx6h+psTJzqcM2FlErWQEde4ZAGrxPEIo5IoWg6g1y u/19eDbQyxCp0vHGU5NNohfDFIoj/uXP1KThAeGq/CzyE7mZD7mQKWiFHIHAvz2PbQhK i3Qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=fFghGu7UjveVWnGB6XThkI26ce0WVAwD89OVIETCIY8=; fh=+qefaNsEkXb+6cE14coUwfWXDSnXoSFS2c07agj5LL0=; b=oEjRFpRvQUz0mgxk2WRswue3aRDqCC2LfH9BVwovJJJeKOl7rBqCQzH5JNPujboShR GzrCa4kvtkN9WYv5f3YfEVL5HoIGAd7qEAzj6vlZeuNQu2ApFR3LfIG69ZjdHogV5jKy 2G/ja9l87ICMxJAdQCYujkh/wwyBr37K7IsO7VfAfM2dSRReL69nQmBy0kUdoxDmqgTb FT8f2K4agS0fsAICrx5dxUmA6o4fkL0jLWjEeMHLQjcaE5il3UGpToj3x38G/AcXU4vQ zWI8ZjYy/aAsXV7dK0p4UHWlnQKWW7UsG6XfTvOC99Rg7p4kQ8fO7KXZbjzf1dU2CXqh mukg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ahhnHmr1; spf=pass (google.com: domain of linux-kernel+bounces-21204-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21204-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id h24-20020a170906719800b00a28a9e27f6asi992609ejk.536.2024.01.09.10.02.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jan 2024 10:02:01 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-21204-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ahhnHmr1; spf=pass (google.com: domain of linux-kernel+bounces-21204-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-21204-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id C4E891F2503C for ; Tue, 9 Jan 2024 18:01:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3AC583D0DA; Tue, 9 Jan 2024 18:00:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ahhnHmr1" Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04F633C062; Tue, 9 Jan 2024 18:00:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1704823223; x=1736359223; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JBHTOFjS+8FeBiXrdcJULXAotQDo9K1j/BNorbGGqgc=; b=ahhnHmr1uLg3V+ScKwwZaBajoVIaNVlybkLScZcJCZH9jMfTG09gqqJY krg2emhwMJVCrjFS2ifSoCRB0DM7Qe4T+VE5DvSdAP6P3MPuV6/hiu8hA ClTvGJxMpsSQct9WWM7EDnrCod4SJ6G4GkbCc5hyaAS2NA/7IK0GgDmD3 7K/IVQcGJS6kLP6TQiGHHQBf4ehrXcEH5+Xm9P4AY5uztTF0q8xqHgJ70 ZhqrUfU5xlFXcRAY9zaBH/uBdqzpdfKd2U1Zwrq/rcL9C3DDB4jbigwRw M+FCGyoz3O+xPm/AxqFEaBRdrRs0O+n9QZHF2T/pICyR+FzPe2kz39lXU g==; X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="429458629" X-IronPort-AV: E=Sophos;i="6.04,183,1695711600"; d="scan'208";a="429458629" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jan 2024 10:00:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="852269571" X-IronPort-AV: E=Sophos;i="6.04,183,1695711600"; d="scan'208";a="852269571" Received: from spandruv-desk.jf.intel.com ([10.54.75.14]) by fmsmga004.fm.intel.com with ESMTP; 09 Jan 2024 10:00:19 -0800 From: Srinivas Pandruvada To: jikos@kernel.org, jic23@kernel.org, lars@metafoo.de, Basavaraj.Natikar@amd.com Cc: linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v3 4/4] iio: hid-sensor-als: Add light chromaticity support Date: Tue, 9 Jan 2024 10:00:07 -0800 Message-Id: <20240109180007.3373784-5-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240109180007.3373784-1-srinivas.pandruvada@linux.intel.com> References: <20240109180007.3373784-1-srinivas.pandruvada@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787636819248349524 X-GMAIL-MSGID: 1787636819248349524 From: Basavaraj Natikar On some platforms, ambient color sensors also support the x and y light colors, which represent the coordinates on the CIE 1931 chromaticity diagram. Add light chromaticity x and y. Signed-off-by: Basavaraj Natikar Signed-off-by: Srinivas Pandruvada --- I don't have a system to test this patch. Hi Basavraj, Please test. v3: Simplilified as no special processing is required in als_parse_report() v2: Original patch from Basavaraj Natikar is modified to prevent failure when the new usage id is not found in the descriptor. drivers/iio/light/hid-sensor-als.c | 48 ++++++++++++++++++++++++++++++ include/linux/hid-sensor-ids.h | 3 ++ 2 files changed, 51 insertions(+) diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c index 0d54eb59e47d..9c31febc84b8 100644 --- a/drivers/iio/light/hid-sensor-als.c +++ b/drivers/iio/light/hid-sensor-als.c @@ -17,6 +17,8 @@ enum { CHANNEL_SCAN_INDEX_INTENSITY, CHANNEL_SCAN_INDEX_ILLUM, CHANNEL_SCAN_INDEX_COLOR_TEMP, + CHANNEL_SCAN_INDEX_CHROMATICITY_X, + CHANNEL_SCAN_INDEX_CHROMATICITY_Y, CHANNEL_SCAN_INDEX_MAX }; @@ -45,6 +47,8 @@ static const u32 als_usage_ids[] = { HID_USAGE_SENSOR_LIGHT_ILLUM, HID_USAGE_SENSOR_LIGHT_ILLUM, HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE, + HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X, + HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y, }; static const u32 als_sensitivity_addresses[] = { @@ -86,6 +90,30 @@ static const struct iio_chan_spec als_channels[] = { BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE), .scan_index = CHANNEL_SCAN_INDEX_COLOR_TEMP, }, + { + .type = IIO_CHROMATICITY, + .modified = 1, + .channel2 = IIO_MOD_X, + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) | + BIT(IIO_CHAN_INFO_SCALE) | + BIT(IIO_CHAN_INFO_SAMP_FREQ) | + BIT(IIO_CHAN_INFO_HYSTERESIS) | + BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE), + .scan_index = CHANNEL_SCAN_INDEX_CHROMATICITY_X, + }, + { + .type = IIO_CHROMATICITY, + .modified = 1, + .channel2 = IIO_MOD_Y, + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) | + BIT(IIO_CHAN_INFO_SCALE) | + BIT(IIO_CHAN_INFO_SAMP_FREQ) | + BIT(IIO_CHAN_INFO_HYSTERESIS) | + BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE), + .scan_index = CHANNEL_SCAN_INDEX_CHROMATICITY_Y, + }, IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP) }; @@ -129,6 +157,16 @@ static int als_read_raw(struct iio_dev *indio_dev, min = als_state->als[chan->scan_index].logical_minimum; address = HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE; break; + case CHANNEL_SCAN_INDEX_CHROMATICITY_X: + report_id = als_state->als[chan->scan_index].report_id; + min = als_state->als[chan->scan_index].logical_minimum; + address = HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X; + break; + case CHANNEL_SCAN_INDEX_CHROMATICITY_Y: + report_id = als_state->als[chan->scan_index].report_id; + min = als_state->als[chan->scan_index].logical_minimum; + address = HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y; + break; default: report_id = -1; break; @@ -257,6 +295,16 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev, als_state->scan.illum[scan_index] = sample_data; ret = 0; break; + case HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X: + scan_index = als_state->scan.scan_index[CHANNEL_SCAN_INDEX_CHROMATICITY_X]; + als_state->scan.illum[scan_index] = sample_data; + ret = 0; + break; + case HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y: + scan_index = als_state->scan.scan_index[CHANNEL_SCAN_INDEX_CHROMATICITY_Y]; + als_state->scan.illum[scan_index] = sample_data; + ret = 0; + break; case HID_USAGE_SENSOR_TIME_TIMESTAMP: als_state->timestamp = hid_sensor_convert_timestamp(&als_state->common_attributes, *(s64 *)raw_data); diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h index 8af4fb3e0254..6730ee900ee1 100644 --- a/include/linux/hid-sensor-ids.h +++ b/include/linux/hid-sensor-ids.h @@ -22,6 +22,9 @@ #define HID_USAGE_SENSOR_DATA_LIGHT 0x2004d0 #define HID_USAGE_SENSOR_LIGHT_ILLUM 0x2004d1 #define HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE 0x2004d2 +#define HID_USAGE_SENSOR_LIGHT_CHROMATICITY 0x2004d3 +#define HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X 0x2004d4 +#define HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y 0x2004d5 /* PROX (200011) */ #define HID_USAGE_SENSOR_PROX 0x200011