Lines Matching +full:sub +full:- +full:bus
1 .. SPDX-License-Identifier: GPL-2.0-only
6 Auxiliary Bus
14 export Virtual Function management). A split of the functionality into child-
15 devices representing sub-domains of functionality makes it possible to
16 compartmentalize, layer, and distribute domain-specific concerns via a Linux
17 device-driver model.
23 allows for the audio core device to be minimal and focused on hardware-specific
28 auxiliary_device within other domain-specific structures and the use of .ops
29 callbacks. Devices on the auxiliary bus do not share any structures and the use
30 of a communication channel with the parent is domain-specific.
38 When Should the Auxiliary Bus Be Used
41 The auxiliary bus is to be used when a driver and one or more kernel modules,
49 customization out of the bus infrastructure.
51 One example is a PCI network device that is RDMA-capable and exports a child
58 Another use case is for the PCI device to be split out into multiple sub
59 functions. For each sub function an auxiliary_device is created. A PCI sub
61 devices. A PCI sub function auxiliary device is likely to be contained in a
62 struct with additional attributes such as user defined sub function number and
67 A key requirement for utilizing the auxiliary bus is that there is no
68 dependency on a physical bus, device, register accesses or regmap support.
69 These individual devices split from the core cannot live on the platform bus as
80 with the match_name provide a unique name to register with the bus subsystem.
82 Registering an auxiliary_device is a two-step process. First call
88 the bus.
90 Unregistering an auxiliary_device is also a two-step process to mirror the
94 .. code-block:: c
103 the bus, they must have unique id values (e.g. "x" and "y") so that the
108 populated with a non-NULL pointer to successfully register the auxiliary_device.
113 ------------------------------------------
116 auxiliary_device and register it on the auxiliary bus. It is important to note
117 that, as opposed to the platform bus, the registering driver is wholly
135 auxiliary_device is still registered on the auxiliary bus. It is up to the
150 .. code-block:: c
163 Auxiliary drivers register themselves with the bus by calling
170 Auxiliary devices are created and registered by a subsystem-level core device
172 extend the scope of an auxiliary_device is to encapsulate it within a domain-
179 .. code-block:: c
197 core device's functionality extensible by adding additional domain-specific ops
200 .. code-block:: c
215 .. code-block:: c