drivers/base: provide an infrastructure for componentised subsystems
authorRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 10 Jan 2014 23:23:37 +0000 (23:23 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Jan 2014 00:27:36 +0000 (16:27 -0800)
commit2a41e6070dd7ef539d0f3b1652b4839d04378e11
tree9cb329a1231a1f971e6c18ff472090872adb8da2
parentd1ba277e79889085a2faec3b68b91ce89c63f888
drivers/base: provide an infrastructure for componentised subsystems

Subsystems such as ALSA, DRM and others require a single card-level
device structure to represent a subsystem.  However, firmware tends to
describe the individual devices and the connections between them.

Therefore, we need a way to gather up the individual component devices
together, and indicate when we have all the component devices.

We do this in DT by providing a "superdevice" node which specifies
the components, eg:

imx-drm {
compatible = "fsl,drm";
crtcs = <&ipu1>;
connectors = <&hdmi>;
};

The superdevice is declared into the component support, along with the
subcomponents.  The superdevice receives callbacks to locate the
subcomponents, and identify when all components are present.  At this
point, we bind the superdevice, which causes the appropriate subsystem
to be initialised in the conventional way.

When any of the components or superdevice are removed from the system,
we unbind the superdevice, thereby taking the subsystem down.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/Makefile
drivers/base/component.c [new file with mode: 0644]
include/linux/component.h [new file with mode: 0644]