• Hans de Goede's avatar
    platform/x86: Add ACPI i2c-multi-instantiate pseudo driver · e64e8498
    Hans de Goede authored
    On systems with ACPI instantiated i2c-clients, normally there is 1 fw_node
    per i2c-device and that fw-node contains 1 I2cSerialBus resource for that 1
    i2c-device.
    
    But in some rare cases the manufacturer has decided to describe multiple
    i2c-devices in a single ACPI fwnode with multiple I2cSerialBus resources.
    
    An earlier attempt to fix this in the i2c-core resulted in a lot of extra
    code to support this corner-case.
    
    This commit introduces a new i2c-multi-instantiate driver which fixes this
    in a different way. This new driver can be built as a module which will
    only loaded on affected systems.
    
    This driver will instantiate a new i2c-client per I2cSerialBus resource,
    using the driver_data from the acpi_device_id it is binding to to tell it
    which chip-type (and optional irq-resource) to use when instantiating.
    
    Note this driver depends on a platform device being instantiated for the
    ACPI fwnode, see the i2c_multi_instantiate_ids list of ACPI device-ids in
    drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
    Acked-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: default avatarWolfram Sang <wsa@the-dreams.de>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    e64e8498
Kconfig 40.2 KB