• Heikki Krogerus's avatar
    drivers: base: Introducing software nodes to the firmware node framework · 59abd836
    Heikki Krogerus authored
    Software node is a new struct fwnode_handle type that can be
    used to describe devices in kernel (software). It is meant
    to complement fwnodes representing real firmware nodes when
    they are incomplete (for example missing device properties)
    and to supply the primary fwnode when the firmware lacks
    hardware description for a device completely.
    The software node type is really meant to replace the
    currently used "property_set" struct fwnode_handle type. The
    handling of struct property_set is glued to the generic
    device property handling code, and it is not possible to
    create a struct property_set independently from the device
    that it is bind to. struct property_set is only created when
    device properties are added to already initialized struct
    device, and control of it is only possible from the generic
    property handling code.
    Software nodes are instead designed to be created
    independently from the device entries (struct device). It
    makes them much more flexible, as then the device meant to
    be bind to the node can be created at a later time, and from
    another location. It is also possible to bind multiple
    devices to a single software node if needed.
    The software node implementation also includes support for
    node hierarchy, which was the main motivation for this
    commit. The node hierarchy was something that was requested
    for the struct property_set, but it did not seem reasonable
    to try to extend the property_set support for that purpose.
    struct property_set was really meant only for device
    property handling like the name suggests.
    Support for struct property_set is not yet removed in this
    commit, but it will be in the following one.
    Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
    Acked-by: Linus Walleij's avatarLinus Walleij <linus.walleij@linaro.org>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>