diff mbox series

iio: hid-sensor-prox: Fix invalid read_raw for attention

Message ID 20241121-fix-processed-v1-1-4fae6770db30@chromium.org (mailing list archive)
State Superseded
Headers show
Series iio: hid-sensor-prox: Fix invalid read_raw for attention | expand

Commit Message

Ricardo Ribalda Nov. 21, 2024, 9:16 a.m. UTC
The attention channel is a IIO_CHAN_INFO_PROCESSED, not a
IIO_CHAN_INFO_RAW.

Modify prox_read_raw() to support it.

Fixes: 596ef5cf654b ("iio: hid-sensor-prox: Add support for more channels")
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
 drivers/iio/light/hid-sensor-prox.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


---
base-commit: decc701f41d07481893fdea942c0ac6b226e84cd
change-id: 20241121-fix-processed-ed1a95641e64

Best regards,

Comments

srinivas pandruvada Nov. 21, 2024, 4:44 p.m. UTC | #1
On Thu, 2024-11-21 at 09:16 +0000, Ricardo Ribalda wrote:
> The attention channel is a IIO_CHAN_INFO_PROCESSED, not a
> IIO_CHAN_INFO_RAW.
> 
> Modify prox_read_raw() to support it.
> 
What is the sysfs entry to trigger this IIO_CHAN_INFO_PROCESSED read?
Don't you have an entry *_raw?


Thanks,
Srinivas

