요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Abilis Systems TB10x pin controller
===================================
Required properties
-------------------
- compatible: should be "abilis,tb10x-iomux";
- reg: should contain the physical address and size of the pin controller's
register range.
Function definitions
--------------------
Functions are defined (and referenced) by sub-nodes of the pin controller.
Every sub-node defines exactly one function (implying a set of pins).
Every function is associated to one named pin group inside the pin controller
driver and these names are used to associate pin group predefinitions to pin
controller sub-nodes.
Required function definition subnode properties:
- abilis,function: should be set to the name of the function's pin group.
The following pin groups are available:
- GPIO ports: gpioa, gpiob, gpioc, gpiod, gpioe, gpiof, gpiog,
gpioh, gpioi, gpioj, gpiok, gpiol, gpiom, gpion
- Serial TS input ports: mis0, mis1, mis2, mis3, mis4, mis5, mis6, mis7
- Parallel TS input ports: mip1, mip3, mip5, mip7
- Serial TS output ports: mos0, mos1, mos2, mos3
- Parallel TS output port: mop
- CI+ port: ciplus
- CableCard (Mcard) port: mcard
- Smart card ports: stc0, stc1
- UART ports: uart0, uart1
- SPI ports: spi1, spi3
- JTAG: jtag
All other ports of the chip are not multiplexed and thus not managed by this
driver.
GPIO ranges definition
----------------------
The named pin groups of GPIO ports can be used to define GPIO ranges as
explained in Documentation/devicetree/bindings/gpio/gpio.txt.
Example
-------
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";
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Abilis TB10x pin controller 속성
1-10Abilis Systems TB10x pin controller의 `compatible`은 `abilis,tb10x-iomux`여야 합니다. `reg`에는 pin controller register 범위의 물리 주소와 크기가 들어가야 합니다.
TB10x function 정의
11-40Function은 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-48GPIO 포트의 이름 있는 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";
};
요약과 해설
abilis,tb10x-iomux.txt:1-80GPIO·TS·CI+·UART·SPI·JTAG pin group과 consumer 연결 방식을 설명합니다.