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