← Documents Documentation/devicetree/bindings/misc/ifm-csi.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

IFM Camera Sensor Interface

MPC5200 LocalPlus IFM camera interface의 bus·GPIO·clock 바인딩입니다.

Source pathDocumentation/devicetree/bindings/misc/ifm-csi.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

ifm-csi.txt:1-41

Chip-select 3, frame IRQ, 세 control GPIO와 parent ranges를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 IFM camera sensor interface on mpc5200 LocalPlus bus
2
3 Required properties:
4 - compatible: "ifm,o2d-csi"
5 - reg: specifies sensor chip select number and associated address range
6 - interrupts: external interrupt line number and interrupt sense mode
7 of the interrupt line signaling frame valid events
8 - gpios: three gpio-specifiers for "capture", "reset" and "master enable"
9 GPIOs (strictly in this order).
10 - ifm,csi-clk-handle: the phandle to a node in the DT describing the sensor
11 clock generator. This node is usually a general purpose timer controller.
12 - ifm,csi-addr-bus-width: address bus width (valid values are 16, 24, 25)
13 - ifm,csi-data-bus-width: data bus width (valid values are 8 and 16)
14 - ifm,csi-wait-cycles: sensor bus wait cycles
15
16 Optional properties:
17 - ifm,csi-byte-swap: if this property is present, the byte swapping on
18 the bus will be enabled.
19
20 Example:
21
22 csi@3,0 {
23 compatible = "ifm,o2d-csi";
24 reg = <3 0 0x00100000>; /* CS 3, 1 MiB range */
25 interrupts = <1 1 2>; /* IRQ1, edge falling */
26
27 ifm,csi-clk-handle = <&timer7>;
28 gpios = <&gpio_simple 23 0 /* image_capture */
29 &gpio_simple 26 0 /* image_reset */
30 &gpio_simple 29 0>; /* image_master_en */
31
32 ifm,csi-addr-bus-width = <24>;
33 ifm,csi-data-bus-width = <8>;
34 ifm,csi-wait-cycles = <0>;
35 };
36
37 The base address of the used chip select is specified in the
38 ranges property of the parent localbus node, for example:
39
40 ranges = <0 0 0xff000000 0x01000000
41 3 0 0xe3000000 0x00100000>;
42

3. 한국어 전문 번역

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

IFM camera sensor interface

1-15

이 장치는 MPC5200 LocalPlus bus의 IFM camera sensor interface입니다. `compatible`은 `ifm,o2d-csi`, `reg`는 sensor chip-select 번호와 해당 주소 범위입니다.

`interrupts`는 frame-valid event를 알리는 external interrupt line 번호와 sense mode입니다. `gpios`는 반드시 `capture`, `reset`, `master enable` 순서의 GPIO specifier 세 개입니다.

`ifm,csi-clk-handle`은 sensor clock generator node의 phandle이며 보통 general-purpose timer controller입니다. `ifm,csi-addr-bus-width`는 16·24·25, `ifm,csi-data-bus-width`는 8·16만 유효하고 `ifm,csi-wait-cycles`는 sensor bus wait cycle 수입니다.

IFM CSI signal path
LocalPlus chip selectIFM CSI
Timer clock generatorIFM CSI clock
Capture / Reset / Master Enable GPIOIFM CSI controls
Frame-valid interruptHost CPU

LocalPlus chip-select, timer clock, 세 GPIO와 frame interrupt가 camera interface에 연결됩니다.

IFM CSI bus width
항목허용 값
Address bus width16, 24, 25
Data bus width8, 16

허용되는 address와 data bus 폭입니다.

Byte swap 선택

16-19

선택 `ifm,csi-byte-swap`이 있으면 bus의 byte swapping을 활성화합니다.

Chip-select 3 예제와 parent ranges

20-41

예제는 chip-select 3의 1MiB 범위, falling-edge IRQ1, timer7 clock, GPIO 23·26·29를 각각 capture·reset·master enable로 사용합니다. Address bus는 24-bit, data bus는 8-bit, wait cycle은 0입니다.

csi@3,0 {
        compatible = "ifm,o2d-csi";
        reg = <3 0 0x00100000>;                /* CS 3, 1 MiB range */
        interrupts = <1 1 2>;                /* IRQ1, edge falling */

        ifm,csi-clk-handle = <&timer7>;
        gpios = <&gpio_simple 23 0        /* image_capture */
                 &gpio_simple 26 0        /* image_reset */
                 &gpio_simple 29 0>;        /* image_master_en */

        ifm,csi-addr-bus-width = <24>;
        ifm,csi-data-bus-width = <8>;
        ifm,csi-wait-cycles = <0>;
};

사용하는 chip-select의 base address는 parent localbus `ranges`에 둡니다. 예제는 chip-select 0을 `0xff000000`의 16MiB, chip-select 3을 `0xe3000000`의 1MiB에 매핑합니다.

ranges = <0 0 0xff000000 0x01000000
          3 0 0xe3000000 0x00100000>;