← Documents Documentation/devicetree/bindings/pinctrl/bitmain,bm1880-pinctrl.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Bitmain BM1880 Pin Controller

BM1880 MIO pin·group·function과 pinconf 바인딩입니다.

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

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

1. 요약·해설

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

요약과 해설

bitmain,bm1880-pinctrl.txt:1-126

MIO0-111의 mux, bias, Schmitt trigger, slew와 drive 설정을 정리합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Bitmain BM1880 Pin Controller
2
3 This binding describes the pin controller found in the BM1880 SoC.
4
5 Required Properties:
6
7 - compatible: Should be "bitmain,bm1880-pinctrl"
8 - reg: Offset and length of pinctrl space in SCTRL.
9
10 Please refer to pinctrl-bindings.txt in this directory for details of the
11 common pinctrl bindings used by client devices, including the meaning of the
12 phrase "pin configuration node".
13
14 The pin configuration nodes act as a container for an arbitrary number of
15 subnodes. Each of these subnodes represents some desired configuration for a
16 pin, a group, or a list of pins or groups. This configuration for BM1880 SoC
17 includes pinmux and various pin configuration parameters, such as pull-up,
18 slew rate etc...
19
20 Each configuration node can consist of multiple nodes describing the pinmux
21 options. The name of each subnode is not important; all subnodes should be
22 enumerated and processed purely based on their content.
23
24 The following generic properties as defined in pinctrl-bindings.txt are valid
25 to specify in a pinmux subnode:
26
27 Required Properties:
28
29 - pins: An array of strings, each string containing the name of a pin.
30 Valid values for pins are:
31
32 MIO0 - MIO111
33
34 - groups: An array of strings, each string containing the name of a pin
35 group. Valid values for groups are:
36
37 nand_grp, spi_grp, emmc_grp, sdio_grp, eth0_grp, pwm0_grp,
38 pwm1_grp, pwm2_grp, pwm3_grp, pwm4_grp, pwm5_grp, pwm6_grp,
39 pwm7_grp, pwm8_grp, pwm9_grp, pwm10_grp, pwm11_grp, pwm12_grp,
40 pwm13_grp, pwm14_grp, pwm15_grp, pwm16_grp, pwm17_grp,
41 pwm18_grp, pwm19_grp, pwm20_grp, pwm21_grp, pwm22_grp,
42 pwm23_grp, pwm24_grp, pwm25_grp, pwm26_grp, pwm27_grp,
43 pwm28_grp, pwm29_grp, pwm30_grp, pwm31_grp, pwm32_grp,
44 pwm33_grp, pwm34_grp, pwm35_grp, pwm36_grp, i2c0_grp,
45 i2c1_grp, i2c2_grp, i2c3_grp, i2c4_grp, uart0_grp, uart1_grp,
46 uart2_grp, uart3_grp, uart4_grp, uart5_grp, uart6_grp,
47 uart7_grp, uart8_grp, uart9_grp, uart10_grp, uart11_grp,
48 uart12_grp, uart13_grp, uart14_grp, uart15_grp, gpio0_grp,
49 gpio1_grp, gpio2_grp, gpio3_grp, gpio4_grp, gpio5_grp,
50 gpio6_grp, gpio7_grp, gpio8_grp, gpio9_grp, gpio10_grp,
51 gpio11_grp, gpio12_grp, gpio13_grp, gpio14_grp, gpio15_grp,
52 gpio16_grp, gpio17_grp, gpio18_grp, gpio19_grp, gpio20_grp,
53 gpio21_grp, gpio22_grp, gpio23_grp, gpio24_grp, gpio25_grp,
54 gpio26_grp, gpio27_grp, gpio28_grp, gpio29_grp, gpio30_grp,
55 gpio31_grp, gpio32_grp, gpio33_grp, gpio34_grp, gpio35_grp,
56 gpio36_grp, gpio37_grp, gpio38_grp, gpio39_grp, gpio40_grp,
57 gpio41_grp, gpio42_grp, gpio43_grp, gpio44_grp, gpio45_grp,
58 gpio46_grp, gpio47_grp, gpio48_grp, gpio49_grp, gpio50_grp,
59 gpio51_grp, gpio52_grp, gpio53_grp, gpio54_grp, gpio55_grp,
60 gpio56_grp, gpio57_grp, gpio58_grp, gpio59_grp, gpio60_grp,
61 gpio61_grp, gpio62_grp, gpio63_grp, gpio64_grp, gpio65_grp,
62 gpio66_grp, gpio67_grp, eth1_grp, i2s0_grp, i2s0_mclkin_grp,
63 i2s1_grp, i2s1_mclkin_grp, spi0_grp
64
65 - function: An array of strings, each string containing the name of the
66 pinmux functions. The following are the list of pinmux
67 functions available:
68
69 nand, spi, emmc, sdio, eth0, pwm0, pwm1, pwm2, pwm3, pwm4,
70 pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, pwm12, pwm13,
71 pwm14, pwm15, pwm16, pwm17, pwm18, pwm19, pwm20, pwm21, pwm22,
72 pwm23, pwm24, pwm25, pwm26, pwm27, pwm28, pwm29, pwm30, pwm31,
73 pwm32, pwm33, pwm34, pwm35, pwm36, i2c0, i2c1, i2c2, i2c3,
74 i2c4, uart0, uart1, uart2, uart3, uart4, uart5, uart6, uart7,
75 uart8, uart9, uart10, uart11, uart12, uart13, uart14, uart15,
76 gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7, gpio8,
77 gpio9, gpio10, gpio11, gpio12, gpio13, gpio14, gpio15, gpio16,
78 gpio17, gpio18, gpio19, gpio20, gpio21, gpio22, gpio23,
79 gpio24, gpio25, gpio26, gpio27, gpio28, gpio29, gpio30,
80 gpio31, gpio32, gpio33, gpio34, gpio35, gpio36, gpio37,
81 gpio38, gpio39, gpio40, gpio41, gpio42, gpio43, gpio44,
82 gpio45, gpio46, gpio47, gpio48, gpio49, gpio50, gpio51,
83 gpio52, gpio53, gpio54, gpio55, gpio56, gpio57, gpio58,
84 gpio59, gpio60, gpio61, gpio62, gpio63, gpio64, gpio65,
85 gpio66, gpio67, eth1, i2s0, i2s0_mclkin, i2s1, i2s1_mclkin,
86 spi0
87
88 Optional Properties:
89
90 - bias-disable: No arguments. Disable pin bias.
91 - bias-pull-down: No arguments. The specified pins should be configured as
92 pull down.
93 - bias-pull-up: No arguments. The specified pins should be configured as
94 pull up.
95 - input-schmitt-enable: No arguments: Enable schmitt trigger for the specified
96 pins
97 - input-schmitt-disable: No arguments: Disable schmitt trigger for the specified
98 pins
99 - slew-rate: Integer. Sets slew rate for the specified pins.
100 Valid values are:
101 <0> - Slow
102 <1> - Fast
103 - drive-strength: Integer. Selects the drive strength for the specified
104 pins in mA.
105 Valid values are:
106 <4>
107 <8>
108 <12>
109 <16>
110 <20>
111 <24>
112 <28>
113 <32>
114
115 Example:
116 pinctrl: pinctrl@400 {
117 compatible = "bitmain,bm1880-pinctrl";
118 reg = <0x400 0x120>;
119
120 pinctrl_uart0_default: uart0-default {
121 pinmux {
122 groups = "uart0_grp";
123 function = "uart0";
124 };
125 };
126 };
127

