Commit 6ab3430129e2 ("mfd: Add ACPI support") made the MFD subdevices toTested-by: Jarkko Nikula <jarkko.nikula@xxxxxxxxxxxxxxx>
share the parent MFD ACPI companion device if no _HID/_CID is specified for
the subdevice in mfd_cell description. However, since all the subdevices
share the ACPI companion, the match and modalias generation logic started
to use the ACPI companion as well resulting this:
# cat /sys/bus/platform/devices/HID-SENSOR-200041.6.auto/modalias
acpi:INT33D1:PNP0C50:
instead of the expected one
# cat /sys/bus/platform/devices/HID-SENSOR-200041.6.auto/modalias
platform:HID-SENSOR-200041
In other words the subdevice modalias is overwritten by the one taken from
ACPI companion. This causes udev not to load the driver anymore.
It is useful to be able to share the ACPI companion so that MFD subdevices
(and possibly other devices as well) can access the ACPI resources even if
they do not have ACPI representation in the namespace themselves.
An example where this is used is Minnowboard LPC driver that creates GPIO
as a subdevice among other things. Without the ACPI companion gpiolib is
not is not able to lookup the corresponding GPIO controller from ACPI
GpioIo resource.
To fix this we restrict the match and modalias logic to be limited to the
first physical device. The secondary devices will still be able to access
the ACPI companion but they will be matched using traditional way.
Reported-by: Jarkko Nikula <jarkko.nikula@xxxxxxxxxxxxxxx>
Signed-off-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
---
Hi,
This is a regression in v3.18-rc1+ and prevents udev from loading the
modules in question. Alternative to this we can revert 6ab3430129e2 but
then Minnowboard GPIOs do not work anymore.
drivers/acpi/scan.c | 71 +++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 55 insertions(+), 16 deletions(-)