• Jean-Michel Hautbois's avatar
    i2c: Add generic support passing secondary devices addresses · 0f614d83
    Jean-Michel Hautbois authored
    Some I2C devices have multiple addresses assigned, for example each address
    corresponding to a different internal register map page of the device.
    So far drivers which need support for this have handled this with a driver
    specific and non-generic implementation, e.g. passing the additional address
    via platform data.
    
    This patch provides a new helper function called i2c_new_secondary_device()
    which is intended to provide a generic way to get the secondary address
    as well as instantiate a struct i2c_client for the secondary address.
    
    The function expects a pointer to the primary i2c_client, a name
    for the secondary address and an optional default address. The name is used
    as a handle to specify which secondary address to get.
    
    The default address is used as a fallback in case no secondary address
    was explicitly specified. In case no secondary address and no default
    address were specified the function returns NULL.
    
    For now the function only supports look-up of the secondary address
    from devicetree, but it can be extended in the future
    to for example support board files and/or ACPI.
    Signed-off-by: default avatarJean-Michel Hautbois <jean-michel.hautbois@veo-labs.com>
    Acked-by: default avatarRob Herring <robh@kernel.org>
    Acked-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    0f614d83
i2c-core.c 88.8 KB