• Mika Westerberg's avatar
    ACPI: Use ACPI companion to match only the first physical device · 52870786
    Mika Westerberg authored
    Commit 6ab34301 ("mfd: Add ACPI support") made the MFD subdevices
    share the parent MFD ACPI companion 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 able to lookup the corresponding GPIO controller from ACPI GpioIo
    resource.
    
    To fix this, restrict the match and modalias logic to be limited to the
    first (primary) physical device associated with the given ACPI comapnion.
    The secondary devices will still be able to access the ACPI companion,
    but they will be matched in a different way.
    
    Fixes: 6ab34301 (mfd: Add ACPI support)
    Reported-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    52870786
scan.c 60.3 KB