From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Philipp Jungkamp <p.jungkamp@gmx.net>
Cc: Jiri Kosina <jikos@kernel.org>,
Jonathan Cameron <jic23@kernel.org>,
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
<linux-iio@vger.kernel.org>
Subject: Re: [PATCH 2/3] IIO: hid-sensor-als: Use generic usage
Date: Thu, 17 Nov 2022 15:09:54 +0000 [thread overview]
Message-ID: <20221117150954.00004a2a@Huawei.com> (raw)
In-Reply-To: <20221116231947.18031-2-p.jungkamp@gmx.net>
On Thu, 17 Nov 2022 00:19:46 +0100
Philipp Jungkamp <p.jungkamp@gmx.net> wrote:
> Use a generic 'hsdev->usage' instead of the HID_USAGE_SENSOR_ALS to
> allow this driver to drive the Lenvo custom ambient light sensor,
Lenovo
> which is registered under a 'custom' usage and not HID_USAGE_SENSOR_ALS.
>
> Add the Lenovo Intelligent Sensing Solution (LISS) ambient light sensor
> to the platform device ids.
>
> Signed-off-by: Philipp Jungkamp <p.jungkamp@gmx.net>
It's a small patch, but in the ideal world, first patch should be a noop
patch that makes the hid-sensor-als stuff able to use a provided
usage ID. Second patch then adds the new one.
> ---
> drivers/hid/hid-sensor-custom.c | 13 +++++++++++++
> drivers/iio/light/hid-sensor-als.c | 24 +++++++++++++++++-------
> 2 files changed, 30 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/hid/hid-sensor-custom.c b/drivers/hid/hid-sensor-custom.c
> index cb21f9178830..124493b8abaf 100644
> --- a/drivers/hid/hid-sensor-custom.c
> +++ b/drivers/hid/hid-sensor-custom.c
> @@ -782,6 +782,19 @@ static const struct hid_sensor_custom_match hid_sensor_custom_known_table[] = {
> .luid = "020B000000000000",
> .manufacturer = "INTEL",
> },
> + /*
> + * Lenovo Intelligent Sensing Solution (LISS)
> + */
> + { /* ambient light */
> + .tag = "LISS",
> + .luid = "0041010200000082",
> + .model = "STK3X3X Sensor",
> + .manufacturer = "Vendor 258",
They should definitely rebrand their laptops as this :)
> + .check_dmi = true,
> + .dmi.matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> + }
> + },
> {}
> };
>
> diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
> index 5a1a625d8d16..0ada158582a9 100644
> --- a/drivers/iio/light/hid-sensor-als.c
> +++ b/drivers/iio/light/hid-sensor-als.c
> @@ -86,6 +86,7 @@ static int als_read_raw(struct iio_dev *indio_dev,
> long mask)
> {
> struct als_state *als_state = iio_priv(indio_dev);
> + struct hid_sensor_hub_device *hsdev = als_state->common_attributes.hsdev;
> int report_id = -1;
> u32 address;
> int ret_type;
> @@ -110,8 +111,9 @@ static int als_read_raw(struct iio_dev *indio_dev,
> hid_sensor_power_state(&als_state->common_attributes,
> true);
> *val = sensor_hub_input_attr_get_raw_value(
> - als_state->common_attributes.hsdev,
> - HID_USAGE_SENSOR_ALS, address,
> + hsdev,
> + hsdev->usage,
> + address,
> report_id,
> SENSOR_HUB_SYNC,
> min < 0);
> @@ -260,7 +262,7 @@ static int als_parse_report(struct platform_device *pdev,
> st->als_illum.report_id);
>
> st->scale_precision = hid_sensor_format_scale(
> - HID_USAGE_SENSOR_ALS,
> + usage_id,
> &st->als_illum,
> &st->scale_pre_decml, &st->scale_post_decml);
>
> @@ -285,7 +287,8 @@ static int hid_als_probe(struct platform_device *pdev)
> als_state->common_attributes.hsdev = hsdev;
> als_state->common_attributes.pdev = pdev;
>
> - ret = hid_sensor_parse_common_attributes(hsdev, HID_USAGE_SENSOR_ALS,
> + ret = hid_sensor_parse_common_attributes(hsdev,
> + hsdev->usage,
> &als_state->common_attributes,
> als_sensitivity_addresses,
> ARRAY_SIZE(als_sensitivity_addresses));
> @@ -303,7 +306,8 @@ static int hid_als_probe(struct platform_device *pdev)
>
> ret = als_parse_report(pdev, hsdev,
> (struct iio_chan_spec *)indio_dev->channels,
> - HID_USAGE_SENSOR_ALS, als_state);
> + hsdev->usage,
> + als_state);
> if (ret) {
> dev_err(&pdev->dev, "failed to setup attributes\n");
> return ret;
> @@ -333,7 +337,8 @@ static int hid_als_probe(struct platform_device *pdev)
> als_state->callbacks.send_event = als_proc_event;
> als_state->callbacks.capture_sample = als_capture_sample;
> als_state->callbacks.pdev = pdev;
> - ret = sensor_hub_register_callback(hsdev, HID_USAGE_SENSOR_ALS,
> + ret = sensor_hub_register_callback(hsdev,
> + hsdev->usage,
> &als_state->callbacks);
Where possible, put multiple params on a line up to the 80 chars limit.
If it improves readability for some reason to go a bit beyond 80 chars,
that is fine too.
> if (ret < 0) {
> dev_err(&pdev->dev, "callback reg failed\n");
> @@ -356,7 +361,8 @@ static int hid_als_remove(struct platform_device *pdev)
> struct iio_dev *indio_dev = platform_get_drvdata(pdev);
> struct als_state *als_state = iio_priv(indio_dev);
>
> - sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_ALS);
> + sensor_hub_remove_callback(hsdev,
> + hsdev->usage);
Oddly short line wrap.
> iio_device_unregister(indio_dev);
> hid_sensor_remove_trigger(indio_dev, &als_state->common_attributes);
>
> @@ -368,6 +374,10 @@ static const struct platform_device_id hid_als_ids[] = {
> /* Format: HID-SENSOR-usage_id_in_hex_lowercase */
> .name = "HID-SENSOR-200041",
> },
> + {
> + /* Format: HID-SENSOR-custom_sensor_tag-usage_id_in_hex_lowercase */
> + .name = "HID-SENSOR-LISS-0041",
> + },
> { /* sentinel */ }
> };
> MODULE_DEVICE_TABLE(platform, hid_als_ids);
> --
> 2.38.1
>
next prev parent reply other threads:[~2022-11-17 15:14 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-16 12:11 PROBLEM: Lenovo ALS sensor disguised under custom usage Philipp Jungkamp
2022-11-16 23:19 ` [PATCH 1/3] HID: hid-sensor-custom: More custom iio sensors Philipp Jungkamp
2022-11-16 23:19 ` [PATCH 2/3] IIO: hid-sensor-als: Use generic usage Philipp Jungkamp
2022-11-17 15:09 ` Jonathan Cameron [this message]
2022-11-16 23:19 ` [PATCH 3/3] IIO: hid-sensor-prox: " Philipp Jungkamp
2022-11-17 15:14 ` Jonathan Cameron
2022-11-17 15:05 ` [PATCH 1/3] HID: hid-sensor-custom: More custom iio sensors Jonathan Cameron
2022-11-17 23:42 ` [PATCH v2 1/4] HID: hid-sensor-custom: Allow more " Philipp Jungkamp
2022-11-17 23:43 ` [PATCH v2 2/4] HID: hid-sensor-custom: Add LISS custom sensors Philipp Jungkamp
2022-11-18 20:16 ` srinivas pandruvada
2022-11-17 23:43 ` [PATCH v2 3/4] IIO: hid-sensor-als: Use generic usage Philipp Jungkamp
2022-11-17 23:43 ` [PATCH v2 4/4] IIO: hid-sensor-prox: " Philipp Jungkamp
2022-11-18 20:11 ` [PATCH v2 1/4] HID: hid-sensor-custom: Allow more custom iio sensors srinivas pandruvada
2022-11-17 23:48 ` [PATCH v3 " Philipp Jungkamp
2022-11-17 23:48 ` [PATCH v3 2/4] HID: hid-sensor-custom: Add LISS custom sensors Philipp Jungkamp
2022-11-17 23:48 ` [PATCH v3 3/4] IIO: hid-sensor-als: Use generic usage Philipp Jungkamp
2022-11-18 20:23 ` srinivas pandruvada
2022-11-21 17:59 ` Jiri Kosina
2022-11-21 19:55 ` srinivas pandruvada
2022-11-23 17:16 ` Jonathan Cameron
2022-11-17 23:48 ` [PATCH v3 4/4] IIO: hid-sensor-prox: " Philipp Jungkamp
2022-11-18 20:26 ` srinivas pandruvada
2022-11-23 17:17 ` Jonathan Cameron
2022-11-23 17:08 ` [PATCH v3 1/4] HID: hid-sensor-custom: Allow more custom iio sensors Jonathan Cameron
2022-11-23 17:10 ` Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221117150954.00004a2a@Huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=jic23@kernel.org \
--cc=jikos@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=p.jungkamp@gmx.net \
--cc=srinivas.pandruvada@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.