On 10/24/2014 12:12 PM, Mika Westerberg wrote:
> Commit 6ab3430129e2 ("mfd: Add ACPI support") made the MFD subdevices to
> 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 <[email protected]>
> Signed-off-by: Mika Westerberg <[email protected]>
> ---
> 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(-)
>
Tested-by: Jarkko Nikula <[email protected]>