← Documents Documentation/admin-guide/media/qcom_camss_graph.dot GitHub 원문 ↗

Linux 6.18.37 · Admin guide

Qualcomm CAMSS 미디어 토폴로지 DOT 그래프

Qualcomm CAMSS의 OV5645 센서 2개에서 CSIPHY·CSID·ISPIF 선택 행렬과 VFE0 처리 경로를 지나 `/dev/video0-3`으로 출력되는 전체 미디어 토폴로지를 해설합니다.

Source pathDocumentation/admin-guide/media/qcom_camss_graph.dot
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

qcom_camss_graph.dot:1-43

Qualcomm CAMSS의 OV5645 센서 2개에서 CSIPHY·CSID·ISPIF 선택 행렬과 VFE0 처리 경로를 지나 `/dev/video0-3`으로 출력되는 전체 미디어 토폴로지를 해설합니다.

CAMSS 경로 요약
OV5645CSIPHYCSIDISPIFVFE0 RDI/PIX/dev/video0-3

두 센서는 동일한 내부 처리 선택지를 거쳐 네 캡처 장치 중 하나로 전달될 수 있습니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 # SPDX-License-Identifier: GPL-2.0
2
3 digraph board {
4 rankdir=TB
5 n00000001 [label="{{<port0> 0} | msm_csiphy0\n/dev/v4l-subdev0 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
6 n00000001:port1 -> n00000007:port0 [style=dashed]
7 n00000001:port1 -> n0000000a:port0 [style=dashed]
8 n00000004 [label="{{<port0> 0} | msm_csiphy1\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
9 n00000004:port1 -> n00000007:port0 [style=dashed]
10 n00000004:port1 -> n0000000a:port0 [style=dashed]
11 n00000007 [label="{{<port0> 0} | msm_csid0\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
12 n00000007:port1 -> n0000000d:port0 [style=dashed]
13 n00000007:port1 -> n00000010:port0 [style=dashed]
14 n0000000a [label="{{<port0> 0} | msm_csid1\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
15 n0000000a:port1 -> n0000000d:port0 [style=dashed]
16 n0000000a:port1 -> n00000010:port0 [style=dashed]
17 n0000000d [label="{{<port0> 0} | msm_ispif0\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
18 n0000000d:port1 -> n00000013:port0 [style=dashed]
19 n0000000d:port1 -> n0000001c:port0 [style=dashed]
20 n0000000d:port1 -> n00000025:port0 [style=dashed]
21 n0000000d:port1 -> n0000002e:port0 [style=dashed]
22 n00000010 [label="{{<port0> 0} | msm_ispif1\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
23 n00000010:port1 -> n00000013:port0 [style=dashed]
24 n00000010:port1 -> n0000001c:port0 [style=dashed]
25 n00000010:port1 -> n00000025:port0 [style=dashed]
26 n00000010:port1 -> n0000002e:port0 [style=dashed]
27 n00000013 [label="{{<port0> 0} | msm_vfe0_rdi0\n/dev/v4l-subdev6 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
28 n00000013:port1 -> n00000016 [style=bold]
29 n00000016 [label="msm_vfe0_video0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
30 n0000001c [label="{{<port0> 0} | msm_vfe0_rdi1\n/dev/v4l-subdev7 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
31 n0000001c:port1 -> n0000001f [style=bold]
32 n0000001f [label="msm_vfe0_video1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
33 n00000025 [label="{{<port0> 0} | msm_vfe0_rdi2\n/dev/v4l-subdev8 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
34 n00000025:port1 -> n00000028 [style=bold]
35 n00000028 [label="msm_vfe0_video2\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
36 n0000002e [label="{{<port0> 0} | msm_vfe0_pix\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
37 n0000002e:port1 -> n00000031 [style=bold]
38 n00000031 [label="msm_vfe0_video3\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
39 n00000057 [label="{{} | ov5645 1-0076\n/dev/v4l-subdev10 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
40 n00000057:port0 -> n00000001:port0 [style=bold]
41 n00000059 [label="{{} | ov5645 1-0074\n/dev/v4l-subdev11 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
42 n00000059:port0 -> n00000004:port0 [style=bold]
43 }
44

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

두 OV5645 입력에서 네 VFE 캡처 출력까지의 연결 구조

1-43

이 Graphviz DOT 원문은 Qualcomm Camera Subsystem(CAMSS)의 V4L2 미디어 토폴로지를 위에서 아래로 배치합니다. `ov5645 1-0076`과 `ov5645 1-0074` 센서가 각각 `msm_csiphy0`과 `msm_csiphy1`에 들어가고, CSID와 ISPIF 선택 단계를 지난 뒤 VFE0의 RDI 세 경로 또는 PIX 경로를 통해 `/dev/video0`부터 `/dev/video3`까지 출력됩니다.

초록색 `Mrecord`는 입력 `port0`과 출력 `port1` 패드를 가진 서브디바이스이며 노란색 `box`는 최종 비디오 캡처 노드입니다. `rankdir=TB`는 토폴로지를 하향식으로 그립니다. 센서와 CSIPHY 사이 및 VFE와 비디오 노드 사이는 `style=bold`, 내부 교차 연결은 `style=dashed`로 기록됩니다.

두 CSIPHY는 두 CSID 모두에 연결 후보를 가지며, 두 CSID도 두 ISPIF 모두에 연결될 수 있습니다. 이어서 각 ISPIF는 `msm_vfe0_rdi0`, `rdi1`, `rdi2`, `pix` 네 입력 모두에 후보 링크를 제공합니다. 원문이 표시하는 링크 모양과 방향만 설명하며, DOT에 없는 런타임 포맷이나 활성 라우팅 값은 덧붙이지 않습니다.

두 센서의 CAMSS 처리 흐름
ov5645 1-0076 /dev/v4l-subdev10msm_csiphy0CSID 0 또는 1ISPIF 0 또는 1VFE0 RDI0-2 또는 PIX/dev/video0-3
ov5645 1-0074 /dev/v4l-subdev11msm_csiphy1CSID 0 또는 1ISPIF 0 또는 1VFE0 RDI0-2 또는 PIX/dev/video0-3

센서별 고정 입력 뒤에 세 단계의 선택 행렬이 있고 VFE 출력은 비디오 노드와 일대일로 연결됩니다.

센서와 CSIPHY의 굵은 입력 링크
센서센서 장치출력 패드CSIPHY 입력
ov5645 1-0076/dev/v4l-subdev10port0msm_csiphy0 /dev/v4l-subdev0 port0
ov5645 1-0074/dev/v4l-subdev11port0msm_csiphy1 /dev/v4l-subdev1 port0

원문 39-42줄에 있는 두 센서의 장치 경로와 고정 목적지입니다.

내부 처리 단계
단계엔티티장치 경로출력 관계
CSIPHYmsm_csiphy0, msm_csiphy1/dev/v4l-subdev0-1각 port1에서 CSID 0-1의 port0으로 선택
CSIDmsm_csid0, msm_csid1/dev/v4l-subdev2-3각 port1에서 ISPIF 0-1의 port0으로 선택
ISPIFmsm_ispif0, msm_ispif1/dev/v4l-subdev4-5각 port1에서 VFE의 RDI0-2와 PIX로 선택
VFEmsm_vfe0_rdi0-2, msm_vfe0_pix/dev/v4l-subdev6-9각 port1에서 대응 비디오 노드로 출력

각 계층의 엔티티 수, 장치 번호와 다음 단계의 선택 범위를 정리합니다.

VFE와 비디오 캡처 노드의 대응
VFE 엔티티서브디바이스비디오 엔티티캡처 장치
msm_vfe0_rdi0/dev/v4l-subdev6msm_vfe0_video0/dev/video0
msm_vfe0_rdi1/dev/v4l-subdev7msm_vfe0_video1/dev/video1
msm_vfe0_rdi2/dev/v4l-subdev8msm_vfe0_video2/dev/video2
msm_vfe0_pix/dev/v4l-subdev9msm_vfe0_video3/dev/video3

네 VFE 서브디바이스 출력은 네 비디오 장치에 굵은 링크로 일대일 연결됩니다.

링크 행렬과 선 스타일
구간수량원문 스타일의미
센서 -> CSIPHY2`style=bold`각 센서의 고정 입력 연결
CSIPHY -> CSID4`style=dashed`2 x 2 선택 행렬
CSID -> ISPIF4`style=dashed`2 x 2 선택 행렬
ISPIF -> VFE8`style=dashed`2 x 4 선택 행렬
VFE -> 비디오4`style=bold`처리 출력과 캡처 노드의 일대일 연결

43줄 원문에 있는 22개 링크를 단계별 수량으로 분해합니다.

그래프 구조 수량
구성수량세부
전체 노드16초록색 서브디바이스 12 + 노란색 비디오 노드 4
초록색 Mrecord12센서 2 + CSIPHY 2 + CSID 2 + ISPIF 2 + VFE 4
노란색 box4`/dev/video0`-`/dev/video3`
전체 링크22점선 16 + 굵은 선 6

원문 해시와 함께 감사 도구가 고정하는 노드 및 링크 수입니다.

원문 줄 좌표
원문 줄구성해설
1-4SPDX와 그래프 선언GPL-2.0 식별자, `digraph board`, 하향식 배치를 선언합니다.
5-10CSIPHY 0-1두 CSIPHY와 CSID 0-1로 가는 점선 링크 4개입니다.
11-16CSID 0-1두 CSID와 ISPIF 0-1로 가는 점선 링크 4개입니다.
17-26ISPIF 0-1두 ISPIF와 VFE 입력 네 개로 가는 점선 링크 8개입니다.
27-38VFE와 비디오 노드VFE 서브디바이스 4개, 비디오 노드 4개와 굵은 링크 4개입니다.
39-42OV5645 센서 2개센서 0076과 0074가 각각 CSIPHY0과 CSIPHY1로 들어갑니다.
43닫는 중괄호`board` 그래프를 끝냅니다.

각 계층과 링크 집합이 등장하는 1-43줄 범위입니다.

아래 코드는 Linux v6.18.37 원문 1-43줄 전체입니다. 표시 안정성을 위해 탭만 여덟 칸으로 정규화했으며 노드 ID, 엔티티명, 장치 경로, 포트 번호, 링크 방향과 스타일은 그대로 보존했습니다.

# SPDX-License-Identifier: GPL-2.0

digraph board {
        rankdir=TB
        n00000001 [label="{{<port0> 0} | msm_csiphy0\n/dev/v4l-subdev0 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000001:port1 -> n00000007:port0 [style=dashed]
        n00000001:port1 -> n0000000a:port0 [style=dashed]
        n00000004 [label="{{<port0> 0} | msm_csiphy1\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000004:port1 -> n00000007:port0 [style=dashed]
        n00000004:port1 -> n0000000a:port0 [style=dashed]
        n00000007 [label="{{<port0> 0} | msm_csid0\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000007:port1 -> n0000000d:port0 [style=dashed]
        n00000007:port1 -> n00000010:port0 [style=dashed]
        n0000000a [label="{{<port0> 0} | msm_csid1\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000000a:port1 -> n0000000d:port0 [style=dashed]
        n0000000a:port1 -> n00000010:port0 [style=dashed]
        n0000000d [label="{{<port0> 0} | msm_ispif0\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000000d:port1 -> n00000013:port0 [style=dashed]
        n0000000d:port1 -> n0000001c:port0 [style=dashed]
        n0000000d:port1 -> n00000025:port0 [style=dashed]
        n0000000d:port1 -> n0000002e:port0 [style=dashed]
        n00000010 [label="{{<port0> 0} | msm_ispif1\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000010:port1 -> n00000013:port0 [style=dashed]
        n00000010:port1 -> n0000001c:port0 [style=dashed]
        n00000010:port1 -> n00000025:port0 [style=dashed]
        n00000010:port1 -> n0000002e:port0 [style=dashed]
        n00000013 [label="{{<port0> 0} | msm_vfe0_rdi0\n/dev/v4l-subdev6 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000013:port1 -> n00000016 [style=bold]
        n00000016 [label="msm_vfe0_video0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
        n0000001c [label="{{<port0> 0} | msm_vfe0_rdi1\n/dev/v4l-subdev7 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000001c:port1 -> n0000001f [style=bold]
        n0000001f [label="msm_vfe0_video1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
        n00000025 [label="{{<port0> 0} | msm_vfe0_rdi2\n/dev/v4l-subdev8 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000025:port1 -> n00000028 [style=bold]
        n00000028 [label="msm_vfe0_video2\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
        n0000002e [label="{{<port0> 0} | msm_vfe0_pix\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000002e:port1 -> n00000031 [style=bold]
        n00000031 [label="msm_vfe0_video3\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
        n00000057 [label="{{} | ov5645 1-0076\n/dev/v4l-subdev10 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000057:port0 -> n00000001:port0 [style=bold]
        n00000059 [label="{{} | ov5645 1-0074\n/dev/v4l-subdev11 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000059:port0 -> n00000004:port0 [style=bold]
}