| ================== |
| Device connections |
| ================== |
| |
| Introduction |
| ------------ |
| |
| Devices often have connections to other devices that are outside of the direct |
| child/parent relationship. A serial or network communication controller, which |
| could be a PCI device, may need to be able to get a reference to its PHY |
| component, which could be attached for example to the I2C bus. Some device |
| drivers need to be able to control the clocks or the GPIOs for their devices, |
| and so on. |
| |
| Device connections are generic descriptions of any type of connection between |
| two separate devices. |
| |
| Device connections alone do not create a dependency between the two devices. |
| They are only descriptions which are not tied to either of the devices directly. |
| A dependency between the two devices exists only if one of the two endpoint |
| devices requests a reference to the other. The descriptions themselves can be |
| defined in firmware (not yet supported) or they can be built-in. |
| |
| Usage |
| ----- |
| |
| Device connections should exist before device ``->probe`` callback is called for |
| either endpoint device in the description. If the connections are defined in |
| firmware, this is not a problem. It should be considered if the connection |
| descriptions are "built-in", and need to be added separately. |
| |
| The connection description consists of the names of the two devices with the |
| connection, i.e. the endpoints, and unique identifier for the connection which |
| is needed if there are multiple connections between the two devices. |
| |
| After a description exists, the devices in it can request reference to the other |
| endpoint device, or they can request the description itself. |
| |
| API |
| --- |
| |
| .. kernel-doc:: drivers/base/devcon.c |
| : functions: device_connection_find_match device_connection_find device_connection_add device_connection_remove |