diff mbox series

[2/5] iio: hid-sensor-als: Support change sensitivity in illuminance too.

Message ID 20210228012643.69944-3-ronald@innovation.ch (mailing list archive)
State New
Headers show
Series Touch Bar and ALS support for MacBook Pro's | expand

Commit Message

Life is hard, and then you die Feb. 28, 2021, 1:26 a.m. UTC
Recent MacBook Pro's specify the usage of the change sensitivity field
as illuminance (with a change sensitivity modifier) rather than as
light.

Signed-off-by: Ronald Tschalär <ronald@innovation.ch>
---
 drivers/iio/light/hid-sensor-als.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Jonathan Cameron Feb. 28, 2021, 2:45 p.m. UTC | #1
On Sat, 27 Feb 2021 17:26:40 -0800
Ronald Tschalär <ronald@innovation.ch> wrote:

> Recent MacBook Pro's specify the usage of the change sensitivity field
> as illuminance (with a change sensitivity modifier) rather than as
> light.
> 
> Signed-off-by: Ronald Tschalär <ronald@innovation.ch>
This looks fine to me though it the hid sensors spec never fails to surprise
me in the different slight variants of the same thing that come up.

Illuminance is at least fairly well defined, but who knows what for the DATA_LIGHT
version takes?

Anyhow, lets give time for Srinivas to sanity check this as he's much more familiar
with that spec than I am.

Jonathan

> ---
>  drivers/iio/light/hid-sensor-als.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
> index a21c827e4953d..849ee37dcd866 100644
> --- a/drivers/iio/light/hid-sensor-als.c
> +++ b/drivers/iio/light/hid-sensor-als.c
> @@ -252,6 +252,14 @@ static int als_parse_report(struct platform_device *pdev,
>  			HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSITIVITY_ABS |
>  			HID_USAGE_SENSOR_DATA_LIGHT,
>  			&st->common_attributes.sensitivity);
> +
> +		if (st->common_attributes.sensitivity.index < 0)
> +			sensor_hub_input_get_attribute_info(hsdev,
> +				HID_FEATURE_REPORT, usage_id,
> +				HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSITIVITY_ABS |
> +				HID_USAGE_SENSOR_LIGHT_ILLUM,
> +				&st->common_attributes.sensitivity);
> +
>  		dev_dbg(&pdev->dev, "Sensitivity index:report %d:%d\n",
>  			st->common_attributes.sensitivity.index,
>  			st->common_attributes.sensitivity.report_id);
Srinivas Pandruvada March 1, 2021, 5:39 p.m. UTC | #2
On Sun, 2021-02-28 at 14:45 +0000, Jonathan Cameron wrote:
> On Sat, 27 Feb 2021 17:26:40 -0800
> Ronald Tschalär <ronald@innovation.ch> wrote:
> 
> > Recent MacBook Pro's specify the usage of the change sensitivity
> > field
> > as illuminance (with a change sensitivity modifier) rather than as
> > light.
> > 
> > Signed-off-by: Ronald Tschalär <ronald@innovation.ch>
> This looks fine to me though it the hid sensors spec never fails to
> surprise
> me in the different slight variants of the same thing that come up.
> 
> Illuminance is at least fairly well defined, but who knows what for
> the DATA_LIGHT
> version takes?

The current implementations are deploying using
"HID_USAGE_SENSOR_LIGHT_ILLUM" usage id 0xD1 for input. So this is
natural to use the same usage id for sensitivity. So patch looks good
to me.

But most implementation choose to use DATA_LIGHT for the sensitivity.
probably referring to change in quantity of light without referring to
area. There are no obvious units specified for DATA_LIGHT in the spec.

Thanks,
Srinivas

> 
> Anyhow, lets give time for Srinivas to sanity check this as he's much
> more familiar
> with that spec than I am.
> 
> Jonathan
> 
> > ---
> >  drivers/iio/light/hid-sensor-als.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> > 
> > diff --git a/drivers/iio/light/hid-sensor-als.c
> > b/drivers/iio/light/hid-sensor-als.c
> > index a21c827e4953d..849ee37dcd866 100644
> > --- a/drivers/iio/light/hid-sensor-als.c
> > +++ b/drivers/iio/light/hid-sensor-als.c
> > @@ -252,6 +252,14 @@ static int als_parse_report(struct
> > platform_device *pdev,
> >  			HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSITIVITY_AB
> > S |
> >  			HID_USAGE_SENSOR_DATA_LIGHT,
> >  			&st->common_attributes.sensitivity);
> > +
> > +		if (st->common_attributes.sensitivity.index < 0)
> > +			sensor_hub_input_get_attribute_info(hsdev,
> > +				HID_FEATURE_REPORT, usage_id,
> > +				HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSIT
> > IVITY_ABS |
> > +				HID_USAGE_SENSOR_LIGHT_ILLUM,
> > +				&st->common_attributes.sensitivity);
> > +
> >  		dev_dbg(&pdev->dev, "Sensitivity index:report %d:%d\n",
> >  			st->common_attributes.sensitivity.index,
> >  			st->common_attributes.sensitivity.report_id);
diff mbox series

Patch

diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
index a21c827e4953d..849ee37dcd866 100644
--- a/drivers/iio/light/hid-sensor-als.c
+++ b/drivers/iio/light/hid-sensor-als.c
@@ -252,6 +252,14 @@  static int als_parse_report(struct platform_device *pdev,
 			HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSITIVITY_ABS |
 			HID_USAGE_SENSOR_DATA_LIGHT,
 			&st->common_attributes.sensitivity);
+
+		if (st->common_attributes.sensitivity.index < 0)
+			sensor_hub_input_get_attribute_info(hsdev,
+				HID_FEATURE_REPORT, usage_id,
+				HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSITIVITY_ABS |
+				HID_USAGE_SENSOR_LIGHT_ILLUM,
+				&st->common_attributes.sensitivity);
+
 		dev_dbg(&pdev->dev, "Sensitivity index:report %d:%d\n",
 			st->common_attributes.sensitivity.index,
 			st->common_attributes.sensitivity.report_id);