Re: Issues with Lenovo Yoga 900 IIO devices (accelerometer, etc.)

From: Nish Aravamudan
Date: Wed Dec 16 2015 - 18:06:04 EST


On Wed, Dec 16, 2015 at 2:55 PM, Crt Mori <cmo@xxxxxxxxxxx> wrote:
>
> On Dec 16, 2015 11:37 PM, "Nish Aravamudan" <nish.aravamudan@xxxxxxxxx>
> wrote:
>>
>> Hi,
>>
>> On Wed, Dec 16, 2015 at 2:22 PM, Crt Mori <cmo@xxxxxxxxxxx> wrote:
>> > On 16 December 2015 at 22:41, Nish Aravamudan
>> > <nish.aravamudan@xxxxxxxxx> wrote:
>> >> Hi Daniel,
>> >>
>> >> On Wed, Dec 16, 2015 at 1:43 AM, Daniel Baluta
>> >> <daniel.baluta@xxxxxxxxx> wrote:
>> >>> On Tue, Dec 15, 2015 at 9:19 PM, Nish Aravamudan
>> >>> <nish.aravamudan@xxxxxxxxx> wrote:
>> >>>> So, I apologize in advance for this relatively vague report, but I'm
>> >>>> fairly sure
>> >>>> the Yoga 900 has an accelerometer amongst other sensors (ambient
>> >>>> light?)
>> >>>> exported over IIO.
>> >>>>
>> >>>> But, these sensors seem to not be updating at all with a 4.4-rc5+
>> >>>> kernel (a
>> >>>> set of patches from https://lkml.org/lkml/2015/11/30/441 applied to
>> >>>> Linus'
>> >>>> tree).
>> >>>>
>> >>>> The odd part is at some point in messing with this, I'm fairly sure
>> >>>> it did work!
>> >>>> That is,
>> >>>>
>> >>>> `watch -n 0.1 cat '/sys/bus/iio/devices/iio:device'*/*raw*`
>> >>>
>> >>> Can you send us a sample of the output? Also, would be
>> >>> good to identify the exact driver for accel.
>> >>
>> >> cat /sys/bus/iio/devices/iio:device*/*raw*
>> >> 65478
>> >> 7
>> >> 1023
>> >> 0
>> >> 0
>> >> 0
>> >> 100
>> >> -539062
>> >> -742187
>> >> 1292968
>> >> 1592
>> >> 64932
>> >> 2
>> >> 275
>> >> 0 0 0 0
>> >>
>> >> Now, I should say that I distinctly remember at some point waving my
>> >> laptop around and seeing these values change ... but now they seem to
>> >> be "stuck". Maybe it's a hardware issue or something special that
>> >> WIndows does to leverage the IIO sensors?
>> >>
>> >>> Perhaps: cat /sys/bus/iio/devices/iio:device'*/name
>> >>
>> >> $ cat /sys/bus/iio/devices/iio:device*/name
>> >> accel_3d
>> >
>> > Can you list the directory of iio:device with this name (it is:
>> > drivers/iio/accel/hid-sensor-accel-3d.c).
>> > This is something you will be looking at for accel debugging, but it
>> > seems more like
>> > standard
>>
>> /sys/bus/iio/devices/iio:device0/name
>> gyro_3d
>> /sys/bus/iio/devices/iio:device1/name
>> dev_rotation
>> /sys/bus/iio/devices/iio:device2/name
>> als
>> /sys/bus/iio/devices/iio:device3/name
>> magn_3d
>> /sys/bus/iio/devices/iio:device4/name
>> accel_3d
>> /sys/bus/iio/devices/iio:device5/name
>> incli_3d
>>
>> are all the IIO sensors, sorry about that!
>>
>
> I was more thinking what else is in iio:device4 directory, so that we can
> see if it was initialized OK. Can you also grep the dmesg for any errors?

Well, I just noticed the device #s are not consistent boot-to-boot, so
this time it was device0. Trimming out the directories:

/sys/bus/iio/devices/iio:device0/buffer
cat: /sys/bus/iio/devices/iio:device0/buffer: Is a directory
/sys/bus/iio/devices/iio:device0/dev
250:0
/sys/bus/iio/devices/iio:device0/in_accel_hysteresis
cat: /sys/bus/iio/devices/iio:device0/in_accel_hysteresis: Invalid argument
/sys/bus/iio/devices/iio:device0/in_accel_offset
0
/sys/bus/iio/devices/iio:device0/in_accel_sampling_frequency
8.000000
/sys/bus/iio/devices/iio:device0/in_accel_scale
0.009806
/sys/bus/iio/devices/iio:device0/in_accel_x_raw
65478
/sys/bus/iio/devices/iio:device0/in_accel_y_raw
7
/sys/bus/iio/devices/iio:device0/in_accel_z_raw
1023
/sys/bus/iio/devices/iio:device0/name
accel_3d
/sys/bus/iio/devices/iio:device0/uevent
MAJOR=250
MINOR=0
DEVNAME=iio:device0
DEVTYPE=iio_device

Another thing I just noticed:

/sys/bus/iio/devices/iio:device0/buffer/enable
0

The only error I'm getting consistently is:

[ 1.115327] i2c_hid i2c-ITE8396:00: error in i2c_hid_init_report
size:19 / ret_size:18

which I don't think is relevant, but I might be wrong.

>> >> gyro_3d
>> >> als
>> >> magn_3d
>> >> incli_3d
>> >> dev_rotation
>> >>
>> >>
>> >>>>
>> >>>> showed updating values as I moved the laptop around.
>> >>>>
>> >>>> I've not done any accelerometer debugging before, so any suggestion
>> >>>> on
>> >>>> where to start would be greatly appreciated!
>> >>>
>> >>> Did you applied some patches and recompiled the kernel? Or when it did
>> >>> stopped
>> >>> working?
>> >>
>> >> As far as I can tell, it only worked that one one time and hasn't
>> >> since. Although your question does make me wonder *which* kernel I was
>> >> on that I experienced the values changing. Let me go back to a stock
>> >> 4.4-rc5 and see.
>> >
>> > Did you compile the stock kernel? It might be that .dts file you are
>> > using (or defconfig)
>> > is not correct.
>>
>> I compiled the stock kernel, based off the the Ubuntu 15.04 .config,
>> trimmed to account for the hardware I have on the system. I can attach
>> the .config if that will be useful.
>>
>> I just went back to 4.4-rc4 and it also didn't seem to have any
>> updates to the raw file contents.
>>
>
> I hope full post of your defconfig will not be needed. However could you
> double check that you have enabled all drivers for accel (check the kbuild
> file in drivers/iio/accel). If they have driver for accel in main kernel (or
> staging) then it will link with existing device tree nicely.

I'll go back and enable everything just to be safe. Building now, will
report the results once I have them.

-Nish
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/