요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# 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]
}
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에 없는 런타임 포맷이나 활성 라우팅 값은 덧붙이지 않습니다.
센서별 고정 입력 뒤에 세 단계의 선택 행렬이 있고 VFE 출력은 비디오 노드와 일대일로 연결됩니다.
원문 39-42줄에 있는 두 센서의 장치 경로와 고정 목적지입니다.
각 계층의 엔티티 수, 장치 번호와 다음 단계의 선택 범위를 정리합니다.
네 VFE 서브디바이스 출력은 네 비디오 장치에 굵은 링크로 일대일 연결됩니다.
43줄 원문에 있는 22개 링크를 단계별 수량으로 분해합니다.
원문 해시와 함께 감사 도구가 고정하는 노드 및 링크 수입니다.
각 계층과 링크 집합이 등장하는 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]
}
요약·해설
qcom_camss_graph.dot:1-43Qualcomm CAMSS의 OV5645 센서 2개에서 CSIPHY·CSID·ISPIF 선택 행렬과 VFE0 처리 경로를 지나 `/dev/video0-3`으로 출력되는 전체 미디어 토폴로지를 해설합니다.
두 센서는 동일한 내부 처리 선택지를 거쳐 네 캡처 장치 중 하나로 전달될 수 있습니다.