← Documents Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Abilis Systems TB10x Pin Controller

TB10x IOMUX function group과 GPIO range 바인딩입니다.

Source pathDocumentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

abilis,tb10x-iomux.txt:1-80

GPIO·TS·CI+·UART·SPI·JTAG pin group과 consumer 연결 방식을 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Abilis Systems TB10x pin controller
2 ===================================
3
4 Required properties
5 -------------------
6
7 - compatible: should be "abilis,tb10x-iomux";
8 - reg: should contain the physical address and size of the pin controller's
9 register range.
10
11
12 Function definitions
13 --------------------
14
15 Functions are defined (and referenced) by sub-nodes of the pin controller.
16 Every sub-node defines exactly one function (implying a set of pins).
17 Every function is associated to one named pin group inside the pin controller
18 driver and these names are used to associate pin group predefinitions to pin
19 controller sub-nodes.
20
21 Required function definition subnode properties:
22 - abilis,function: should be set to the name of the function's pin group.
23
24 The following pin groups are available:
25 - GPIO ports: gpioa, gpiob, gpioc, gpiod, gpioe, gpiof, gpiog,
26 gpioh, gpioi, gpioj, gpiok, gpiol, gpiom, gpion
27 - Serial TS input ports: mis0, mis1, mis2, mis3, mis4, mis5, mis6, mis7
28 - Parallel TS input ports: mip1, mip3, mip5, mip7
29 - Serial TS output ports: mos0, mos1, mos2, mos3
30 - Parallel TS output port: mop
31 - CI+ port: ciplus
32 - CableCard (Mcard) port: mcard
33 - Smart card ports: stc0, stc1
34 - UART ports: uart0, uart1
35 - SPI ports: spi1, spi3
36 - JTAG: jtag
37
38 All other ports of the chip are not multiplexed and thus not managed by this
39 driver.
40
41
42 GPIO ranges definition
43 ----------------------
44
45 The named pin groups of GPIO ports can be used to define GPIO ranges as
46 explained in Documentation/devicetree/bindings/gpio/gpio.txt.
47
48
49 Example
50 -------
51
52 iomux: iomux@ff10601c {
53 compatible = "abilis,tb10x-iomux";
54 reg = <0xFF10601c 0x4>;
55 pctl_gpio_a: pctl-gpio-a {
56 abilis,function = "gpioa";
57 };
58 pctl_uart0: pctl-uart0 {
59 abilis,function = "uart0";
60 };
61 };
62 uart@ff100000 {
63 compatible = "snps,dw-apb-uart";
64 reg = <0xFF100000 0x100>;
65 clock-frequency = <166666666>;
66 interrupts = <25 1>;
67 reg-shift = <2>;
68 reg-io-width = <4>;
69 pinctrl-names = "default";
70 pinctrl-0 = <&pctl_uart0>;
71 };
72 gpioa: gpio@ff140000 {
73 compatible = "abilis,tb10x-gpio";
74 reg = <0xFF140000 0x1000>;
75 gpio-controller;
76 #gpio-cells = <2>;
77 ngpio = <3>;
78 gpio-ranges = <&iomux 0 0>;
79 gpio-ranges-group-names = "gpioa";
80 };
81

3. 한국어 전문 번역

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

Abilis TB10x pin controller 속성

1-10

Abilis Systems TB10x pin controller의 `compatible`은 `abilis,tb10x-iomux`여야 합니다. `reg`에는 pin controller register 범위의 물리 주소와 크기가 들어가야 합니다.

TB10x function 정의

11-40

Function은 pin controller의 하위 노드로 정의하고 참조합니다. 각 하위 노드는 pin 집합을 뜻하는 function 하나만 정의합니다. 각 function은 드라이버 내부의 이름 있는 pin group 하나와 연결되며 이 이름으로 사전 정의된 pin group을 하위 노드에 연결합니다.

Function 하위 노드의 필수 `abilis,function`은 해당 function의 pin group 이름으로 설정해야 합니다.

사용 가능한 GPIO group은 `gpioa`부터 `gpion`까지입니다. Serial TS input은 `mis0`부터 `mis7`, parallel TS input은 `mip1`, `mip3`, `mip5`, `mip7`, serial TS output은 `mos0`부터 `mos3`, parallel TS output은 `mop`입니다.

그 밖에 CI+ `ciplus`, CableCard(Mcard) `mcard`, smart card `stc0`·`stc1`, UART `uart0`·`uart1`, SPI `spi1`·`spi3`, JTAG `jtag` group이 있습니다.

칩의 나머지 포트는 multiplex되지 않으므로 이 드라이버가 관리하지 않습니다.

TB10x GPIO range 정의

41-48

GPIO 포트의 이름 있는 pin group은 `Documentation/devicetree/bindings/gpio/gpio.txt`의 설명에 따라 GPIO range를 정의하는 데 사용할 수 있습니다.

TB10x IOMUX 예제

49-80

예제 IOMUX는 `gpioa`와 `uart0` function 노드를 정의합니다. UART는 `pinctrl-0`으로 `pctl_uart0`을 선택하고, GPIO controller는 `gpio-ranges`와 `gpio-ranges-group-names = "gpioa"`로 세 GPIO를 IOMUX group에 연결합니다.

iomux: iomux@ff10601c {
        compatible = "abilis,tb10x-iomux";
        reg = <0xFF10601c 0x4>;
        pctl_gpio_a: pctl-gpio-a {
                abilis,function = "gpioa";
        };
        pctl_uart0: pctl-uart0 {
                abilis,function = "uart0";
        };
};
uart@ff100000 {
        compatible = "snps,dw-apb-uart";
        reg = <0xFF100000 0x100>;
        clock-frequency = <166666666>;
        interrupts = <25 1>;
        reg-shift = <2>;
        reg-io-width = <4>;
        pinctrl-names = "default";
        pinctrl-0 = <&pctl_uart0>;
};
gpioa: gpio@ff140000 {
        compatible = "abilis,tb10x-gpio";
        reg = <0xFF140000 0x1000>;
        gpio-controller;
        #gpio-cells = <2>;
        ngpio = <3>;
        gpio-ranges = <&iomux 0 0>;
        gpio-ranges-group-names = "gpioa";
};