요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
.. _media-controller-model:
Media device model
==================
Discovering a device internal topology, and configuring it at runtime,
is one of the goals of the media controller API. To achieve this,
hardware devices and Linux Kernel interfaces are modelled as graph
objects on an oriented graph. The object types that constitute the graph
are:
- An **entity** is a basic media hardware or software building block.
It can correspond to a large variety of logical blocks such as
physical hardware devices (CMOS sensor for instance), logical
hardware devices (a building block in a System-on-Chip image
processing pipeline), DMA channels or physical connectors.
- An **interface** is a graph representation of a Linux Kernel
userspace API interface, like a device node or a sysfs file that
controls one or more entities in the graph.
- A **pad** is a data connection endpoint through which an entity can
interact with other entities. Data (not restricted to video) produced
by an entity flows from the entity's output to one or more entity
inputs. Pads should not be confused with physical pins at chip
boundaries.
- A **data link** is a point-to-point oriented connection between two
pads, either on the same entity or on different entities. Data flows
from a source pad to a sink pad.
- An **interface link** is a point-to-point bidirectional control
connection between a Linux Kernel interface and an entity.
- An **ancillary link** is a point-to-point connection denoting that two
entities form a single logical unit. For example this could represent the
fact that a particular camera sensor and lens controller form a single
physical module, meaning this lens controller drives the lens for this
camera sensor.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
방향성 graph model
1-13Media Controller API의 목표 중 하나는 device 내부 topology를 발견하고 runtime에 구성하는 것입니다. 이를 위해 hardware device와 Linux Kernel interface를 방향성 graph의 object로 model합니다.
Graph는 entity, interface, pad, data link, interface link, ancillary link의 여섯 object type으로 구성됩니다.
Data path와 control·association path는 서로 다른 link type으로 표현됩니다.
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
.. _media-controller-model:
Media device model
==================
Discovering a device internal topology, and configuring it at runtime,
is one of the goals of the media controller API. To achieve this,
hardware devices and Linux Kernel interfaces are modelled as graph
objects on an oriented graph. The object types that constitute the graph
are:
Entity, interface와 pad
14-28**Entity**는 기본적인 media hardware 또는 software building block입니다. CMOS sensor 같은 physical hardware device, System-on-Chip image processing pipeline의 building block 같은 logical hardware device, DMA channel 또는 physical connector를 나타낼 수 있습니다.
**Interface**는 graph의 entity 하나 이상을 제어하는 device node나 sysfs file 같은 Linux Kernel userspace API interface를 graph로 표현한 것입니다.
**Pad**는 entity가 다른 entity와 상호 작용하는 data connection endpoint입니다. Video로 제한되지 않는 data는 entity output에서 하나 이상의 entity input으로 흐릅니다. Pad를 chip 경계의 physical pin과 혼동하면 안 됩니다.
각 object가 표현하는 대상과 방향성을 구분합니다.
- An **entity** is a basic media hardware or software building block.
It can correspond to a large variety of logical blocks such as
physical hardware devices (CMOS sensor for instance), logical
hardware devices (a building block in a System-on-Chip image
processing pipeline), DMA channels or physical connectors.
- An **interface** is a graph representation of a Linux Kernel
userspace API interface, like a device node or a sysfs file that
controls one or more entities in the graph.
- A **pad** is a data connection endpoint through which an entity can
interact with other entities. Data (not restricted to video) produced
by an entity flows from the entity's output to one or more entity
inputs. Pads should not be confused with physical pins at chip
boundaries.
Data, interface와 ancillary link
29-41**Data link**는 같은 entity 또는 서로 다른 entity에 있는 두 pad 사이의 point-to-point 방향성 연결입니다. Data는 source pad에서 sink pad로 흐릅니다.
**Interface link**는 Linux Kernel interface와 entity 사이의 point-to-point 양방향 control 연결입니다.
**Ancillary link**는 두 entity가 하나의 logical unit을 이룬다는 사실을 나타내는 point-to-point 연결입니다. 예를 들어 특정 camera sensor와 lens controller가 한 physical module을 이루며 그 lens controller가 해당 sensor의 lens를 구동한다는 관계를 표현할 수 있습니다.
연결 목적과 방향을 비교합니다.
- A **data link** is a point-to-point oriented connection between two
pads, either on the same entity or on different entities. Data flows
from a source pad to a sink pad.
- An **interface link** is a point-to-point bidirectional control
connection between a Linux Kernel interface and an entity.
- An **ancillary link** is a point-to-point connection denoting that two
entities form a single logical unit. For example this could represent the
fact that a particular camera sensor and lens controller form a single
physical module, meaning this lens controller drives the lens for this
camera sensor.
요약·해설
media-controller-model.rst:1-41Data link는 source pad에서 sink pad로 흐르는 data path이고, interface link는 control 관계, ancillary link는 하나의 논리 단위를 이루는 entity 관계입니다.