> Fixes: 596ef5cf654b ("iio: hid-sensor-prox: Add support for more
> channels")
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> ---
>  drivers/iio/light/hid-sensor-prox.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/iio/light/hid-sensor-prox.c
> b/drivers/iio/light/hid-sensor-prox.c
> index e8e7b2999b4c..8e5d0ad13a5f 100644
> --- a/drivers/iio/light/hid-sensor-prox.c
> +++ b/drivers/iio/light/hid-sensor-prox.c
> @@ -94,6 +94,7 @@ static int prox_read_raw(struct iio_dev *indio_dev,
>  	*val2 = 0;
>  	switch (mask) {
>  	case IIO_CHAN_INFO_RAW:
> +	case IIO_CHAN_INFO_PROCESSED:
>  		if (chan->scan_index >= prox_state->num_channels)
>  			return -EINVAL;
>  		address = prox_state->channel2usage[chan-
> >scan_index];
> @@ -107,8 +108,7 @@ static int prox_read_raw(struct iio_dev
> *indio_dev,
>  							  
> report_id,
>  							  
> SENSOR_HUB_SYNC,
>  							   min < 0);
> -		if (prox_state->channel2usage[chan->scan_index] ==
> -		    HID_USAGE_SENSOR_HUMAN_ATTENTION)
> +		if (mask == IIO_CHAN_INFO_PROCESSED)
>  			*val *= 100;
>  		hid_sensor_power_state(&prox_state-
> >common_attributes, false);
>  		ret_type = IIO_VAL_INT;
> 
> ---
> base-commit: decc701f41d07481893fdea942c0ac6b226e84cd
> change-id: 20241121-fix-processed-ed1a95641e64
> 
> Best regards,
Ricardo Ribalda Nov. 22, 2024, 7:46 a.m. UTC | #2
On Thu, 21 Nov 2024 at 17:44, srinivas pandruvada
<srinivas.pandruvada@linux.intel.com> wrote:
>
> On Thu, 2024-11-21 at 09:16 +0000, Ricardo Ribalda wrote:
> > The attention channel is a IIO_CHAN_INFO_PROCESSED, not a
> > IIO_CHAN_INFO_RAW.
> >
> > Modify prox_read_raw() to support it.
> >
> What is the sysfs entry to trigger this IIO_CHAN_INFO_PROCESSED read?
> Don't you have an entry *_raw?

/sys/.../iio:deviceX/in_attention_input

There is no _raw device for it.

>
>
> Thanks,
> Srinivas
>
> > Fixes: 596ef5cf654b ("iio: hid-sensor-prox: Add support for more
> > channels")
> > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > ---
> >  drivers/iio/light/hid-sensor-prox.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/iio/light/hid-sensor-prox.c
> > b/drivers/iio/light/hid-sensor-prox.c
> > index e8e7b2999b4c..8e5d0ad13a5f 100644
> > --- a/drivers/iio/light/hid-sensor-prox.c
> > +++ b/drivers/iio/light/hid-sensor-prox.c
> > @@ -94,6 +94,7 @@ static int prox_read_raw(struct iio_dev *indio_dev,
> >       *val2 = 0;
> >       switch (mask) {
> >       case IIO_CHAN_INFO_RAW:
> > +     case IIO_CHAN_INFO_PROCESSED:
> >               if (chan->scan_index >= prox_state->num_channels)
> >                       return -EINVAL;
> >               address = prox_state->channel2usage[chan-
> > >scan_index];
> > @@ -107,8 +108,7 @@ static int prox_read_raw(struct iio_dev
> > *indio_dev,
> >
> > report_id,
> >
> > SENSOR_HUB_SYNC,
> >                                                          min < 0);
> > -             if (prox_state->channel2usage[chan->scan_index] ==
> > -                 HID_USAGE_SENSOR_HUMAN_ATTENTION)
> > +             if (mask == IIO_CHAN_INFO_PROCESSED)
> >                       *val *= 100;
> >               hid_sensor_power_state(&prox_state-
> > >common_attributes, false);
> >               ret_type = IIO_VAL_INT;
> >
> > ---
> > base-commit: decc701f41d07481893fdea942c0ac6b226e84cd
> > change-id: 20241121-fix-processed-ed1a95641e64
> >
> > Best regards,
>
srinivas pandruvada Nov. 22, 2024, 4:31 p.m. UTC | #3
On Fri, 2024-11-22 at 08:46 +0100, Ricardo Ribalda wrote:
> On Thu, 21 Nov 2024 at 17:44, srinivas pandruvada
> <srinivas.pandruvada@linux.intel.com> wrote:
> > 
> > On Thu, 2024-11-21 at 09:16 +0000, Ricardo Ribalda wrote:
> > > The attention channel is a IIO_CHAN_INFO_PROCESSED, not a
> > > IIO_CHAN_INFO_RAW.
> > > 
> > > Modify prox_read_raw() to support it.
> > > 
> > What is the sysfs entry to trigger this IIO_CHAN_INFO_PROCESSED
> > read?
> > Don't you have an entry *_raw?
> 
> /sys/.../iio:deviceX/in_attention_input
> 
> There is no _raw device for it.
> 
OK.

> > 
> > > Fixes: 596ef5cf654b ("iio: hid-sensor-prox: Add support for more
> > > channels")
> > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > > ---
> > >  drivers/iio/light/hid-sensor-prox.c | 4 ++--
> > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/iio/light/hid-sensor-prox.c
> > > b/drivers/iio/light/hid-sensor-prox.c
> > > index e8e7b2999b4c..8e5d0ad13a5f 100644
> > > --- a/drivers/iio/light/hid-sensor-prox.c
> > > +++ b/drivers/iio/light/hid-sensor-prox.c
> > > @@ -94,6 +94,7 @@ static int prox_read_raw(struct iio_dev
> > > *indio_dev,
> > >       *val2 = 0;
> > >       switch (mask) {
> > >       case IIO_CHAN_INFO_RAW:
> > > +     case IIO_CHAN_INFO_PROCESSED:
> > >               if (chan->scan_index >= prox_state->num_channels)
> > >                       return -EINVAL;
> > >               address = prox_state->channel2usage[chan-
> > > > scan_index];
> > > @@ -107,8 +108,7 @@ static int prox_read_raw(struct iio_dev
> > > *indio_dev,
> > > 
> > > report_id,
> > > 
> > > SENSOR_HUB_SYNC,
> > >                                                          min <
> > > 0);
> > > -             if (prox_state->channel2usage[chan->scan_index] ==
> > > -                 HID_USAGE_SENSOR_HUMAN_ATTENTION)
> > > +             if (mask == IIO_CHAN_INFO_PROCESSED)
Your original change is better. If someone adds a new channel which
also requires IIO_CHAN_INFO_PROCESSED, then they need to change this
line. So I don't think you need this change.

Thanks,
Srinivas

> > >                       *val *= 100;
> > >               hid_sensor_power_state(&prox_state-
> > > > common_attributes, false);
> > >               ret_type = IIO_VAL_INT;
> > > 
> > > ---
> > > base-commit: decc701f41d07481893fdea942c0ac6b226e84cd
> > > change-id: 20241121-fix-processed-ed1a95641e64
> > > 
> > > Best regards,
> > 
> 
>
diff mbox series

Patch

diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-sensor-prox.c
index e8e7b2999b4c..8e5d0ad13a5f 100644
--- a/drivers/iio/light/hid-sensor-prox.c
+++ b/drivers/iio/light/hid-sensor-prox.c
@@ -94,6 +94,7 @@  static int prox_read_raw(struct iio_dev *indio_dev,
 	*val2 = 0;
 	switch (mask) {
 	case IIO_CHAN_INFO_RAW:
+	case IIO_CHAN_INFO_PROCESSED:
 		if (chan->scan_index >= prox_state->num_channels)
 			return -EINVAL;
 		address = prox_state->channel2usage[chan->scan_index];
@@ -107,8 +108,7 @@  static int prox_read_raw(struct iio_dev *indio_dev,
 							   report_id,
 							   SENSOR_HUB_SYNC,
 							   min < 0);
-		if (prox_state->channel2usage[chan->scan_index] ==
-		    HID_USAGE_SENSOR_HUMAN_ATTENTION)
+		if (mask == IIO_CHAN_INFO_PROCESSED)
 			*val *= 100;
 		hid_sensor_power_state(&prox_state->common_attributes, false);
 		ret_type = IIO_VAL_INT;