← Documents Documentation/devicetree/bindings/mfd/tc3589x.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Toshiba TC3589x Multi-Purpose Expander

TC3589x 계열의 GPIO·keypad·interrupt controller 바인딩입니다.

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

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

1. 요약·해설

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

요약과 해설

tc3589x.txt:1-107

모델별 GPIO 수, 두 cell GPIO IRQ, 96-key matrix와 TC35893 예제를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 * Toshiba TC3589x multi-purpose expander
2
3 The Toshiba TC3589x series are I2C-based MFD devices which may expose the
4 following built-in devices: gpio, keypad, rotator (vibrator), PWM (for
5 e.g. LEDs or vibrators) The included models are:
6
7 - TC35890
8 - TC35892
9 - TC35893
10 - TC35894
11 - TC35895
12 - TC35896
13
14 Required properties:
15 - compatible : must be "toshiba,tc35890", "toshiba,tc35892", "toshiba,tc35893",
16 "toshiba,tc35894", "toshiba,tc35895" or "toshiba,tc35896"
17 - reg : I2C address of the device
18 - interrupts : the interrupt on the parent the controller is connected to
19 - interrupt-controller : marks the device node as an interrupt controller
20 - #interrupt-cells : should be <1>, the first cell is the IRQ offset on this
21 TC3589x interrupt controller.
22
23 Optional nodes:
24
25 - GPIO
26 This GPIO module inside the TC3589x has 24 (TC35890, TC35892) or 20
27 (other models) GPIO lines.
28 - compatible : must be "toshiba,tc3589x-gpio"
29 - interrupts : interrupt on the parent, which must be the tc3589x MFD device
30 - interrupt-controller : marks the device node as an interrupt controller
31 - #interrupt-cells : should be <2>, the first cell is the IRQ offset on this
32 TC3589x GPIO interrupt controller, the second cell is the interrupt flags
33 in accordance with <dt-bindings/interrupt-controller/irq.h>. The following
34 flags are valid:
35 - IRQ_TYPE_LEVEL_LOW
36 - IRQ_TYPE_LEVEL_HIGH
37 - IRQ_TYPE_EDGE_RISING
38 - IRQ_TYPE_EDGE_FALLING
39 - IRQ_TYPE_EDGE_BOTH
40 - gpio-controller : marks the device node as a GPIO controller
41 - #gpio-cells : should be <2>, the first cell is the GPIO offset on this
42 GPIO controller, the second cell is the flags.
43
44 - Keypad
45 This keypad is the same on all variants, supporting up to 96 different
46 keys. The linux-specific properties are modeled on those already existing
47 in other input drivers.
48 - compatible : must be "toshiba,tc3589x-keypad"
49 - debounce-delay-ms : debounce interval in milliseconds
50 - keypad,num-rows : number of rows in the matrix, see
51 bindings/input/matrix-keymap.txt
52 - keypad,num-columns : number of columns in the matrix, see
53 bindings/input/matrix-keymap.txt
54 - linux,keymap: the definition can be found in
55 bindings/input/matrix-keymap.txt
56 - linux,no-autorepeat: do no enable autorepeat feature.
57 - wakeup-source: use any event on keypad as wakeup event.
58 (Legacy property supported: "linux,wakeup")
59
60 Example:
61
62 tc35893@44 {
63 compatible = "toshiba,tc35893";
64 reg = <0x44>;
65 interrupt-parent = <&gpio6>;
66 interrupts = <26 IRQ_TYPE_EDGE_RISING>;
67
68 interrupt-controller;
69 #interrupt-cells = <1>;
70
71 tc3589x_gpio {
72 compatible = "toshiba,tc3589x-gpio";
73 interrupts = <0>;
74
75 interrupt-controller;
76 #interrupt-cells = <2>;
77 gpio-controller;
78 #gpio-cells = <2>;
79 };
80 tc3589x_keypad {
81 compatible = "toshiba,tc3589x-keypad";
82 interrupts = <6>;
83 debounce-delay-ms = <4>;
84 keypad,num-columns = <8>;
85 keypad,num-rows = <8>;
86 linux,no-autorepeat;
87 linux,keymap = <0x0301006b
88 0x04010066
89 0x06040072
90 0x040200d7
91 0x0303006a
92 0x0205000e
93 0x0607008b
94 0x0500001c
95 0x0403000b
96 0x03040034
97 0x05020067
98 0x0305006c
99 0x040500e7
100 0x0005009e
101 0x06020073
102 0x01030039
103 0x07060069
104 0x050500d9>;
105 wakeup-source;
106 };
107 };
108

3. 한국어 전문 번역

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

Toshiba TC3589x 다목적 expander

1-13

Toshiba TC3589x 계열은 I2C 기반 MFD이며 GPIO, keypad, rotator(vibrator), LED나 vibrator용 PWM을 내장할 수 있습니다. 포함되는 모델은 TC35890, TC35892, TC35893, TC35894, TC35895, TC35896입니다.