3. 한국어 전문 번역

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

Bitmain BM1880 pin controller

1-26

이 바인딩은 BM1880 SoC의 pin controller를 설명합니다. `compatible`은 `bitmain,bm1880-pinctrl`이며 `reg`는 SCTRL 내부 pinctrl 공간의 offset과 길이입니다.

공통 client 바인딩과 `pin configuration node` 의미는 `pinctrl-bindings.txt`를 따릅니다. Configuration node는 pin, group 또는 목록에 원하는 pinmux, pull-up, slew rate 등의 설정을 적용하는 임의 개수의 하위 노드를 담습니다.

각 configuration node에는 pinmux option을 설명하는 여러 노드가 있을 수 있습니다. 하위 노드 이름은 중요하지 않고 내용만으로 열거하고 처리합니다.

BM1880 pin과 group

27-64

필수 `pins`는 pin 이름 문자열 배열이며 유효한 범위는 `MIO0`부터 `MIO111`까지입니다. 필수 `groups`는 pin group 이름 문자열 배열이며 전체 group 목록은 다음과 같습니다.

                  MIO0 - MIO111

- groups:         An array of strings, each string containing the name of a pin
                  group. Valid values for groups are:

                  nand_grp, spi_grp, emmc_grp, sdio_grp, eth0_grp, pwm0_grp,
                  pwm1_grp, pwm2_grp, pwm3_grp, pwm4_grp, pwm5_grp, pwm6_grp,
                  pwm7_grp, pwm8_grp, pwm9_grp, pwm10_grp, pwm11_grp, pwm12_grp,
                  pwm13_grp, pwm14_grp, pwm15_grp, pwm16_grp, pwm17_grp,
                  pwm18_grp, pwm19_grp, pwm20_grp, pwm21_grp, pwm22_grp,
                  pwm23_grp, pwm24_grp, pwm25_grp, pwm26_grp, pwm27_grp,
                  pwm28_grp, pwm29_grp, pwm30_grp, pwm31_grp, pwm32_grp,
                  pwm33_grp, pwm34_grp, pwm35_grp, pwm36_grp, i2c0_grp,
                  i2c1_grp, i2c2_grp, i2c3_grp, i2c4_grp, uart0_grp, uart1_grp,
                  uart2_grp, uart3_grp, uart4_grp, uart5_grp, uart6_grp,
                  uart7_grp, uart8_grp, uart9_grp, uart10_grp, uart11_grp,
                  uart12_grp, uart13_grp, uart14_grp, uart15_grp, gpio0_grp,
                  gpio1_grp, gpio2_grp, gpio3_grp, gpio4_grp, gpio5_grp,
                  gpio6_grp, gpio7_grp, gpio8_grp, gpio9_grp, gpio10_grp,
                  gpio11_grp, gpio12_grp, gpio13_grp, gpio14_grp, gpio15_grp,
                  gpio16_grp, gpio17_grp, gpio18_grp, gpio19_grp, gpio20_grp,
                  gpio21_grp, gpio22_grp, gpio23_grp, gpio24_grp, gpio25_grp,
                  gpio26_grp, gpio27_grp, gpio28_grp, gpio29_grp, gpio30_grp,
                  gpio31_grp, gpio32_grp, gpio33_grp, gpio34_grp, gpio35_grp,
                  gpio36_grp, gpio37_grp, gpio38_grp, gpio39_grp, gpio40_grp,
                  gpio41_grp, gpio42_grp, gpio43_grp, gpio44_grp, gpio45_grp,
                  gpio46_grp, gpio47_grp, gpio48_grp, gpio49_grp, gpio50_grp,
                  gpio51_grp, gpio52_grp, gpio53_grp, gpio54_grp, gpio55_grp,
                  gpio56_grp, gpio57_grp, gpio58_grp, gpio59_grp, gpio60_grp,
                  gpio61_grp, gpio62_grp, gpio63_grp, gpio64_grp, gpio65_grp,
                  gpio66_grp, gpio67_grp, eth1_grp, i2s0_grp, i2s0_mclkin_grp,
                  i2s1_grp, i2s1_mclkin_grp, spi0_grp

