← Documents Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Axis ARTPEC-6 Pin Controller

ARTPEC-6 pinmux group과 drive·bias 설정 바인딩입니다.

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

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

1. 요약·해설

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

요약과 해설

axis,artpec6-pinctrl.txt:1-87

Function/group 대응과 UART consumer 연결을 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Axis ARTPEC-6 Pin Controller
2
3 Required properties:
4 - compatible: "axis,artpec6-pinctrl".
5 - reg: Should contain the register physical address and length for the pin
6 controller.
7
8 A pinctrl node should contain at least one subnode representing the pinctrl
9 groups available on the machine. Each subnode will list the mux function
10 required and what pin group it will use. Each subnode will also configure the
11 drive strength and bias pullup of the pin group. If either of these options is
12 not set, its actual value will be unspecified.
13
14
15 Required subnode-properties:
16 - function: Function to mux.
17 - groups: Name of the pin group to use for the function above.
18
19 Available functions and groups (function: group0, group1...):
20 gpio: cpuclkoutgrp0, udlclkoutgrp0, i2c1grp0, i2c2grp0,
21 i2c3grp0, i2s0grp0, i2s1grp0, i2srefclkgrp0, spi0grp0,
22 spi1grp0, pciedebuggrp0, uart0grp0, uart0grp1, uart0grp2,
23 uart1grp0, uart1grp1, uart2grp0, uart2grp1, uart2grp2,
24 uart3grp0, uart4grp0, uart4grp1, uart5grp0, uart5grp1,
25 uart5nocts
26 cpuclkout: cpuclkoutgrp0
27 udlclkout: udlclkoutgrp0
28 i2c1: i2c1grp0
29 i2c2: i2c2grp0
30 i2c3: i2c3grp0
31 i2s0: i2s0grp0
32 i2s1: i2s1grp0
33 i2srefclk: i2srefclkgrp0
34 spi0: spi0grp0
35 spi1: spi1grp0
36 pciedebug: pciedebuggrp0
37 uart0: uart0grp0, uart0grp1, uart0grp2
38 uart1: uart1grp0, uart1grp1
39 uart2: uart2grp0, uart2grp1, uart2grp2
40 uart3: uart3grp0
41 uart4: uart4grp0, uart4grp1
42 uart5: uart5grp0, uart5grp1, uart5nocts
43 nand: nandgrp0
44 sdio0: sdio0grp0
45 sdio1: sdio1grp0
46 ethernet: ethernetgrp0
47
48
49 Optional subnode-properties (see pinctrl-bindings.txt):
50 - drive-strength: 4, 6, 8, 9 mA. For SD and NAND pins, this is for 3.3V VCCQ3.
51 - bias-pull-up
52 - bias-disable
53
54 Examples:
55 pinctrl@f801d000 {
56 compatible = "axis,artpec6-pinctrl";
57 reg = <0xf801d000 0x400>;
58
59 pinctrl_uart0: uart0grp {
60 function = "uart0";
61 groups = "uart0grp0";
62 drive-strength = <4>;
63 bias-pull-up;
64 };
65 pinctrl_uart3: uart3grp {
66 function = "uart3";
67 groups = "uart3grp0";
68 };
69 };
70 uart0: uart@f8036000 {
71 compatible = "arm,pl011", "arm,primecell";
72 reg = <0xf8036000 0x1000>;
73 interrupts = <0 104 IRQ_TYPE_LEVEL_HIGH>;
74 clocks = <&pll2div24>, <&apb_pclk>;
75 clock-names = "uart_clk", "apb_pclk";
76 pinctrl-names = "default";
77 pinctrl-0 = <&pinctrl_uart0>;
78 };
79 uart3: uart@f8039000 {
80 compatible = "arm,pl011", "arm,primecell";
81 reg = <0xf8039000 0x1000>;
82 interrupts = <0 128 IRQ_TYPE_LEVEL_HIGH>;
83 clocks = <&pll2div24>, <&apb_pclk>;
84 clock-names = "uart_clk", "apb_pclk";
85 pinctrl-names = "default";
86 pinctrl-0 = <&pinctrl_uart3>;
87 };
88

