A couple of accelerometers are used to detect the hinge angle in convertible laptops(one for display, one for base/keyboard). A discussion on the topic is available at [1] But in my case while DSDT describes two I2C devices (if I interpret it right): >Device (ACMG) > { > Name (_ADR, Zero) // _ADR: Address > Name (_HID, "MXC6655") // _HID: Hardware ID > Name (_CID, "MXC6655") // _CID: Compatible ID > Name (_DDN, "Accelerometer with Angle Calculation") // _DDN: DOS > Device Name > Name (_UID, One) // _UID: Unique ID > Method (_CRS, 0, NotSerialized) // _CRS: Current Resource > Settings > { > Name (RBUF, ResourceTemplate () > { > I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80, > AddressingMode7Bit, "\\_SB.PC00.I2C1", > 0x00, ResourceConsumer, , Exclusive, > ) > I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80, > AddressingMode7Bit, "\\_SB.PC00.I2C2", > 0x00, ResourceConsumer, , Exclusive, > ) > }) > Return (RBUF) /* \_SB_.PC00.I2C1.ACMG._CRS.RBUF */ > } only one of them is detected (display side one, up and running, by the way): > P: /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-16/i2c-MXC6655:00 > L: 0 > E: > DEVPATH=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-16/i2c-MXC6655:00 > E: SUBSYSTEM=i2c > E: DRIVER=mxc4005 > E: MODALIAS=acpi:MXC6655:MXC6655: > > P: > /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-16/i2c-MXC6655:00/iio:device0 > N: iio:device0 > L: 0 > E: > DEVPATH=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-16/i2c-MXC6655:00/iio:device0 > E: SUBSYSTEM=iio > E: DEVNAME=/dev/iio:device0 > E: DEVTYPE=iio_device > E: MAJOR=238 > E: MINOR=0 > E: USEC_INITIALIZED=4954716 > E: IIO_SENSOR_PROXY_TYPE=iio-poll-accel iio-buffer-accel > E: SYSTEMD_WANTS=iio-sensor-proxy.service > E: TAGS=:systemd: > E: CURRENT_TAGS=:systemd: There should be 2 I2C devices with DRIVER=mxc4005, shouldn't they? Attaching detailed logs also. [1] https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/merge_requests/338
Created attachment 301058 [details] ACPI DSDT
Created attachment 301059 [details] DMIDECODE
Created attachment 301060 [details] udevadm info --export-db log
Created attachment 301061 [details] gdbus introspect
+Cc: Hans as he was working on similar issues in the past. Btw, do you still experience this issue in a newest kernel?
Andy, thank you for the Cc. Nikolai, thank you for reporting this and thank you for already doing some initial investigation and providing a DSDT. Looking at the _CRS for the Device (ACMG) {} then it has 2 I2cSerialBusV2 resources, likely one for each accelerometer. We have hit this case before with BOSC0200 ACPI devices describing bmc150 accelerometers, see: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/iio/accel/bmc150-accel-i2c.c#n125 I think we need to add a function like bmc150_acpi_dual_accel_probe() to drivers/iio/accel/mxc4005.c minus the extra special suspend/resume handling. Nikolai, do you think you can write a patch for this yourself (mostly copy + pasting the bmc150_acpi_dual_accel_probe() function) ?