BM1880 pinmux function

65-87

필수 `function`은 pinmux function 이름 문자열 배열입니다. 사용 가능한 전체 function은 다음과 같습니다.

nand, spi, emmc, sdio, eth0, pwm0, pwm1, pwm2, pwm3, pwm4,
pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, pwm12, pwm13,
pwm14, pwm15, pwm16, pwm17, pwm18, pwm19, pwm20, pwm21, pwm22,
pwm23, pwm24, pwm25, pwm26, pwm27, pwm28, pwm29, pwm30, pwm31,
pwm32, pwm33, pwm34, pwm35, pwm36, i2c0, i2c1, i2c2, i2c3,
i2c4, uart0, uart1, uart2, uart3, uart4, uart5, uart6, uart7,
uart8, uart9, uart10, uart11, uart12, uart13, uart14, uart15,
gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7, gpio8,
gpio9, gpio10, gpio11, gpio12, gpio13, gpio14, gpio15, gpio16,
gpio17, gpio18, gpio19, gpio20, gpio21, gpio22, gpio23,
gpio24, gpio25, gpio26, gpio27, gpio28, gpio29, gpio30,
gpio31, gpio32, gpio33, gpio34, gpio35, gpio36, gpio37,
gpio38, gpio39, gpio40, gpio41, gpio42, gpio43, gpio44,
gpio45, gpio46, gpio47, gpio48, gpio49, gpio50, gpio51,
gpio52, gpio53, gpio54, gpio55, gpio56, gpio57, gpio58,
gpio59, gpio60, gpio61, gpio62, gpio63, gpio64, gpio65,
gpio66, gpio67, eth1, i2s0, i2s0_mclkin, i2s1, i2s1_mclkin,
spi0

BM1880 선택 pinconf 속성

88-114

`bias-disable`은 pin bias를 끕니다. `bias-pull-down`과 `bias-pull-up`은 지정한 pin에 pull-down 또는 pull-up을 설정합니다.

`input-schmitt-enable`과 `input-schmitt-disable`은 Schmitt trigger를 켜거나 끕니다. 이 속성들은 인자를 받지 않습니다.

`slew-rate`는 0이면 slow, 1이면 fast입니다. `drive-strength`는 mA 단위이며 허용 값은 4, 8, 12, 16, 20, 24, 28, 32입니다.

BM1880 UART0 예제

115-126

예제는 SCTRL offset `0x400`의 pin controller에서 `uart0_grp`를 `uart0` function으로 선택하는 default 상태를 정의합니다.

pinctrl: pinctrl@400 {
        compatible = "bitmain,bm1880-pinctrl";
        reg = <0x400 0x120>;

        pinctrl_uart0_default: uart0-default {
                pinmux {
                        groups = "uart0_grp";
                        function = "uart0";
                };
        };
};