iio: accel: mxc4005: new ACPI ID for the MXC6655 accelerometer?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello!

I've got a laptop which has an MXC6655 accelerometer, but I couldn't
get it up and running despite the driver being present in the kernel.
When I was manually doing modprobe mxc4005 - nothing happened. Journal
and dmesg don't have anything relevant in them.
And if I was trying to run monitor-sensor and start iio-sensor-proxy,
I was getting a following error:

Failed to claim accelerometer:
GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.609
was not provided by any .service files

The device in /sys/bus/acpi/devices shows as MDA6655 instead of
MXC6655, which led me to try applying the following changes, after
which the device started working properly:

Signed-off-by: Nikita Mikhailevich <ermyril@xxxxxxxxx>
---
diff --git a/drivers/iio/accel/mxc4005.c b/drivers/iio/accel/mxc4005.c
index 82e8d0b39..0928b6e13 100644
--- a/drivers/iio/accel/mxc4005.c
+++ b/drivers/iio/accel/mxc4005.c
@@ -472,6 +472,7 @@ static int mxc4005_probe(struct i2c_client *client)
 static const struct acpi_device_id mxc4005_acpi_match[] = {
     {"MXC4005",    0},
     {"MXC6655",    0},
+    {"MDA6655",    0},
     { },
 };
 MODULE_DEVICE_TABLE(acpi, mxc4005_acpi_match);
@@ -479,6 +480,7 @@ MODULE_DEVICE_TABLE(acpi, mxc4005_acpi_match);
 static const struct of_device_id mxc4005_of_match[] = {
     { .compatible = "memsic,mxc4005", },
     { .compatible = "memsic,mxc6655", },
+    { .compatible = "memsic,mda6655", },
     { },
 };
 MODULE_DEVICE_TABLE(of, mxc4005_of_match);
@@ -486,6 +488,7 @@ MODULE_DEVICE_TABLE(of, mxc4005_of_match);
 static const struct i2c_device_id mxc4005_id[] = {
     {"mxc4005",    0},
     {"mxc6655",    0},
+    {"mda6655",     0},
     { },
 };
 MODULE_DEVICE_TABLE(i2c, mxc4005_id);
---

Please let me know what should my next steps be, is such patch legit
and should be submitted properly, is there anything wrong with the
code or are we able to mitigate the issue without changes in the
kernel, using udev rules for example, and if so - should we? (that
will leave such devices still broken by default)

Thank you,
Nikita Mikhailevich


The following are the debug commands that might be useful to
understand the situation, they were taken before rebuilding the kernel
with the patch above

$ journalctl | grep -E "4005|6655"
Jan 17 03:25:38 nixos systemd-modules-load[388]: Inserted module 'mxc4005'
Jan 17 10:11:08 nixos systemd-modules-load[401]: Inserted module 'mxc4005'
Jan 17 10:23:12 nixos systemd-modules-load[422]: Inserted module 'mxc4005'

$ journalctl | grep -Ei "iio"
Jan 21 06:00:22 nixos systemd[1]: Starting IIO Sensor Proxy service...
Jan 21 06:00:22 nixos systemd[1]: Started IIO Sensor Proxy service.
Jan 21 06:00:22 nixos systemd[1]: iio-sensor-proxy.service:
Deactivated successfully.

$ lsmod | grep 4005
mxc4005                16384  0
industrialio_triggered_buffer    12288  1 mxc4005
industrialio          135168  3 industrialio_triggered_buffer,kfifo_buf,mxc4005

$ ls -al /sys/bus/acpi/devices | grep 6655
lrwxrwxrwx 1 root root 0 Jan 24 22:57 MDA6655:00 ->
../../../devices/LNXSYSTM:00/LNXSYBUS:00/MDA6655:00
lrwxrwxrwx 1 root root 0 Jan 24 22:57 MXC6655:00 ->
../../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:6c/MXC6655:00
lrwxrwxrwx 1 root root 0 Jan 24 22:57 MXC6655:01 ->
../../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:6e/MXC6655:01

