All of lore.kernel.org
 help / color / mirror / Atom feed
* iio: accel: mxc4005: new ACPI ID for the MXC6655 accelerometer?
@ 2024-01-31 15:10 Nikita Mikhailevich
  2024-01-31 16:38 ` Jonathan Cameron
  0 siblings, 1 reply; 2+ messages in thread
From: Nikita Mikhailevich @ 2024-01-31 15:10 UTC (permalink / raw)
  To: linux-iio

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@gmail.com>
---
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:

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-01-31 16:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-31 15:10 iio: accel: mxc4005: new ACPI ID for the MXC6655 accelerometer? Nikita Mikhailevich
2024-01-31 16:38 ` Jonathan Cameron

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.