drivers: base: Introducing software nodes to the firmware node framework
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Fri, 9 Nov 2018 14:21:36 +0000 (17:21 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 26 Nov 2018 17:19:11 +0000 (18:19 +0100)
commit59abd83672f70cac4b6bf9b237506c5bc6837606
treee9525695b661c73c337f151839f3cd8ed7472484
parent7847a1455fc4574d53e349d60feb1e1106cdc012
drivers: base: Introducing software nodes to the firmware node framework

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: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/ABI/testing/sysfs-devices-software_node [new file with mode: 0644]
drivers/base/Makefile
drivers/base/core.c
drivers/base/swnode.c [new file with mode: 0644]
include/linux/property.h