$ ls -al /sys/bus/i2c/devices/ | grep 6655
lrwxrwxrwx 1 root root 0 Jan 24 23:23 i2c-MDA6655:00 ->
../../../devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-2/i2c-MDA6655:00

$ cat /sys/bus/i2c/devices/i2c-MDA6655:00/modalias
acpi:MDA6655:MDA6655:

$ cat /sys/bus/acpi/devices/MDA6655:00/modalias
acpi:MDA6655:MDA6655:

$ udevadm info --export-db | grep iio
  - empty output


$ udevadm info --attribute-walk --path=/sys/bus/acpi/devices/MDA6655:00/

  looking at device '/devices/LNXSYSTM:00/LNXSYBUS:00/MDA6655:00':
    KERNEL=="MDA6655:00"
    SUBSYSTEM=="acpi"
    DRIVER==""
    ATTR{adr}=="0x00000000"
    ATTR{hid}=="MDA6655"
    ATTR{path}=="\_SB_.ACMK"
    ATTR{power/async}=="disabled"
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_enabled}=="disabled"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"
    ATTR{power/runtime_usage}=="0"
    ATTR{status}=="15"
    ATTR{uid}=="1"

  looking at parent device '/devices/LNXSYSTM:00/LNXSYBUS:00':
    KERNELS=="LNXSYBUS:00"
    SUBSYSTEMS=="acpi"
    DRIVERS==""
    ATTRS{hid}=="LNXSYBUS"
    ATTRS{path}=="\_SB_"
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"

  looking at parent device '/devices/LNXSYSTM:00':
    KERNELS=="LNXSYSTM:00"
    SUBSYSTEMS=="acpi"
    DRIVERS==""
    ATTRS{hid}=="LNXSYSTM"
    ATTRS{path}=="\"
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"


$ udevadm info --attribute-walk --path=/sys/bus/acpi/devices/MXC6655:00/

  looking at device
'/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:6c/MXC6655:00':
    KERNEL=="MXC6655:00"
    SUBSYSTEM=="acpi"
    DRIVER==""
    ATTR{adr}=="0x00000000"
    ATTR{adr}=="0x00000000"
    ATTR{hid}=="MXC6655"
    ATTR{path}=="\_SB_.PC00.I2C0.ACMG"
    ATTR{power/async}=="disabled"
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_enabled}=="disabled"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"
    ATTR{power/runtime_usage}=="0"
    ATTR{status}=="0"
    ATTR{uid}=="1"

  looking at parent device
'/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:6c':
    KERNELS=="device:6c"
    SUBSYSTEMS=="acpi"
    DRIVERS==""
    ATTRS{adr}=="0x00150000"
    ATTRS{path}=="\_SB_.PC00.I2C0"
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{power_state}=="D3hot"

  looking at parent device '/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00':
    KERNELS=="PNP0A08:00"
    SUBSYSTEMS=="acpi"
    DRIVERS==""
    ATTRS{adr}=="0x00000000"
    ATTRS{hid}=="PNP0A08"
    ATTRS{path}=="\_SB_.PC00"
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{uid}=="0"

  looking at parent device '/devices/LNXSYSTM:00/LNXSYBUS:00':
    KERNELS=="LNXSYBUS:00"
    SUBSYSTEMS=="acpi"
    DRIVERS==""
    ATTRS{hid}=="LNXSYBUS"
    ATTRS{path}=="\_SB_"
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"

  looking at parent device '/devices/LNXSYSTM:00':
    KERNELS=="LNXSYSTM:00"
    SUBSYSTEMS=="acpi"
    DRIVERS==""
    ATTRS{hid}=="LNXSYSTM"
    ATTRS{path}=="\"
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"


$ cat /sys/class/dmi/id/modalias
dmi:bvnAmericanMegatrendsInternational,LLC.:bvrDNN20V2.13:bd09/05/2023:br2.13:efr0.15:svnCHUWIInnovationAndTechnology(ShenZhen)co.,Ltd:pnMiniBookX:pvrDefaultstring:rvnDefaultstring:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct10:cvrDefaultstring:skuDefaultstring:





[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux