← Documents Documentation/devicetree/bindings/gpio/sodaville.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

CE4100/Sodaville GPIO Controller

PCI-probed CE4100 GPIO와 MUXCNTL, level interrupt 바인딩입니다.

Source pathDocumentation/devicetree/bindings/gpio/sodaville.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

sodaville.txt:1-48

GPIO/interrupt 겸용 controller와 consumer 예제를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 GPIO controller on CE4100 / Sodaville SoCs
2 ==========================================
3
4 The bindings for CE4100's GPIO controller match the generic description
5 which is covered by the gpio.txt file in this folder.
6
7 The only additional property is the intel,muxctl property which holds the
8 value which is written into the MUXCNTL register.
9
10 There is no compatible property for now because the driver is probed via
11 PCI id (vendor 0x8086 device 0x2e67).
12
13 The interrupt specifier consists of two cells encoded as follows:
14 - <1st cell>: The interrupt-number that identifies the interrupt source.
15 - <2nd cell>: The level-sense information, encoded as follows:
16 4 - active high level-sensitive
17 8 - active low level-sensitive
18
19 Example of the GPIO device and one user:
20
21 pcigpio: gpio@b,1 {
22 /* two cells for GPIO and interrupt */
23 #gpio-cells = <2>;
24 #interrupt-cells = <2>;
25 compatible = "pci8086,2e67.2",
26 "pci8086,2e67",
27 "pciclassff0000",
28 "pciclassff00";
29
30 reg = <0x15900 0x0 0x0 0x0 0x0>;
31 /* Interrupt line of the gpio device */
32 interrupts = <15 1>;
33 /* It is an interrupt and GPIO controller itself */
34 interrupt-controller;
35 gpio-controller;
36 intel,muxctl = <0>;
37 };
38
39 testuser@20 {
40 compatible = "example,testuser";
41 /* User the 11th GPIO line as an active high triggered
42 * level interrupt
43 */
44 interrupts = <11 8>;
45 interrupt-parent = <&pcigpio>;
46 /* Use this GPIO also with the gpio functions */
47 gpios = <&pcigpio 11 0>;
48 };
49

3. 한국어 전문 번역

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

CE4100/Sodaville GPIO 속성

1-18

CE4100 GPIO controller binding은 이 directory의 `gpio.txt`가 설명하는 generic GPIO 형식을 따릅니다. 추가 속성은 `intel,muxctl`뿐이며 `MUXCNTL` register에 쓸 값을 담습니다.

Driver는 PCI ID, 즉 vendor `0x8086`, device `0x2e67`로 probe되므로 현재 별도의 platform `compatible` property는 없습니다.

Interrupt specifier는 두 cell입니다. 첫 cell은 interrupt source를 식별하는 interrupt number이고, 두 번째 cell은 level sense 정보입니다. 값 4는 active-high level-sensitive, 8은 active-low level-sensitive입니다.

Sodaville interrupt specifier
Cell의미
0Interrupt numberInterrupt source ID
14Active-high level-sensitive
18Active-low level-sensitive

2-cell interrupt specifier의 의미와 level sense 값을 정리합니다.

PCI GPIO와 consumer 예제

19-48

예제 PCI GPIO device는 GPIO와 interrupt에 각각 두 cell을 사용하고, PCI compatible chain, bus address, device interrupt 15, GPIO/interrupt controller 역할과 `intel,muxctl = <0>`을 선언합니다.

`testuser@20`은 line 11을 interrupt와 GPIO function 모두에 사용합니다. 원문 comment는 active-high level interrupt라고 적지만 `interrupts = <11 8>`의 값 8은 앞선 정의상 active-low level-sensitive입니다. 원문 표기와 code는 그대로 보존합니다.

pcigpio: gpio@b,1 {
                /* two cells for GPIO and interrupt */
                #gpio-cells = <2>;
                #interrupt-cells = <2>;
                compatible = "pci8086,2e67.2",
                                   "pci8086,2e67",
                                   "pciclassff0000",
                                   "pciclassff00";

                reg = <0x15900 0x0 0x0 0x0 0x0>;
                /* Interrupt line of the gpio device */
                interrupts = <15 1>;
                /* It is an interrupt and GPIO controller itself */
                interrupt-controller;
                gpio-controller;
                intel,muxctl = <0>;
};

testuser@20 {
                compatible = "example,testuser";
                /* User the 11th GPIO line as an active high triggered
                 * level interrupt
                 */
                interrupts = <11 8>;
                interrupt-parent = <&pcigpio>;
                /* Use this GPIO also with the gpio functions */
                gpios = <&pcigpio 11 0>;
};