TC3589x 내장 기능
기능용도
GPIO20개 또는 24개 GPIO line
Keypad최대 96개 key
RotatorVibrator 구동
PWMLED 또는 vibrator 구동

계열 장치가 노출할 수 있는 기능과 용도를 정리했습니다.

상위 MFD 필수 속성

14-22

`compatible`은 모델에 따라 `toshiba,tc35890`, `toshiba,tc35892`, `toshiba,tc35893`, `toshiba,tc35894`, `toshiba,tc35895`, `toshiba,tc35896` 중 하나입니다. `reg`는 I2C address, `interrupts`는 컨트롤러가 연결된 상위 interrupt입니다.

`interrupt-controller`는 이 노드를 interrupt controller로 표시합니다. `#interrupt-cells`는 `<1>`이며 첫 cell은 TC3589x interrupt controller 내부 IRQ offset입니다.

GPIO 자식과 interrupt flags

23-43

TC35890과 TC35892의 GPIO module은 24개, 나머지 모델은 20개의 GPIO line을 갖습니다. GPIO 자식의 `compatible`은 `toshiba,tc3589x-gpio`, `interrupts`는 상위 TC3589x MFD에 연결된 interrupt입니다.

GPIO 자식의 `interrupt-controller`와 `#interrupt-cells = <2>`는 첫 cell을 GPIO IRQ offset, 둘째 cell을 `<dt-bindings/interrupt-controller/irq.h>`에 따른 interrupt flags로 정의합니다. 유효한 flags는 `IRQ_TYPE_LEVEL_LOW`, `IRQ_TYPE_LEVEL_HIGH`, `IRQ_TYPE_EDGE_RISING`, `IRQ_TYPE_EDGE_FALLING`, `IRQ_TYPE_EDGE_BOTH`입니다.

`gpio-controller`는 자식을 GPIO controller로 표시합니다. `#gpio-cells = <2>`에서 첫 cell은 GPIO offset, 둘째 cell은 flags입니다.

TC3589x GPIO interrupt flags
FlagTrigger
IRQ_TYPE_LEVEL_LOWLow level
IRQ_TYPE_LEVEL_HIGHHigh level
IRQ_TYPE_EDGE_RISINGRising edge
IRQ_TYPE_EDGE_FALLINGFalling edge
IRQ_TYPE_EDGE_BOTHBoth edges

GPIO interrupt specifier에서 사용할 수 있는 trigger 유형입니다.

Keypad 자식 속성

44-59

모든 variant의 keypad는 같으며 최대 96개 key를 지원합니다. Linux 전용 속성은 기존 input driver의 모델을 따릅니다. `compatible`은 `toshiba,tc3589x-keypad`, `debounce-delay-ms`는 millisecond 단위 debounce interval입니다.

`keypad,num-rows`와 `keypad,num-columns`는 matrix 행·열 수이며 `bindings/input/matrix-keymap.txt`를 따릅니다. `linux,keymap` 정의도 같은 문서에 있습니다. `linux,no-autorepeat`는 autorepeat 기능을 끄고, `wakeup-source`는 모든 keypad event를 wakeup event로 사용합니다. legacy 속성 `linux,wakeup`도 지원합니다.

TC35893 GPIO·keypad 예제

60-107

예제의 TC35893은 I2C 주소 `0x44`, GPIO6 pin 26 rising-edge interrupt, 한 cell 상위 IRQ domain을 사용합니다. GPIO 자식은 local interrupt 0과 두 cell IRQ·GPIO specifier를 제공합니다.

Keypad 자식은 local interrupt 6, 4ms debounce, 8열·8행 matrix, autorepeat 비활성화, 18개 keymap 값과 `wakeup-source`를 지정합니다.

tc35893@44 {
        compatible = "toshiba,tc35893";
        reg = <0x44>;
        interrupt-parent = <&gpio6>;
        interrupts = <26 IRQ_TYPE_EDGE_RISING>;

        interrupt-controller;
        #interrupt-cells = <1>;

        tc3589x_gpio {
                compatible = "toshiba,tc3589x-gpio";
                interrupts = <0>;

                interrupt-controller;
                #interrupt-cells = <2>;
                gpio-controller;
                #gpio-cells = <2>;
        };
        tc3589x_keypad {
                compatible = "toshiba,tc3589x-keypad";
                interrupts = <6>;
                debounce-delay-ms = <4>;
                keypad,num-columns = <8>;
                keypad,num-rows = <8>;
                linux,no-autorepeat;
                linux,keymap = <0x0301006b
                                0x04010066
                                0x06040072
                                0x040200d7
                                0x0303006a
                                0x0205000e
                                0x0607008b
                                0x0500001c
                                0x0403000b
                                0x03040034
                                0x05020067
                                0x0305006c
                                0x040500e7
                                0x0005009e
                                0x06020073
                                0x01030039
                                0x07060069
                                0x050500d9>;
                wakeup-source;
        };
};