18c2ecf20Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ci.. _media-controller-model:
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ciMedia device model
68c2ecf20Sopenharmony_ci==================
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ciDiscovering a device internal topology, and configuring it at runtime,
98c2ecf20Sopenharmony_ciis one of the goals of the media controller API. To achieve this,
108c2ecf20Sopenharmony_cihardware devices and Linux Kernel interfaces are modelled as graph
118c2ecf20Sopenharmony_ciobjects on an oriented graph. The object types that constitute the graph
128c2ecf20Sopenharmony_ciare:
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci-  An **entity** is a basic media hardware or software building block.
158c2ecf20Sopenharmony_ci   It can correspond to a large variety of logical blocks such as
168c2ecf20Sopenharmony_ci   physical hardware devices (CMOS sensor for instance), logical
178c2ecf20Sopenharmony_ci   hardware devices (a building block in a System-on-Chip image
188c2ecf20Sopenharmony_ci   processing pipeline), DMA channels or physical connectors.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci-  An **interface** is a graph representation of a Linux Kernel
218c2ecf20Sopenharmony_ci   userspace API interface, like a device node or a sysfs file that
228c2ecf20Sopenharmony_ci   controls one or more entities in the graph.
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci-  A **pad** is a data connection endpoint through which an entity can
258c2ecf20Sopenharmony_ci   interact with other entities. Data (not restricted to video) produced
268c2ecf20Sopenharmony_ci   by an entity flows from the entity's output to one or more entity
278c2ecf20Sopenharmony_ci   inputs. Pads should not be confused with physical pins at chip
288c2ecf20Sopenharmony_ci   boundaries.
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci-  A **data link** is a point-to-point oriented connection between two
318c2ecf20Sopenharmony_ci   pads, either on the same entity or on different entities. Data flows
328c2ecf20Sopenharmony_ci   from a source pad to a sink pad.
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci-  An **interface link** is a point-to-point bidirectional control
358c2ecf20Sopenharmony_ci   connection between a Linux Kernel interface and an entity.
36