3. 한국어 전문 번역

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

Axis ARTPEC-6 pin controller

1-14

ARTPEC-6 pin controller의 `compatible`은 `axis,artpec6-pinctrl`이며 `reg`에는 controller register의 물리 주소와 길이가 들어가야 합니다.

Pinctrl 노드는 시스템에서 사용할 수 있는 pinctrl group을 나타내는 하위 노드를 하나 이상 가져야 합니다. 각 하위 노드는 필요한 mux function과 사용할 pin group을 나열하고 group의 drive strength와 bias pull-up도 구성합니다. 두 선택 항목 중 하나를 생략하면 실제 값은 지정되지 않은 상태입니다.

ARTPEC-6 function과 group

15-48

하위 노드의 필수 `function`은 mux할 function이고 `groups`는 그 function에 사용할 pin group 이름입니다. 사용 가능한 function과 대응 group 전체는 다음과 같습니다.

gpio: cpuclkoutgrp0, udlclkoutgrp0, i2c1grp0, i2c2grp0,
      i2c3grp0, i2s0grp0, i2s1grp0, i2srefclkgrp0, spi0grp0,
      spi1grp0, pciedebuggrp0, uart0grp0, uart0grp1, uart0grp2,
      uart1grp0, uart1grp1, uart2grp0, uart2grp1, uart2grp2,
      uart3grp0, uart4grp0, uart4grp1, uart5grp0, uart5grp1,
      uart5nocts
cpuclkout: cpuclkoutgrp0
udlclkout: udlclkoutgrp0
i2c1: i2c1grp0
i2c2: i2c2grp0
i2c3: i2c3grp0
i2s0: i2s0grp0
i2s1: i2s1grp0
i2srefclk: i2srefclkgrp0
spi0: spi0grp0
spi1: spi1grp0
pciedebug: pciedebuggrp0
uart0: uart0grp0, uart0grp1, uart0grp2
uart1: uart1grp0, uart1grp1
uart2: uart2grp0, uart2grp1, uart2grp2
uart3: uart3grp0
uart4: uart4grp0, uart4grp1
uart5: uart5grp0, uart5grp1, uart5nocts
nand: nandgrp0
sdio0: sdio0grp0
sdio1: sdio1grp0
ethernet: ethernetgrp0

ARTPEC-6 선택 pinconf 속성

49-53

선택 속성은 `pinctrl-bindings.txt`를 따릅니다. `drive-strength`는 4, 6, 8, 9mA 가운데 하나이며 SD와 NAND pin에서는 3.3V `VCCQ3` 기준입니다. `bias-pull-up`은 pull-up을 켜고 `bias-disable`은 bias를 끕니다.

ARTPEC-6 UART 예제

54-87

예제는 UART0 group에 4mA drive와 pull-up을 지정하고 UART3 group은 mux만 선택합니다. 두 PL011 UART consumer는 각각 해당 pinctrl 상태를 기본 상태로 참조합니다.

pinctrl@f801d000 {
        compatible = "axis,artpec6-pinctrl";
        reg = <0xf801d000 0x400>;

        pinctrl_uart0: uart0grp {
                function = "uart0";
                groups = "uart0grp0";
                drive-strength = <4>;
                bias-pull-up;
        };
        pinctrl_uart3: uart3grp {
                function = "uart3";
                groups = "uart3grp0";
        };
};
uart0: uart@f8036000 {
        compatible = "arm,pl011", "arm,primecell";
        reg = <0xf8036000 0x1000>;
        interrupts = <0 104 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&pll2div24>, <&apb_pclk>;
        clock-names = "uart_clk", "apb_pclk";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart0>;
};
uart3: uart@f8039000 {
        compatible = "arm,pl011", "arm,primecell";
        reg = <0xf8039000 0x1000>;
        interrupts = <0 128 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&pll2div24>, <&apb_pclk>;
        clock-names = "uart_clk", "apb_pclk";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart3>;
};