From nobody Sun Nov 24 22:47:53 2024 Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 009F01547DC for ; Fri, 1 Nov 2024 07:46:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447196; cv=none; b=mSOcyulDV2b3MDaclyrNvj3UK0Ok+cXXtT5eAkwpXIkMkkcmaq76pX57DM2iOnhqWW/25sIyfeZ5UFMafvpkNveuKUxM3qANQ3zHwENehyQdtNHQa8o0j4zyPGzQGFXuiNKwCwMRXFEwsu25SbxMj61IDWcpGHPXMDwK1DRjS/Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447196; c=relaxed/simple; bh=E5IKpWlBrs6BrNxKGj8gL69lGAFGxkNE1Vi/39M/35Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=s1dOmKlMuKk1AF/RQZj0Yn68Vr3SaYLH0tFSHkApSa4ZgInB6ixNSNAuibZMKeBgnaR1/NJcEDVM5Yt8CP9DewulCRF3Gy8Uy8Sg6fr1PfnpuFF7B+G3hzS1POaievZRaQVF8WMrFXX9uuyef3x8a9OkzzsLE/CEtJ5XPn5Le0Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=bJRS5Dw5; arc=none smtp.client-ip=209.85.219.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="bJRS5Dw5" Received: by mail-qv1-f45.google.com with SMTP id 6a1803df08f44-6cbf2fc28feso10275526d6.0 for ; Fri, 01 Nov 2024 00:46:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1730447193; x=1731051993; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=XRIQcTwMhYqGctEPu/xoF4uEWBP35j2ZdxAtYHSbb2E=; b=bJRS5Dw5Wtylh77JiND2eJPvXo38bl8BLLLMdbb+3nFGYV3u/RcUJPmbPrUZoj4WAJ fUnuue8zJWyjeeoyatVZr0HwGvzULX8LjhbjTseKVW+lz8Nmxzzz0t8QwoVXvl1qAweE hZ7lnIkXc2vGSNqH4hKHMa72JHo9Hqyqn8iVM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730447193; x=1731051993; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XRIQcTwMhYqGctEPu/xoF4uEWBP35j2ZdxAtYHSbb2E=; b=kqSWBJqIql+i7vBQHMPQqpRRbL1jsHZRmi5tyDWr5doxri0dwb938i1NUqK3duvhqX iwWKQA7blejaN4KkEAnMaskr3v8iO52IBKziHtL3eoP9lZIVFwWwcGVBOevZ1TL1DDRA KWrY9qlUsqGdd850MjbXIqtkzXopgpDPHlB2x4xDuRIBo/sz7XdVr1VpMcigOyOOMj58 1tzTNkYiUGpC9zO3fIrrCLYJLpeNMb+k1sLkul9SzzHICCZimPmUHWvK0VRdqpVPhs3d v5tjUFfMvNdT4z1dD5acULX15udaDhTJyD4q0h97HH5U+57KWKSerhgtfQl4hspa/Oxu EJyA== X-Forwarded-Encrypted: i=1; AJvYcCXAfkXDNN3lJGBGpoDftTu94P6Pr49eB2b/qG7D+3embqkWi0x2YSHkDv8pHxqlz/6cKT087kMl3adn8BE=@vger.kernel.org X-Gm-Message-State: AOJu0YzSCWY0JZX9tQOLN6gy+hum8Qd1HkgWu65xUrxX1mwr5zuYrwEx CaYJDcVHhw3xTxs0+TsJ7AJPvSawV6Xr8MJi/Mq7kdgHoql0bK2c4uvzx5x69Q== X-Google-Smtp-Source: AGHT+IH85FO08smW7QUBXDwLWXCmrXXu+RueVAcXXNTAt6+T1hoAvANzKfmJkD42BgY3VSx0XSfq7Q== X-Received: by 2002:a05:6214:54c3:b0:6cd:f236:d127 with SMTP id 6a1803df08f44-6d185683724mr358670136d6.2.1730447192949; Fri, 01 Nov 2024 00:46:32 -0700 (PDT) Received: from denia.c.googlers.com (189.216.85.34.bc.googleusercontent.com. [34.85.216.189]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d35415b1casm16444236d6.78.2024.11.01.00.46.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Nov 2024 00:46:31 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 01 Nov 2024 07:46:27 +0000 Subject: [PATCH v3 1/5] iio: hid-sensors: Add proximity and attention IDs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241101-hpd-v3-1-e9c80b7c7164@chromium.org> References: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> In-Reply-To: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> To: Jiri Kosina , Benjamin Tissoires , Jonathan Cameron , Srinivas Pandruvada , Lars-Peter Clausen Cc: Harvey Yang , linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.13.0 The HID Usage Table at https://usb.org/sites/default/files/hut1_5.pdf reserves: - 0x4b2 for Human Proximity Range Distance between a human and the computer. Default unit of measure is meters; https://www.usb.org/sites/default/files/hutrr39b_0.pdf - 0x4bd for Human Attention Detected Human-Presence sensors detect the presence of humans in the sensor=E2=80=99s field-of-view using diverse and evolving technologies. Some presence sensors are implemented with low resolution video cameras, which can additionally track a subject=E2=80=99s attention (i.e. if the user is =E2=80=98looking=E2=80=99 at the system with the integrated sensor). A Human-Presence sensor, providing a Host with the user=E2=80=99s attention state, allows the Host to optimize its behavior. For example, to brighten/dim the system display, based on the user=E2=80=99s attention to t= he system (potentially prolonging battery life). Default unit is true/false; https://www.usb.org/sites/default/files/hutrr107-humanpresenceattention_1.p= df Signed-off-by: Ricardo Ribalda Acked-by: Srinivas Pandruvada --- include/linux/hid-sensor-ids.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h index 6730ee900ee1..8a03d9696b1c 100644 --- a/include/linux/hid-sensor-ids.h +++ b/include/linux/hid-sensor-ids.h @@ -30,6 +30,8 @@ #define HID_USAGE_SENSOR_PROX 0x200011 #define HID_USAGE_SENSOR_DATA_PRESENCE 0x2004b0 #define HID_USAGE_SENSOR_HUMAN_PRESENCE 0x2004b1 +#define HID_USAGE_SENSOR_HUMAN_PROXIMITY 0x2004b2 +#define HID_USAGE_SENSOR_HUMAN_ATTENTION 0x2004bd =20 /* Pressure (200031) */ #define HID_USAGE_SENSOR_PRESSURE 0x200031 --=20 2.47.0.163.g1226f6d8fa-goog From nobody Sun Nov 24 22:47:53 2024 Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6DCFE155725 for ; Fri, 1 Nov 2024 07:46:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447197; cv=none; b=ImyjEjMvBMJPhI8b4ORRaVeS0Ot9zLAdpemihDFHtbbAAyn/d4pLyChub1zzRG4mLAuy1GumTTfPZx/VvwxVhr0mmac4AaEIylLsFKg6DoZDCv+qAWLXT2IPJgmZ68YHUATD/7ovPDhdjyvFmA2+hx4g7s4e+C3TFwdPEaG4si0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447197; c=relaxed/simple; bh=NTUbVMYf2x+7q0/8Barwlk+9iZKYWLsfR/svD0SOK6M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eVsgRaVakjIojMkOm2dlfhIm1IETM1WF1Yp9SUz1XVcAJavejGlNKT1WRK+8G8Nh5FTVthDlKsFVgx3EKbFJt6BseF4LQ5p3rjV2lqsdoWhXRHPNpenkNNTt2wNTwxPoR0T2XpQXj7BaCQdCDMqM8nkvJbEhjxR91GUr4nEGOJk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=bAVRjLjw; arc=none smtp.client-ip=209.85.222.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="bAVRjLjw" Received: by mail-qk1-f179.google.com with SMTP id af79cd13be357-7b152a923a3so109839585a.3 for ; Fri, 01 Nov 2024 00:46:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1730447194; x=1731051994; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=gQttLL6CFS2JGt87dEF+H1Jt5OZPaXEa5P0U/qvO3f8=; b=bAVRjLjwIq6OrclJFJHiLf3srLR2oDUETFEOnAYAgU3GXP//o/56teqera1r/iY9v7 a4u8uqHgjfZtJ5E9EQxLlXXcqTsX4iBhXtmJ/HjH+i1Qk5akI7Jb35g4NK5i2/8IuOMC JJ7dworp/BayRuzjPST2Us4yrSzYx2yqQHbQ4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730447194; x=1731051994; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gQttLL6CFS2JGt87dEF+H1Jt5OZPaXEa5P0U/qvO3f8=; b=lOUZfsr6kcAmGBeeGfYu/HP3h3uV/NERNlYZwQVojijcAR0QfwlD1R11ZLPZTSWMR6 GXwgSYtHQ/0CvapFfZ5mLiJAERh+hGr7MkV0DgT59aF6QEg5pWMYSzogmy46HSyX7xdG +ty2732ARc5b8bdBDVsw8+DhE/WgrlvGNvrw8D95S6ne9Cbv0ObGvLO91AZ9cru/VoNP c/ZQfxN0wq5GbFFFkUmKLQSO8u28ETV/kBQa60IRXiN8BD4oc6yzDYJ9lS0b9W2M/1Ce pbrnXovd6L+T0c49USTJlhCOq0LvlSRRjkrhpPHjHhpZH5upePy10Zq5qL5zrbM6k37q dDQw== X-Forwarded-Encrypted: i=1; AJvYcCXKI4ep01xrL0c0G71Rycnhf5MfHVi3flZtQBVC+m2lQpn5fTtpdPKOo59V8D1diOPTDAJIuqVgQ+6C24I=@vger.kernel.org X-Gm-Message-State: AOJu0YwnxGhxniTU+dQJMp/llnIT+EHcqIeIWU/CvGJRvIQl6nnVLlOp Imr53prbBRmkigfho0woYHiVi/Q40mrIank+yA8ou3NeO2eYvU2b1vW/n4gcQA== X-Google-Smtp-Source: AGHT+IENVEkusl1Ou+3L/NJxmVRgnRFcmI2cch41SDweq+Sq+50us7wvB4RBAe0Eo6+OmdWlgyVR8Q== X-Received: by 2002:a05:6214:5349:b0:6cb:eb66:c37a with SMTP id 6a1803df08f44-6d351b4a825mr53516406d6.53.1730447194314; Fri, 01 Nov 2024 00:46:34 -0700 (PDT) Received: from denia.c.googlers.com (189.216.85.34.bc.googleusercontent.com. [34.85.216.189]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d35415b1casm16444236d6.78.2024.11.01.00.46.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Nov 2024 00:46:33 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 01 Nov 2024 07:46:28 +0000 Subject: [PATCH v3 2/5] iio: hid-sensors-prox: Factor-in hid_sensor_push_data Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241101-hpd-v3-2-e9c80b7c7164@chromium.org> References: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> In-Reply-To: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> To: Jiri Kosina , Benjamin Tissoires , Jonathan Cameron , Srinivas Pandruvada , Lars-Peter Clausen Cc: Harvey Yang , linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.13.0 The function is only called from one place and it is a one-liner. Signed-off-by: Ricardo Ribalda Acked-by: Srinivas Pandruvada --- drivers/iio/light/hid-sensor-prox.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-se= nsor-prox.c index 26c481d2998c..d38564fe22df 100644 --- a/drivers/iio/light/hid-sensor-prox.c +++ b/drivers/iio/light/hid-sensor-prox.c @@ -153,14 +153,6 @@ static const struct iio_info prox_info =3D { .write_raw =3D &prox_write_raw, }; =20 -/* Function to push data to buffer */ -static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *da= ta, - int len) -{ - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); - iio_push_to_buffers(indio_dev, data); -} - /* Callback handler to send event after all samples are received and captu= red */ static int prox_proc_event(struct hid_sensor_hub_device *hsdev, unsigned usage_id, @@ -170,10 +162,10 @@ static int prox_proc_event(struct hid_sensor_hub_devi= ce *hsdev, struct prox_state *prox_state =3D iio_priv(indio_dev); =20 dev_dbg(&indio_dev->dev, "prox_proc_event\n"); - if (atomic_read(&prox_state->common_attributes.data_ready)) - hid_sensor_push_data(indio_dev, - &prox_state->human_presence, - sizeof(prox_state->human_presence)); + if (atomic_read(&prox_state->common_attributes.data_ready)) { + dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); + iio_push_to_buffers(indio_dev, &prox_state->human_presence); + } =20 return 0; } --=20 2.47.0.163.g1226f6d8fa-goog From nobody Sun Nov 24 22:47:53 2024 Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 61ED114EC55 for ; Fri, 1 Nov 2024 07:46:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447199; cv=none; b=CudP2R64Q/DSVN+Qlo3xRjkeDOSjhQOuUXJaX+sCaPjwPvVsYyHxJCflWuCiBW0WmaNJeby+8eflPZSPaQkicZMxqIJd576bClgrTzne8dX4PhhK25++r4VR5cll2lPhBzK5zYPC48JFmTsmntSb/06E0m2zj5IetZNpFJ5v0es= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447199; c=relaxed/simple; bh=73w3b7JtSEWNTPdgJOVen0HK9Np++vEeWqSGPZeIaFg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K75rT4K8xu8vWridxty5TUaNZ/Q9JAW0xFfFmcIPwUQVI+8VzniOdSpoXXaAJxTpfTfQYxo3IdXcKJ7z6TC4cVGeI9AOnFbIs5RNCUvPZNGzSjm3Su7UXkoe5lvvOr5kJZqPxYJVZLSEBtH4Tp1K4g+79RQK65pxAzc3cl+Wang= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=gkkdo5pp; arc=none smtp.client-ip=209.85.219.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="gkkdo5pp" Received: by mail-qv1-f45.google.com with SMTP id 6a1803df08f44-6cbceb48613so10754246d6.2 for ; Fri, 01 Nov 2024 00:46:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1730447196; x=1731051996; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=g4sqTZZzA2b6pzzAnRcujfuXMZvPt6ZPxVHrY4eCstI=; b=gkkdo5ppb3jYjEaX0TTPblsDiEiGVtiRGxU28NZWcMGCKi90xfwJ/LYCSNdQdVm264 KJlqk+yCyo5QmjUmyXrlqloN4LnKEOk++QWEz1W0vN9fDsQ9eqAvcOnIJDyHhFXO+zyk kQbTfWv3HeRz6xcDJnW/vlDt6WEUp+gLU682w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730447196; x=1731051996; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=g4sqTZZzA2b6pzzAnRcujfuXMZvPt6ZPxVHrY4eCstI=; b=clC6XGaRyYenPGZuXSa/BWhoZ5PJBWhx3BkLCgUClf+RUfj1cXKlDl/royi8BcqClq xOUUEvDN/xNuBQPgJ/IhdLKbX1hvPAdI1WEaXPt/g823Kwp56Asrgaea8iMtujRr2jTf NUVvOlWWb1pdMPN7RGdEQhIqrSy9BDghZPS2s1KAp5QbHMf/ow4jtDeq3fOgpumps/e0 nGOCX85sNFrAuOMnbBxE2kjs7EmqCXPJhjg8Te/ZZpBVFNvuYGwQ8xszFpFDri5AAD3M ZrDHm1xserIYgzEj/AIs4iMNKPb3YGhjEGjHTupndUwv1zJQhPpFGbI/FLAFe9pSSnXV aV5A== X-Forwarded-Encrypted: i=1; AJvYcCWEcC5JX913UDpPYrka0eHfwdctv8RXUdf1csmi+zIjqKljQrEJMBuzQhM/o+czc1loLR/yllDO3t25CH4=@vger.kernel.org X-Gm-Message-State: AOJu0YxKRzP1HioFFdROCJWPmvuV8dw5Kb0qkMW/CfXPEgsngbd2sXf+ jdlmYVUVIUnTutnfCXSnDNaWne64G/Ehcz76ABX+PhjP1YfOHBJ4f5HElKuUrw== X-Google-Smtp-Source: AGHT+IEK+Q29KKRscRDFWSFOW8VroT77GOOZqRsyDMfuqCz0jVMvhTUDjno7cSdqo2AaKKLEGEoQKQ== X-Received: by 2002:a05:6214:3209:b0:6d1:7271:4005 with SMTP id 6a1803df08f44-6d345ffff07mr109827896d6.23.1730447196489; Fri, 01 Nov 2024 00:46:36 -0700 (PDT) Received: from denia.c.googlers.com (189.216.85.34.bc.googleusercontent.com. [34.85.216.189]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d35415b1casm16444236d6.78.2024.11.01.00.46.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Nov 2024 00:46:35 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 01 Nov 2024 07:46:29 +0000 Subject: [PATCH v3 3/5] iio: Add channel type for attention Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241101-hpd-v3-3-e9c80b7c7164@chromium.org> References: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> In-Reply-To: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> To: Jiri Kosina , Benjamin Tissoires , Jonathan Cameron , Srinivas Pandruvada , Lars-Peter Clausen Cc: Harvey Yang , linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.13.0 Add a new channel type representing if the user's attention state to the the system. This usually means if the user is looking at the screen or not. Signed-off-by: Ricardo Ribalda Acked-by: Srinivas Pandruvada --- Documentation/ABI/testing/sysfs-bus-iio | 8 ++++++++ drivers/iio/industrialio-core.c | 1 + include/uapi/linux/iio/types.h | 1 + tools/iio/iio_event_monitor.c | 2 ++ 4 files changed, 12 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/te= sting/sysfs-bus-iio index 89943c2d54e8..ab546fe3fa36 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio @@ -2339,3 +2339,11 @@ KernelVersion: 6.10 Contact: linux-iio@vger.kernel.org Description: The value of current sense resistor in Ohms. + +What: /sys/.../iio:deviceX/in_attention_input +KernelVersion: 6.13 +Contact: linux-iio@vger.kernel.org +Description: + Value representing the user's attention to the system expressed + in units as percentage. This usually means if the user is + looking at the screen or not. diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-cor= e.c index 6a6568d4a2cb..bdfb51275b68 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -95,6 +95,7 @@ static const char * const iio_chan_type_name_spec[] =3D { [IIO_DELTA_VELOCITY] =3D "deltavelocity", [IIO_COLORTEMP] =3D "colortemp", [IIO_CHROMATICITY] =3D "chromaticity", + [IIO_ATTENTION] =3D "attention", }; =20 static const char * const iio_modifier_names[] =3D { diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h index f2e0b2d50e6b..12886d4465e4 100644 --- a/include/uapi/linux/iio/types.h +++ b/include/uapi/linux/iio/types.h @@ -51,6 +51,7 @@ enum iio_chan_type { IIO_DELTA_VELOCITY, IIO_COLORTEMP, IIO_CHROMATICITY, + IIO_ATTENTION, }; =20 enum iio_modifier { diff --git a/tools/iio/iio_event_monitor.c b/tools/iio/iio_event_monitor.c index 8073c9e4fe46..ed9a677f1028 100644 --- a/tools/iio/iio_event_monitor.c +++ b/tools/iio/iio_event_monitor.c @@ -63,6 +63,7 @@ static const char * const iio_chan_type_name_spec[] =3D { [IIO_DELTA_VELOCITY] =3D "deltavelocity", [IIO_COLORTEMP] =3D "colortemp", [IIO_CHROMATICITY] =3D "chromaticity", + [IIO_ATTENTION] =3D "attention", }; =20 static const char * const iio_ev_type_text[] =3D { @@ -183,6 +184,7 @@ static bool event_is_known(struct iio_event_data *event) case IIO_DELTA_VELOCITY: case IIO_COLORTEMP: case IIO_CHROMATICITY: + case IIO_ATTENTION: break; default: return false; --=20 2.47.0.163.g1226f6d8fa-goog From nobody Sun Nov 24 22:47:53 2024 Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EB77015687C for ; Fri, 1 Nov 2024 07:46:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447201; cv=none; b=T2Qr2Yb/D32BOL196hZHw81mfSnL1/G+PqePvkNCzSk6dV+SYmhMDXbnjY94H19hpGw4yNlA3ygZ3Sgo+GtOOxGmUYLtkgf+li7I6LSNSPfOeXLZxWZxVW4MJrp3uxK6Bvx5bKZqyUIgrDXDejAEmFKTjwHKgNuSk+C6bvMkyvY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447201; c=relaxed/simple; bh=CUtvkf+t59QX4prslptAVYmO9B9yIfrnRI6r3hKSoAg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZMLai8mzlB3Kiq/Onnxw14sbxb4qUnhEZlEPBXFR5ngduU/tg3tucjxBBBDpoAevsLET9fwR1u7nnxQEpAr/kr9nCyXcc4+o830IgccAMT/a401XTKf0BfMbsF5JZ2lywHA8utyV0ktg1je9JXgByHUILKtcbqPm//ziSecVF/o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=mqPL/EuQ; arc=none smtp.client-ip=209.85.219.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="mqPL/EuQ" Received: by mail-qv1-f44.google.com with SMTP id 6a1803df08f44-6cbce16d151so10550616d6.2 for ; Fri, 01 Nov 2024 00:46:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1730447198; x=1731051998; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=adgmJOhHcaFkex36EFAe1BXPWl8Ng3rQHGIFjAA8UGA=; b=mqPL/EuQrfZnUTzjIOMPZHal32m+YGMJuOywQsjfi0JoLuc9mlooedb5W6Z1oTIsg9 lVu5QKRh8j1z52tfPi3m4LjXc2MPIcKU5YheoM8kZNPigfpy3OXcJ5RxaT1U/We/oY2R g+KXU9xeezAWbEELqs5Jg1OwMcKsIMQa5Rag8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730447198; x=1731051998; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=adgmJOhHcaFkex36EFAe1BXPWl8Ng3rQHGIFjAA8UGA=; b=atPqaDcCoDzLngC7ajhX5XdNGS8h+mhxFNB7A5LKj3ItMFRhKe+KRdUH0QWILco7d/ wgeDMlRL6wPlO9vIxAK7mK14zcL03jlkQIc+F3FZQX1gdV1lbIHIyHTBp76wNz8SFVQ9 XdPcnlpYi/VlnKOzKqpr4QS8f8ULr1FKG+l0A5b2B6j0k5peVIZqTxU0DL4/cFwSg286 whTU+1sNkII+6BPBXSiz2yFbUwMNSPUuFSAhEerMDhoqNr6wP/nOOnk62q2HSi5jYs4M IDGXcufKt+GPr9RY6QFlGQMr7w/ChPEo8ycP8TWwSsJ6q3o4zIyutYUHwfWWxN9z5lEw 8ZsQ== X-Forwarded-Encrypted: i=1; AJvYcCXwlWwC+LEygfLqZuynBf8QpBlTG68ZQOq8vESBsCBSDOQ7MzXmj2dKtgaSW6KAgWJ0U7vCoQtSGfmjKAc=@vger.kernel.org X-Gm-Message-State: AOJu0YyL8mFuFjZMK90BuzUGHc4h4yzXzRzc+neBj5C8YqydLfaY4Tcn hZ8nmfr2n+WciBrA3aRnI/6AKlEM/t31LL9LZNw/qZRavZyCB+gxhVqZGiA54w== X-Google-Smtp-Source: AGHT+IESbbksSKB95l0C8Ah+v/s+ywwV7GE+w0AJMTMGdTtVsJeriYkTZ0MfwWXgg+cncsRV1leGZQ== X-Received: by 2002:a05:6214:2f81:b0:6cb:c9bc:1a23 with SMTP id 6a1803df08f44-6d1856ea81dmr255805576d6.24.1730447197931; Fri, 01 Nov 2024 00:46:37 -0700 (PDT) Received: from denia.c.googlers.com (189.216.85.34.bc.googleusercontent.com. [34.85.216.189]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d35415b1casm16444236d6.78.2024.11.01.00.46.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Nov 2024 00:46:37 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 01 Nov 2024 07:46:30 +0000 Subject: [PATCH v3 4/5] iio: hid-sensors-prox: Make proximity channel indexed Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241101-hpd-v3-4-e9c80b7c7164@chromium.org> References: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> In-Reply-To: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> To: Jiri Kosina , Benjamin Tissoires , Jonathan Cameron , Srinivas Pandruvada , Lars-Peter Clausen Cc: Harvey Yang , linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.13.0 We are going to introduce more proximity channels. Make proximity a indexed channel now, in a simple patch, so the change can be easily bisected if there are any issues. Signed-off-by: Ricardo Ribalda Acked-by: Srinivas Pandruvada --- drivers/iio/light/hid-sensor-prox.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-se= nsor-prox.c index d38564fe22df..0f12a8a83790 100644 --- a/drivers/iio/light/hid-sensor-prox.c +++ b/drivers/iio/light/hid-sensor-prox.c @@ -40,6 +40,7 @@ static const struct iio_chan_spec prox_channels[] =3D { BIT(IIO_CHAN_INFO_SAMP_FREQ) | BIT(IIO_CHAN_INFO_HYSTERESIS), .scan_index =3D CHANNEL_SCAN_INDEX_PRESENCE, + .indexed =3D true, } }; =20 --=20 2.47.0.163.g1226f6d8fa-goog From nobody Sun Nov 24 22:47:53 2024 Received: from mail-qv1-f47.google.com (mail-qv1-f47.google.com [209.85.219.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B90B158214 for ; Fri, 1 Nov 2024 07:46:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447204; cv=none; b=M5HjD6B8KOlOFenlBuK88tRy3EwwQp/LjB0BkHIxidUT68g5B7drCOqzFc4KB54Lg5t8kK33A7VocYJFK4Cpj/0v/rFP88TgkJscsRqDYkBVwu4Gv9pja5/Qe8BbSW+BZ6jfMKD2I7M8MQLUymP4X8MLx6rtpDNsUzhMBhVgy/I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730447204; c=relaxed/simple; bh=8x9MAK4SaLwYVJMqh23a0sQf2hiwQ+JKA64Z0XueGBs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mCi7zK0xsyOFtsxXtBlEmtNJf7DIUoctf+uomhhSrufLJQo0PpjCjUMCb5uH2jYRcBjOxTbwUkTikg3rq/j5/AvBbrXZY706nwSF7HCmaEDbkTDCj7WFp1Rgdmxuu2hcq82a3bjfSzLRrSa0+wCSB/IhbuEcI49zG4DW8zo7mFM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=FG3SDe/D; arc=none smtp.client-ip=209.85.219.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="FG3SDe/D" Received: by mail-qv1-f47.google.com with SMTP id 6a1803df08f44-6cbcc2bd800so15342116d6.0 for ; Fri, 01 Nov 2024 00:46:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1730447200; x=1731052000; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Zwie29Jv4jrCjsLcuUvVxvwsEUL8DK2bGYV1hveDHXo=; b=FG3SDe/D/ieKoPaqWpL1e2bf9sdqW6mLgkv7Qu+XahhDHj/ue1j3x8dfGWCp3+D14Y 5+YiETqFdTmwupWXFL6uNIFyvbgpOX92hx805L+hLQ88ej6qww3Ql1yDGhg61CR3Nes6 x5qO8ZitRLZrdQct6dDgrLkyDSJWDQWraAMTs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730447200; x=1731052000; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zwie29Jv4jrCjsLcuUvVxvwsEUL8DK2bGYV1hveDHXo=; b=SJAvws9JXEJsf1iGn9gGpSXKkd64z3zasDWKhlb60B81O1MAg+gLplh7uEil6fh2tm lJ99rgCIRSGLU3NWZNrqI8RSzTWQcfxpxMXh+z08rr2Snqv2dEXqrfTQskuZ+Lku7G92 vNomRvixqqt++FcDTA4hdZSwUpwvNiFrseBXws/pIGIGYKUysv0Uh5IoLPYXiNnf5nHf /cuR44Nk4e+ZK26DGP7mA9zpI/bjkmo7NvsvvEjD+atXmZbMjtnJuYqN/9Jqqby6iCMG Czkx7ij+gI0ipH9If/QIZtB40dxFpIj2Tt1hTQ5ayYWoiO2Q1DZDtglvz7n8KfeYZEEo SteQ== X-Forwarded-Encrypted: i=1; AJvYcCVSWpOiQzBFEkmPHn0g1PZk0SKQCIb5rRAvyY1vlI1Phzs9Qk03QKrJfkqU1p8d2Z6uaiELR/KWJn4M92s=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3aykroSTYMHWMVcthX7ab2KXPIS2OkFXEXlHcB7dQGpfNxqMx SsB/y2XsTF2aCHRYEh+Rm2Mt7lovlrybosvMhIVkddIWM8QHWvWj+mkHan/d6A== X-Google-Smtp-Source: AGHT+IE93RHiiyST1ssw91aTHkNDsDz6b3B1fawKfdGJgmxRWQDwQZdBDqOzfREyo1ouheR/VJCs/w== X-Received: by 2002:a05:6214:458f:b0:6cd:fd5d:88f6 with SMTP id 6a1803df08f44-6d35428d01fmr96018086d6.7.1730447200059; Fri, 01 Nov 2024 00:46:40 -0700 (PDT) Received: from denia.c.googlers.com (189.216.85.34.bc.googleusercontent.com. [34.85.216.189]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d35415b1casm16444236d6.78.2024.11.01.00.46.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Nov 2024 00:46:38 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 01 Nov 2024 07:46:31 +0000 Subject: [PATCH v3 5/5] iio: hid-sensor-prox: Add support for more channels Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241101-hpd-v3-5-e9c80b7c7164@chromium.org> References: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> In-Reply-To: <20241101-hpd-v3-0-e9c80b7c7164@chromium.org> To: Jiri Kosina , Benjamin Tissoires , Jonathan Cameron , Srinivas Pandruvada , Lars-Peter Clausen Cc: Harvey Yang , linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.13.0 Egis620 supports 3 channels: presense, proximity and attention. Modify the driver so it can read those channels as well. Signed-off-by: Ricardo Ribalda Acked-by: Srinivas Pandruvada --- drivers/iio/light/hid-sensor-prox.c | 180 +++++++++++++++++++++-----------= ---- 1 file changed, 104 insertions(+), 76 deletions(-) diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-se= nsor-prox.c index 0f12a8a83790..a762f4e91390 100644 --- a/drivers/iio/light/hid-sensor-prox.c +++ b/drivers/iio/light/hid-sensor-prox.c @@ -13,16 +13,32 @@ #include #include "../common/hid-sensors/hid-sensor-trigger.h" =20 -#define CHANNEL_SCAN_INDEX_PRESENCE 0 +static const u32 prox_usage_ids[] =3D { + HID_USAGE_SENSOR_HUMAN_PRESENCE, + HID_USAGE_SENSOR_HUMAN_PROXIMITY, + HID_USAGE_SENSOR_HUMAN_ATTENTION, +}; + +#define MAX_CHANNELS ARRAY_SIZE(prox_usage_ids) + +enum { + HID_HUMAN_PRESENCE, + HID_HUMAN_PROXIMITY, + HID_HUMAN_ATTENTION, +}; =20 struct prox_state { struct hid_sensor_hub_callbacks callbacks; struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info prox_attr; - u32 human_presence; + struct hid_sensor_hub_attribute_info prox_attr[MAX_CHANNELS]; + struct iio_chan_spec channels[MAX_CHANNELS]; + u32 channel2usage[MAX_CHANNELS]; + u32 human_presence[MAX_CHANNELS]; int scale_pre_decml; int scale_post_decml; int scale_precision; + unsigned long scan_mask[2]; /* One entry plus one terminator. */ + int num_channels; }; =20 static const u32 prox_sensitivity_addresses[] =3D { @@ -30,18 +46,24 @@ static const u32 prox_sensitivity_addresses[] =3D { HID_USAGE_SENSOR_DATA_PRESENCE, }; =20 -/* Channel definitions */ -static const struct iio_chan_spec prox_channels[] =3D { - { - .type =3D IIO_PROXIMITY, - .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_OFFSET) | - BIT(IIO_CHAN_INFO_SCALE) | - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index =3D CHANNEL_SCAN_INDEX_PRESENCE, - .indexed =3D true, +#define PROX_CHANNEL(_is_proximity, _channel) \ + {\ + .type =3D _is_proximity ? IIO_PROXIMITY : IIO_ATTENTION,\ + .info_mask_separate =3D _is_proximity ? BIT(IIO_CHAN_INFO_RAW) :\ + BIT(IIO_CHAN_INFO_PROCESSED),\ + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_OFFSET) |\ + BIT(IIO_CHAN_INFO_SCALE) |\ + BIT(IIO_CHAN_INFO_SAMP_FREQ) |\ + BIT(IIO_CHAN_INFO_HYSTERESIS),\ + .indexed =3D _is_proximity,\ + .channel =3D _channel,\ } + +/* Channel definitions (same order as prox_usage_ids) */ +static const struct iio_chan_spec prox_channels[] =3D { + PROX_CHANNEL(true, HID_HUMAN_PRESENCE), + PROX_CHANNEL(true, HID_HUMAN_PROXIMITY), + PROX_CHANNEL(false, 0), }; =20 /* Adjust channel real bits based on report descriptor */ @@ -63,7 +85,7 @@ static int prox_read_raw(struct iio_dev *indio_dev, { struct prox_state *prox_state =3D iio_priv(indio_dev); struct hid_sensor_hub_device *hsdev; - int report_id =3D -1; + int report_id; u32 address; int ret_type; s32 min; @@ -72,29 +94,23 @@ static int prox_read_raw(struct iio_dev *indio_dev, *val2 =3D 0; switch (mask) { case IIO_CHAN_INFO_RAW: - switch (chan->scan_index) { - case CHANNEL_SCAN_INDEX_PRESENCE: - report_id =3D prox_state->prox_attr.report_id; - min =3D prox_state->prox_attr.logical_minimum; - address =3D HID_USAGE_SENSOR_HUMAN_PRESENCE; - hsdev =3D prox_state->common_attributes.hsdev; - break; - default: - report_id =3D -1; - break; - } - if (report_id >=3D 0) { - hid_sensor_power_state(&prox_state->common_attributes, - true); - *val =3D sensor_hub_input_attr_get_raw_value( - hsdev, hsdev->usage, address, report_id, - SENSOR_HUB_SYNC, min < 0); - hid_sensor_power_state(&prox_state->common_attributes, - false); - } else { - *val =3D 0; + if (chan->scan_index >=3D prox_state->num_channels) return -EINVAL; - } + address =3D prox_state->channel2usage[chan->scan_index]; + report_id =3D prox_state->prox_attr[chan->scan_index].report_id; + hsdev =3D prox_state->common_attributes.hsdev; + min =3D prox_state->prox_attr[chan->scan_index].logical_minimum; + hid_sensor_power_state(&prox_state->common_attributes, true); + *val =3D sensor_hub_input_attr_get_raw_value(hsdev, + hsdev->usage, + address, + report_id, + SENSOR_HUB_SYNC, + min < 0); + if (prox_state->channel2usage[chan->scan_index] =3D=3D + HID_USAGE_SENSOR_HUMAN_ATTENTION) + *val *=3D 100; + hid_sensor_power_state(&prox_state->common_attributes, false); ret_type =3D IIO_VAL_INT; break; case IIO_CHAN_INFO_SCALE: @@ -104,7 +120,7 @@ static int prox_read_raw(struct iio_dev *indio_dev, break; case IIO_CHAN_INFO_OFFSET: *val =3D hid_sensor_convert_exponent( - prox_state->prox_attr.unit_expo); + prox_state->prox_attr[chan->scan_index].unit_expo); ret_type =3D IIO_VAL_INT; break; case IIO_CHAN_INFO_SAMP_FREQ: @@ -179,48 +195,67 @@ static int prox_capture_sample(struct hid_sensor_hub_= device *hsdev, { struct iio_dev *indio_dev =3D platform_get_drvdata(priv); struct prox_state *prox_state =3D iio_priv(indio_dev); - int ret =3D -EINVAL; - - switch (usage_id) { - case HID_USAGE_SENSOR_HUMAN_PRESENCE: - switch (raw_len) { - case 1: - prox_state->human_presence =3D *(u8 *)raw_data; - return 0; - case 4: - prox_state->human_presence =3D *(u32 *)raw_data; - return 0; - default: + int multiplier =3D 1; + int chan; + + for (chan =3D 0; chan < prox_state->num_channels; chan++) + if (prox_state->channel2usage[chan] =3D=3D usage_id) break; - } - break; + if (chan =3D=3D prox_state->num_channels) + return -EINVAL; + + if (usage_id =3D=3D HID_USAGE_SENSOR_HUMAN_ATTENTION) + multiplier =3D 100; + + switch (raw_len) { + case 1: + prox_state->human_presence[chan] =3D *(u8 *)raw_data * multiplier; + return 0; + case 4: + prox_state->human_presence[chan] =3D *(u32 *)raw_data * multiplier; + return 0; } =20 - return ret; + return -EINVAL; } =20 /* Parse report which is specific to an usage id*/ static int prox_parse_report(struct platform_device *pdev, struct hid_sensor_hub_device *hsdev, - struct iio_chan_spec *channels, - unsigned usage_id, struct prox_state *st) { + struct iio_chan_spec *channels =3D st->channels; + int index =3D 0; int ret; + int i; + + for (i =3D 0; i < MAX_CHANNELS; i++) { + u32 usage_id =3D prox_usage_ids[i]; + + ret =3D sensor_hub_input_get_attribute_info(hsdev, + HID_INPUT_REPORT, + hsdev->usage, + usage_id, + &st->prox_attr[index]); + if (ret < 0) + continue; + st->channel2usage[index] =3D usage_id; + st->scan_mask[0] |=3D BIT(index); + channels[index] =3D prox_channels[i]; + channels[index].scan_index =3D index; + prox_adjust_channel_bit_mask(channels, index, + st->prox_attr[index].size); + dev_dbg(&pdev->dev, "prox %x:%x\n", st->prox_attr[index].index, + st->prox_attr[index].report_id); + index++; + } =20 - ret =3D sensor_hub_input_get_attribute_info(hsdev, HID_INPUT_REPORT, - usage_id, - HID_USAGE_SENSOR_HUMAN_PRESENCE, - &st->prox_attr); - if (ret < 0) + if (!index) return ret; - prox_adjust_channel_bit_mask(channels, CHANNEL_SCAN_INDEX_PRESENCE, - st->prox_attr.size); =20 - dev_dbg(&pdev->dev, "prox %x:%x\n", st->prox_attr.index, - st->prox_attr.report_id); + st->num_channels =3D index; =20 - return ret; + return 0; } =20 /* Function to initialize the processing for usage id */ @@ -251,22 +286,15 @@ static int hid_prox_probe(struct platform_device *pde= v) return ret; } =20 - indio_dev->channels =3D devm_kmemdup(&pdev->dev, prox_channels, - sizeof(prox_channels), GFP_KERNEL); - if (!indio_dev->channels) { - dev_err(&pdev->dev, "failed to duplicate channels\n"); - return -ENOMEM; - } - - ret =3D prox_parse_report(pdev, hsdev, - (struct iio_chan_spec *)indio_dev->channels, - hsdev->usage, prox_state); + ret =3D prox_parse_report(pdev, hsdev, prox_state); if (ret) { dev_err(&pdev->dev, "failed to setup attributes\n"); return ret; } =20 - indio_dev->num_channels =3D ARRAY_SIZE(prox_channels); + indio_dev->num_channels =3D prox_state->num_channels; + indio_dev->channels =3D prox_state->channels; + indio_dev->available_scan_masks =3D prox_state->scan_mask; indio_dev->info =3D &prox_info; indio_dev->name =3D name; indio_dev->modes =3D INDIO_DIRECT_MODE; --=20 2.47.0.163.g1226f6d8fa-goog