Re: [PATCH] HID: hid-sensor-custom: Allow more than one hinge angle sensor

From: Jonathan Cameron
Date: Sat Nov 12 2022 - 10:37:25 EST


On Sun, 6 Nov 2022 21:58:04 +0200
Yauhen Kharuzhy <jekhor@xxxxxxxxx> wrote:

> On Sun, Nov 06, 2022 at 05:36:43PM +0000, Jonathan Cameron wrote:
> > On Sun, 6 Nov 2022 00:34:22 +0200
> > Yauhen Kharuzhy <jekhor@xxxxxxxxx> wrote:
> >
> > > Some devices has two sets of accelerometers and the sensor hub exports
> > > two hinge angle 'sensors' based on accelerometer values. To allow more
> > > than one sensor of the same type, use PLATFORM_DEVID_AUTO instead of
> > > PLATFORM_DEVID_NONE when registering platform device for it.
> > >
> > > Checked on the Lenovo Yoga Book YB1-X91L tablet.
> > >
> > > Signed-off-by: Yauhen Kharuzhy <jekhor@xxxxxxxxx>
> >
> > Purely for curiosity sake, but where are the two sets of sensors?
> > Doesn't look like it has two hinges at first glance!
>
> It sounds crazy, yes :)
>
> The Lenovo Yoga Book YB1-X91L looks to be strange device in many ways.
>
> There are two accelerometers at display side and two at keyboard side (for
> detecting the rotation movement as I understand). For
> some reasons ISH exposed two virtual hinge angle sensors (I guess that
> one for each pair of accelerometers):
>
> ...
> [ 6.230627] Registering platform device 'HID-SENSOR-INT-020b.35.auto'. Parent at 001F:8087:0AC2.0005
> [ 6.230658] device: 'HID-SENSOR-INT-020b.35.auto': device_add
> [ 6.230705] bus: 'platform': add device HID-SENSOR-INT-020b.35.auto
> [ 6.230737] PM: Adding info for platform:HID-SENSOR-INT-020b.35.auto
> ...
> [ 6.249248] Registering platform device 'HID-SENSOR-INT-020b.36.auto'. Parent at 001F:8087:8AC2.0006
> [ 6.249266] device: 'HID-SENSOR-INT-020b.36.auto': device_add
> [ 6.249295] bus: 'platform': add device HID-SENSOR-INT-020b.36.auto
> [ 6.249394] PM: Adding info for platform:HID-SENSOR-INT-020b.36.auto
>
> This is senseless but it is what it is. Moreover, this 'sensor' is always
> returns 360 degrees angle, although display and keyboard 'absolute' angles are
> reported correctly.
>
> In any way, this patch is generic and will be useful for other custom HID
> sensors if they will be added in the future.

Thanks for the explanation.

Far as I'm concerned patch seems sensible.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>

>
> >
> > Jonathan
> >
> > > ---
> > > drivers/hid/hid-sensor-custom.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/hid/hid-sensor-custom.c b/drivers/hid/hid-sensor-custom.c
> > > index 32c2306e240d6..a6fc89ee1287c 100644
> > > --- a/drivers/hid/hid-sensor-custom.c
> > > +++ b/drivers/hid/hid-sensor-custom.c
> > > @@ -862,7 +862,7 @@ hid_sensor_register_platform_device(struct platform_device *pdev,
> > > return ERR_PTR(-ENOMEM);
> > >
> > > custom_pdev = platform_device_register_data(pdev->dev.parent, dev_name,
> > > - PLATFORM_DEVID_NONE, hsdev,
> > > + PLATFORM_DEVID_AUTO, hsdev,
> > > sizeof(*hsdev));
> > > kfree(dev_name);
> > > return custom_pdev;
> >
>