← Documents Documentation/devicetree/bindings/media/atmel-isi.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Atmel Image Sensor Interface

Atmel ISI와 parallel camera sensor의 endpoint graph 바인딩입니다.

Source pathDocumentation/devicetree/bindings/media/atmel-isi.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

atmel-isi.txt:1-66

8/10-bit parallel bus와 sync·pixel clock polarity, 양방향 endpoint를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Atmel Image Sensor Interface (ISI)
2 ----------------------------------
3
4 Required properties for ISI:
5 - compatible: must be "atmel,at91sam9g45-isi" or "microchip,sam9x60-isi".
6 - reg: physical base address and length of the registers set for the device.
7 - interrupts: should contain IRQ line for the ISI.
8 - clocks: list of clock specifiers, corresponding to entries in the clock-names
9 property; please refer to clock-bindings.txt.
10 - clock-names: required elements: "isi_clk".
11 - pinctrl-names, pinctrl-0: please refer to pinctrl-bindings.txt.
12
13 ISI supports a single port node with parallel bus. It shall contain one
14 'port' child node with child 'endpoint' node. Please refer to the bindings
15 defined in Documentation/devicetree/bindings/media/video-interfaces.txt.
16
17 Endpoint node properties
18 ------------------------
19
20 - bus-width: <8> or <10> (mandatory)
21 - hsync-active (default: active high)
22 - vsync-active (default: active high)
23 - pclk-sample (default: sample on falling edge)
24 - remote-endpoint: A phandle to the bus receiver's endpoint node (mandatory).
25
26 Example:
27
28 isi: isi@f0034000 {
29 compatible = "atmel,at91sam9g45-isi";
30 reg = <0xf0034000 0x4000>;
31 interrupts = <37 IRQ_TYPE_LEVEL_HIGH 5>;
32 pinctrl-names = "default";
33 pinctrl-0 = <&pinctrl_isi_data_0_7>;
34 clocks = <&isi_clk>;
35 clock-names = "isi_clk";
36 port {
37 isi_0: endpoint {
38 remote-endpoint = <&ov2640_0>;
39 bus-width = <8>;
40 vsync-active = <1>;
41 hsync-active = <1>;
42 };
43 };
44 };
45
46 i2c1: i2c@f0018000 {
47 ov2640: camera@30 {
48 compatible = "ovti,ov2640";
49 reg = <0x30>;
50 pinctrl-names = "default";
51 pinctrl-0 = <&pinctrl_pck0_as_isi_mck &pinctrl_sensor_power &pinctrl_sensor_reset>;
52 resetb-gpios = <&pioE 11 GPIO_ACTIVE_LOW>;
53 pwdn-gpios = <&pioE 13 GPIO_ACTIVE_HIGH>;
54 clocks = <&pck0>;
55 clock-names = "xvclk";
56 assigned-clocks = <&pck0>;
57 assigned-clock-rates = <25000000>;
58
59 port {
60 ov2640_0: endpoint {
61 remote-endpoint = <&isi_0>;
62 bus-width = <8>;
63 };
64 };
65 };
66 };
67

3. 한국어 전문 번역

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

Atmel ISI controller 속성

1-16

Atmel Image Sensor Interface(ISI)의 필수 `compatible`은 `atmel,at91sam9g45-isi` 또는 `microchip,sam9x60-isi`입니다. `reg`는 register set의 물리 base address와 길이, `interrupts`는 ISI IRQ line입니다.

`clocks`는 `clock-names`와 대응하는 clock specifier 목록이며 `clock-bindings.txt`를 따릅니다. 필수 clock 이름은 `isi_clk`입니다. `pinctrl-names`와 `pinctrl-0`은 `pinctrl-bindings.txt`를 따릅니다.

ISI는 parallel bus를 가진 단일 port만 지원합니다. 장치 노드는 `port` child 하나와 그 안의 `endpoint` child 하나를 포함해야 하며 `Documentation/devicetree/bindings/media/video-interfaces.txt`의 video interface binding을 따릅니다.

ISI와 camera sensor 연결
Camera sensorov2640_0 endpoint
8-bit parallel busVSYNC / HSYNC / PCLK
Atmel ISIisi_0 endpoint
ISI clock + IRQCapture controller

두 endpoint가 `remote-endpoint`로 서로를 가리키고 같은 parallel bus width를 선언합니다.

Parallel endpoint 속성

17-25

Endpoint의 필수 `bus-width`는 8 또는 10입니다. `hsync-active`와 `vsync-active`의 기본값은 active high이고, `pclk-sample`의 기본값은 falling edge sample입니다. 필수 `remote-endpoint`는 bus 반대편 receiver endpoint의 phandle입니다.

ISI와 OV2640 양방향 endpoint 예제

26-66

예제 ISI는 `0xf0034000` register, IRQ 37, 8-bit pinctrl, `isi_clk`를 사용합니다. `isi_0` endpoint는 `ov2640_0`을 가리키며 8-bit bus와 active-high VSYNC·HSYNC를 선언합니다.

I2C 주소 `0x30`의 OV2640 sensor는 active-low reset, active-high power-down GPIO, 25MHz `xvclk`를 사용합니다. Sensor endpoint는 다시 `isi_0`을 가리키고 같은 8-bit bus width를 선언해 graph 연결을 완성합니다.

isi: isi@f0034000 {
        compatible = "atmel,at91sam9g45-isi";
        reg = <0xf0034000 0x4000>;
        interrupts = <37 IRQ_TYPE_LEVEL_HIGH 5>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_isi_data_0_7>;
        clocks = <&isi_clk>;
        clock-names = "isi_clk";
        port {
                isi_0: endpoint {
                        remote-endpoint = <&ov2640_0>;
                        bus-width = <8>;
                        vsync-active = <1>;
                        hsync-active = <1>;
                };
        };
};

i2c1: i2c@f0018000 {
        ov2640: camera@30 {
                compatible = "ovti,ov2640";
                reg = <0x30>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_pck0_as_isi_mck &pinctrl_sensor_power &pinctrl_sensor_reset>;
                resetb-gpios = <&pioE 11 GPIO_ACTIVE_LOW>;
                pwdn-gpios = <&pioE 13 GPIO_ACTIVE_HIGH>;
                clocks = <&pck0>;
                clock-names = "xvclk";
                assigned-clocks = <&pck0>;
                assigned-clock-rates = <25000000>;

                port {
                        ov2640_0: endpoint {
                                remote-endpoint = <&isi_0>;
                                bus-width = <8>;
                        };
                };
        };
};