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

Linux 6.18.37 · Admin guide

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

Qualcomm 8x96 CAMSS의 OV5645 센서 3개, CSIPHY 3개, CSID 4개, ISPIF 4개, VFE 처리 경로 8개와 비디오 캡처 노드 8개 사이의 전체 미디어 링크를 단계별로 해설합니다.

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

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

1. 요약·해설

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

요약·해설

qcom_camss_8x96_graph.dot:1-106

Qualcomm 8x96 CAMSS의 OV5645 센서 3개, CSIPHY 3개, CSID 4개, ISPIF 4개, VFE 처리 경로 8개와 비디오 캡처 노드 8개 사이의 전체 미디어 링크를 단계별로 해설합니다.

8x96 CAMSS 경로 요약
OV5645CSIPHYCSIDISPIFVFE RDI/PIX/dev/videoN

센서 입력에서 최종 비디오 캡처 장치까지의 다섯 단계입니다.

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 -> n0000000a:port0 [style=dashed]
7 n00000001:port1 -> n0000000d:port0 [style=dashed]
8 n00000001:port1 -> n00000010:port0 [style=dashed]
9 n00000001:port1 -> n00000013:port0 [style=dashed]
10 n00000004 [label="{{<port0> 0} | msm_csiphy1\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
11 n00000004:port1 -> n0000000a:port0 [style=dashed]
12 n00000004:port1 -> n0000000d:port0 [style=dashed]
13 n00000004:port1 -> n00000010:port0 [style=dashed]
14 n00000004:port1 -> n00000013:port0 [style=dashed]
15 n00000007 [label="{{<port0> 0} | msm_csiphy2\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
16 n00000007:port1 -> n0000000a:port0 [style=dashed]
17 n00000007:port1 -> n0000000d:port0 [style=dashed]
18 n00000007:port1 -> n00000010:port0 [style=dashed]
19 n00000007:port1 -> n00000013:port0 [style=dashed]
20 n0000000a [label="{{<port0> 0} | msm_csid0\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
21 n0000000a:port1 -> n00000016:port0 [style=dashed]
22 n0000000a:port1 -> n00000019:port0 [style=dashed]
23 n0000000a:port1 -> n0000001c:port0 [style=dashed]
24 n0000000a:port1 -> n0000001f:port0 [style=dashed]
25 n0000000d [label="{{<port0> 0} | msm_csid1\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
26 n0000000d:port1 -> n00000016:port0 [style=dashed]
27 n0000000d:port1 -> n00000019:port0 [style=dashed]
28 n0000000d:port1 -> n0000001c:port0 [style=dashed]
29 n0000000d:port1 -> n0000001f:port0 [style=dashed]
30 n00000010 [label="{{<port0> 0} | msm_csid2\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
31 n00000010:port1 -> n00000016:port0 [style=dashed]
32 n00000010:port1 -> n00000019:port0 [style=dashed]
33 n00000010:port1 -> n0000001c:port0 [style=dashed]
34 n00000010:port1 -> n0000001f:port0 [style=dashed]
35 n00000013 [label="{{<port0> 0} | msm_csid3\n/dev/v4l-subdev6 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
36 n00000013:port1 -> n00000016:port0 [style=dashed]
37 n00000013:port1 -> n00000019:port0 [style=dashed]
38 n00000013:port1 -> n0000001c:port0 [style=dashed]
39 n00000013:port1 -> n0000001f:port0 [style=dashed]
40 n00000016 [label="{{<port0> 0} | msm_ispif0\n/dev/v4l-subdev7 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
41 n00000016:port1 -> n00000022:port0 [style=dashed]
42 n00000016:port1 -> n0000002b:port0 [style=dashed]
43 n00000016:port1 -> n00000034:port0 [style=dashed]
44 n00000016:port1 -> n0000003d:port0 [style=dashed]
45 n00000016:port1 -> n00000046:port0 [style=dashed]
46 n00000016:port1 -> n0000004f:port0 [style=dashed]
47 n00000016:port1 -> n00000058:port0 [style=dashed]
48 n00000016:port1 -> n00000061:port0 [style=dashed]
49 n00000019 [label="{{<port0> 0} | msm_ispif1\n/dev/v4l-subdev8 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
50 n00000019:port1 -> n00000022:port0 [style=dashed]
51 n00000019:port1 -> n0000002b:port0 [style=dashed]
52 n00000019:port1 -> n00000034:port0 [style=dashed]
53 n00000019:port1 -> n0000003d:port0 [style=dashed]
54 n00000019:port1 -> n00000046:port0 [style=dashed]
55 n00000019:port1 -> n0000004f:port0 [style=dashed]
56 n00000019:port1 -> n00000058:port0 [style=dashed]
57 n00000019:port1 -> n00000061:port0 [style=dashed]
58 n0000001c [label="{{<port0> 0} | msm_ispif2\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
59 n0000001c:port1 -> n00000022:port0 [style=dashed]
60 n0000001c:port1 -> n0000002b:port0 [style=dashed]
61 n0000001c:port1 -> n00000034:port0 [style=dashed]
62 n0000001c:port1 -> n0000003d:port0 [style=dashed]
63 n0000001c:port1 -> n00000046:port0 [style=dashed]
64 n0000001c:port1 -> n0000004f:port0 [style=dashed]
65 n0000001c:port1 -> n00000058:port0 [style=dashed]
66 n0000001c:port1 -> n00000061:port0 [style=dashed]
67 n0000001f [label="{{<port0> 0} | msm_ispif3\n/dev/v4l-subdev10 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
68 n0000001f:port1 -> n00000022:port0 [style=dashed]
69 n0000001f:port1 -> n0000002b:port0 [style=dashed]
70 n0000001f:port1 -> n00000034:port0 [style=dashed]
71 n0000001f:port1 -> n0000003d:port0 [style=dashed]
72 n0000001f:port1 -> n00000046:port0 [style=dashed]
73 n0000001f:port1 -> n0000004f:port0 [style=dashed]
74 n0000001f:port1 -> n00000058:port0 [style=dashed]
75 n0000001f:port1 -> n00000061:port0 [style=dashed]
76 n00000022 [label="{{<port0> 0} | msm_vfe0_rdi0\n/dev/v4l-subdev11 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
77 n00000022:port1 -> n00000025 [style=bold]
78 n00000025 [label="msm_vfe0_video0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
79 n0000002b [label="{{<port0> 0} | msm_vfe0_rdi1\n/dev/v4l-subdev12 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
80 n0000002b:port1 -> n0000002e [style=bold]
81 n0000002e [label="msm_vfe0_video1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
82 n00000034 [label="{{<port0> 0} | msm_vfe0_rdi2\n/dev/v4l-subdev13 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
83 n00000034:port1 -> n00000037 [style=bold]
84 n00000037 [label="msm_vfe0_video2\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
85 n0000003d [label="{{<port0> 0} | msm_vfe0_pix\n/dev/v4l-subdev14 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
86 n0000003d:port1 -> n00000040 [style=bold]
87 n00000040 [label="msm_vfe0_video3\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
88 n00000046 [label="{{<port0> 0} | msm_vfe1_rdi0\n/dev/v4l-subdev15 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
89 n00000046:port1 -> n00000049 [style=bold]
90 n00000049 [label="msm_vfe1_video0\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
91 n0000004f [label="{{<port0> 0} | msm_vfe1_rdi1\n/dev/v4l-subdev16 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
92 n0000004f:port1 -> n00000052 [style=bold]
93 n00000052 [label="msm_vfe1_video1\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
94 n00000058 [label="{{<port0> 0} | msm_vfe1_rdi2\n/dev/v4l-subdev17 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
95 n00000058:port1 -> n0000005b [style=bold]
96 n0000005b [label="msm_vfe1_video2\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
97 n00000061 [label="{{<port0> 0} | msm_vfe1_pix\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
98 n00000061:port1 -> n00000064 [style=bold]
99 n00000064 [label="msm_vfe1_video3\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
100 n000000e2 [label="{{} | ov5645 3-0039\n/dev/v4l-subdev19 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
101 n000000e2:port0 -> n00000004:port0 [style=bold]
102 n000000e4 [label="{{} | ov5645 3-003a\n/dev/v4l-subdev20 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
103 n000000e4:port0 -> n00000007:port0 [style=bold]
104 n000000e6 [label="{{} | ov5645 3-003b\n/dev/v4l-subdev21 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
105 n000000e6:port0 -> n00000001:port0 [style=bold]
106 }
107

3. 한국어 전문 번역

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

OV5645 센서에서 VFE 비디오 노드까지의 전체 연결 구조

1-106

이 Graphviz DOT 원문은 Qualcomm 8x96 Camera Subsystem(CAMSS)의 V4L2 미디어 토폴로지를 위에서 아래로 배치합니다. 세 개의 `ov5645` 센서가 세 `msm_csiphy` 입력에 연결되고, 내부에서는 3개 CSIPHY, 4개 CSID, 4개 ISPIF, 8개 VFE 처리 엔티티를 선택적으로 조합한 뒤 `/dev/video0`부터 `/dev/video7`까지의 캡처 노드로 출력합니다.

초록색 `Mrecord` 노드는 패드가 있는 V4L2 서브디바이스입니다. 왼쪽 또는 위쪽의 `port0`은 싱크 입력 패드이고 오른쪽 또는 아래쪽의 `port1`은 소스 출력 패드입니다. 노란색 상자는 최종 비디오 캡처 장치입니다. `rankdir=TB`는 그래프 흐름을 위에서 아래 방향으로 배치하라는 Graphviz 지시입니다.

원문의 `style=dashed` 링크 60개는 토폴로지가 제공하는 내부 선택 후보를 나타내고, `style=bold` 링크 11개는 센서와 CSIPHY 사이 3개 및 각 VFE 출력과 비디오 노드 사이 8개의 굵은 연결을 나타냅니다. 이 문서는 선 모양을 그대로 보존하여 설명하며, 특정 실행 시점의 스트림 형식이나 라우팅 설정을 DOT 파일만으로 추가 추정하지 않습니다.

CAMSS 처리 파이프라인
OV5645 센서 3개CSIPHY 0-2CSID 0-3ISPIF 0-3VFE0 RDI0-2 / PIX/dev/video0-3
OV5645 센서 3개CSIPHY 0-2CSID 0-3ISPIF 0-3VFE1 RDI0-2 / PIX/dev/video4-7

세 센서 중 하나의 입력이 내부 교차 연결 단계를 지나 두 VFE 블록의 RDI 또는 PIX 출력으로 전달되는 계층입니다.

OV5645 센서의 고정 입력 연결
센서장치 경로출력굵은 링크 목적지
ov5645 3-0039/dev/v4l-subdev19port0msm_csiphy1 /dev/v4l-subdev1 port0
ov5645 3-003a/dev/v4l-subdev20port0msm_csiphy2 /dev/v4l-subdev2 port0
ov5645 3-003b/dev/v4l-subdev21port0msm_csiphy0 /dev/v4l-subdev0 port0

원문 100-105줄의 세 굵은 링크를 센서 주소, 장치 경로, 패드와 CSIPHY 목적지별로 정리합니다.

CSIPHY 수신 엔티티 3개
엔티티장치 경로입력출력 후보
msm_csiphy0/dev/v4l-subdev0입력 port0출력 port1 -> msm_csid0-3의 port0
msm_csiphy1/dev/v4l-subdev1입력 port0출력 port1 -> msm_csid0-3의 port0
msm_csiphy2/dev/v4l-subdev2입력 port0출력 port1 -> msm_csid0-3의 port0

각 CSIPHY의 출력 port1은 네 CSID의 입력 port0 모두에 점선 후보 링크를 가집니다. 따라서 이 단계에는 3 x 4 = 12개 링크가 있습니다.

CSID 디코더 엔티티 4개
엔티티장치 경로입력출력 후보
msm_csid0/dev/v4l-subdev3입력 port0출력 port1 -> msm_ispif0-3의 port0
msm_csid1/dev/v4l-subdev4입력 port0출력 port1 -> msm_ispif0-3의 port0
msm_csid2/dev/v4l-subdev5입력 port0출력 port1 -> msm_ispif0-3의 port0
msm_csid3/dev/v4l-subdev6입력 port0출력 port1 -> msm_ispif0-3의 port0

각 CSID의 출력 port1은 네 ISPIF 입력 모두에 연결 후보를 제공합니다. 이 단계에는 4 x 4 = 16개 점선 링크가 있습니다.

ISPIF 인터페이스 엔티티 4개
엔티티장치 경로입력출력 후보
msm_ispif0/dev/v4l-subdev7입력 port0출력 port1 -> VFE0/VFE1의 RDI0-2와 PIX
msm_ispif1/dev/v4l-subdev8입력 port0출력 port1 -> VFE0/VFE1의 RDI0-2와 PIX
msm_ispif2/dev/v4l-subdev9입력 port0출력 port1 -> VFE0/VFE1의 RDI0-2와 PIX
msm_ispif3/dev/v4l-subdev10입력 port0출력 port1 -> VFE0/VFE1의 RDI0-2와 PIX

각 ISPIF 출력은 VFE0과 VFE1의 RDI0, RDI1, RDI2, PIX 입력 전체에 도달할 수 있습니다. 이 단계에는 4 x 8 = 32개 점선 링크가 있습니다.

VFE 처리 엔티티와 비디오 노드의 일대일 대응
VFE 엔티티VFE 장치비디오 엔티티캡처 장치
msm_vfe0_rdi0/dev/v4l-subdev11msm_vfe0_video0/dev/video0
msm_vfe0_rdi1/dev/v4l-subdev12msm_vfe0_video1/dev/video1
msm_vfe0_rdi2/dev/v4l-subdev13msm_vfe0_video2/dev/video2
msm_vfe0_pix/dev/v4l-subdev14msm_vfe0_video3/dev/video3
msm_vfe1_rdi0/dev/v4l-subdev15msm_vfe1_video0/dev/video4
msm_vfe1_rdi1/dev/v4l-subdev16msm_vfe1_video1/dev/video5
msm_vfe1_rdi2/dev/v4l-subdev17msm_vfe1_video2/dev/video6
msm_vfe1_pix/dev/v4l-subdev18msm_vfe1_video3/dev/video7

각 VFE 서브디바이스의 port1은 하나의 노란색 비디오 캡처 노드와 굵은 링크로 연결됩니다.

노드와 링크 구조 수량
구성수량세부 구성
전체 노드30초록색 서브디바이스 22 + 노란색 비디오 노드 8
초록색 Mrecord22센서 3 + CSIPHY 3 + CSID 4 + ISPIF 4 + VFE 8
노란색 box8`/dev/video0`-`/dev/video7`
전체 링크71점선 60 + 굵은 선 11
점선 링크60CSIPHY-CSID 12 + CSID-ISPIF 16 + ISPIF-VFE 32
굵은 링크11센서-CSIPHY 3 + VFE-비디오 8

106줄 DOT 원문에서 검출하고 감사 도구가 고정하는 구조 수량입니다.

원문 줄 좌표
원문 줄구성한국어 해설
1-4SPDX, `digraph board`, `rankdir=TB`GPL-2.0 식별자와 하향식 그래프 선언입니다.
5-19`msm_csiphy0-2`와 12개 링크세 물리 수신기에서 네 CSID로 가는 전체 후보 행렬입니다.
20-39`msm_csid0-3`과 16개 링크네 CSID에서 네 ISPIF로 가는 전체 후보 행렬입니다.
40-75`msm_ispif0-3`과 32개 링크네 ISPIF에서 여덟 VFE 입력으로 가는 전체 후보 행렬입니다.
76-99VFE 8개, 비디오 노드 8개, 굵은 링크 8개VFE0은 `/dev/video0-3`, VFE1은 `/dev/video4-7`에 대응합니다.
100-105OV5645 센서 3개와 굵은 링크 3개센서 주소 0039, 003a, 003b가 각각 CSIPHY1, 2, 0에 연결됩니다.
106닫는 중괄호`board` 방향 그래프 정의를 끝냅니다.

노드 계층과 링크 행렬이 나타나는 원문 범위를 구분합니다.

아래 코드는 Linux v6.18.37 원문 1-106줄 전체입니다. 탭은 표시 안정성을 위해 여덟 칸으로 정규화했지만 노드 ID, 엔티티명, `/dev` 경로, 패드 번호, 링크 방향, `dashed`와 `bold` 스타일은 바꾸지 않았습니다.

# 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 -> n0000000a:port0 [style=dashed]
        n00000001:port1 -> n0000000d:port0 [style=dashed]
        n00000001:port1 -> n00000010:port0 [style=dashed]
        n00000001:port1 -> n00000013:port0 [style=dashed]
        n00000004 [label="{{<port0> 0} | msm_csiphy1\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000004:port1 -> n0000000a:port0 [style=dashed]
        n00000004:port1 -> n0000000d:port0 [style=dashed]
        n00000004:port1 -> n00000010:port0 [style=dashed]
        n00000004:port1 -> n00000013:port0 [style=dashed]
        n00000007 [label="{{<port0> 0} | msm_csiphy2\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000007:port1 -> n0000000a:port0 [style=dashed]
        n00000007:port1 -> n0000000d:port0 [style=dashed]
        n00000007:port1 -> n00000010:port0 [style=dashed]
        n00000007:port1 -> n00000013:port0 [style=dashed]
        n0000000a [label="{{<port0> 0} | msm_csid0\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000000a:port1 -> n00000016:port0 [style=dashed]
        n0000000a:port1 -> n00000019:port0 [style=dashed]
        n0000000a:port1 -> n0000001c:port0 [style=dashed]
        n0000000a:port1 -> n0000001f:port0 [style=dashed]
        n0000000d [label="{{<port0> 0} | msm_csid1\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000000d:port1 -> n00000016:port0 [style=dashed]
        n0000000d:port1 -> n00000019:port0 [style=dashed]
        n0000000d:port1 -> n0000001c:port0 [style=dashed]
        n0000000d:port1 -> n0000001f:port0 [style=dashed]
        n00000010 [label="{{<port0> 0} | msm_csid2\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000010:port1 -> n00000016:port0 [style=dashed]
        n00000010:port1 -> n00000019:port0 [style=dashed]
        n00000010:port1 -> n0000001c:port0 [style=dashed]
        n00000010:port1 -> n0000001f:port0 [style=dashed]
        n00000013 [label="{{<port0> 0} | msm_csid3\n/dev/v4l-subdev6 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000013:port1 -> n00000016:port0 [style=dashed]
        n00000013:port1 -> n00000019:port0 [style=dashed]
        n00000013:port1 -> n0000001c:port0 [style=dashed]
        n00000013:port1 -> n0000001f:port0 [style=dashed]
        n00000016 [label="{{<port0> 0} | msm_ispif0\n/dev/v4l-subdev7 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000016:port1 -> n00000022:port0 [style=dashed]
        n00000016:port1 -> n0000002b:port0 [style=dashed]
        n00000016:port1 -> n00000034:port0 [style=dashed]
        n00000016:port1 -> n0000003d:port0 [style=dashed]
        n00000016:port1 -> n00000046:port0 [style=dashed]
        n00000016:port1 -> n0000004f:port0 [style=dashed]
        n00000016:port1 -> n00000058:port0 [style=dashed]
        n00000016:port1 -> n00000061:port0 [style=dashed]
        n00000019 [label="{{<port0> 0} | msm_ispif1\n/dev/v4l-subdev8 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000019:port1 -> n00000022:port0 [style=dashed]
        n00000019:port1 -> n0000002b:port0 [style=dashed]
        n00000019:port1 -> n00000034:port0 [style=dashed]
        n00000019:port1 -> n0000003d:port0 [style=dashed]
        n00000019:port1 -> n00000046:port0 [style=dashed]
        n00000019:port1 -> n0000004f:port0 [style=dashed]
        n00000019:port1 -> n00000058:port0 [style=dashed]
        n00000019:port1 -> n00000061:port0 [style=dashed]
        n0000001c [label="{{<port0> 0} | msm_ispif2\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000001c:port1 -> n00000022:port0 [style=dashed]
        n0000001c:port1 -> n0000002b:port0 [style=dashed]
        n0000001c:port1 -> n00000034:port0 [style=dashed]
        n0000001c:port1 -> n0000003d:port0 [style=dashed]
        n0000001c:port1 -> n00000046:port0 [style=dashed]
        n0000001c:port1 -> n0000004f:port0 [style=dashed]
        n0000001c:port1 -> n00000058:port0 [style=dashed]
        n0000001c:port1 -> n00000061:port0 [style=dashed]
        n0000001f [label="{{<port0> 0} | msm_ispif3\n/dev/v4l-subdev10 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000001f:port1 -> n00000022:port0 [style=dashed]
        n0000001f:port1 -> n0000002b:port0 [style=dashed]
        n0000001f:port1 -> n00000034:port0 [style=dashed]
        n0000001f:port1 -> n0000003d:port0 [style=dashed]
        n0000001f:port1 -> n00000046:port0 [style=dashed]
        n0000001f:port1 -> n0000004f:port0 [style=dashed]
        n0000001f:port1 -> n00000058:port0 [style=dashed]
        n0000001f:port1 -> n00000061:port0 [style=dashed]
        n00000022 [label="{{<port0> 0} | msm_vfe0_rdi0\n/dev/v4l-subdev11 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000022:port1 -> n00000025 [style=bold]
        n00000025 [label="msm_vfe0_video0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
        n0000002b [label="{{<port0> 0} | msm_vfe0_rdi1\n/dev/v4l-subdev12 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000002b:port1 -> n0000002e [style=bold]
        n0000002e [label="msm_vfe0_video1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
        n00000034 [label="{{<port0> 0} | msm_vfe0_rdi2\n/dev/v4l-subdev13 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000034:port1 -> n00000037 [style=bold]
        n00000037 [label="msm_vfe0_video2\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
        n0000003d [label="{{<port0> 0} | msm_vfe0_pix\n/dev/v4l-subdev14 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000003d:port1 -> n00000040 [style=bold]
        n00000040 [label="msm_vfe0_video3\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
        n00000046 [label="{{<port0> 0} | msm_vfe1_rdi0\n/dev/v4l-subdev15 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000046:port1 -> n00000049 [style=bold]
        n00000049 [label="msm_vfe1_video0\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
        n0000004f [label="{{<port0> 0} | msm_vfe1_rdi1\n/dev/v4l-subdev16 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000004f:port1 -> n00000052 [style=bold]
        n00000052 [label="msm_vfe1_video1\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
        n00000058 [label="{{<port0> 0} | msm_vfe1_rdi2\n/dev/v4l-subdev17 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000058:port1 -> n0000005b [style=bold]
        n0000005b [label="msm_vfe1_video2\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
        n00000061 [label="{{<port0> 0} | msm_vfe1_pix\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000061:port1 -> n00000064 [style=bold]
        n00000064 [label="msm_vfe1_video3\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
        n000000e2 [label="{{} | ov5645 3-0039\n/dev/v4l-subdev19 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
        n000000e2:port0 -> n00000004:port0 [style=bold]
        n000000e4 [label="{{} | ov5645 3-003a\n/dev/v4l-subdev20 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
        n000000e4:port0 -> n00000007:port0 [style=bold]
        n000000e6 [label="{{} | ov5645 3-003b\n/dev/v4l-subdev21 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
        n000000e6:port0 -> n00000001:port0 [style=bold]
}