← Documents Documentation/devicetree/bindings/pinctrl/ste,abx500.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

ST-Ericsson ABx500 Pinctrl

AB8500 계열의 generic pinmux binding과 전체 board pinctrl 예제입니다.

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

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

1. 요약·해설

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

요약과 해설

ste,abx500.txt:1-318

Clock request, PWM, ADI, DMIC, power control, vibra, GPIO, PDM까지 default state 구성을 기능별로 나누어 읽습니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 ST Ericsson abx500 pinmux controller
2
3 Required properties:
4 - compatible: "stericsson,ab8500-gpio", "stericsson,ab8540-gpio",
5 "stericsson,ab8505-gpio", "stericsson,ab9540-gpio",
6
7 Please refer to pinctrl-bindings.txt in this directory for details of the
8 common pinctrl bindings used by client devices, including the meaning of the
9 phrase "pin configuration node".
10
11 ST Ericsson's pin configuration nodes use the generic pin multiplexing
12 and pin configuration bindings, see pinctrl-bindings.txt
13
14 Example board file extract:
15
16 &pinctrl_abx500 {
17 pinctrl-names = "default";
18 pinctrl-0 = <&sysclkreq2_default_mode>, <&sysclkreq3_default_mode>, <&gpio3_default_mode>, <&sysclkreq6_default_mode>, <&pwmout1_default_mode>, <&pwmout2_default_mode>, <&pwmout3_default_mode>, <&adi1_default_mode>, <&dmic12_default_mode>, <&dmic34_default_mode>, <&dmic56_default_mode>, <&sysclkreq5_default_mode>, <&batremn_default_mode>, <&service_default_mode>, <&pwrctrl0_default_mode>, <&pwrctrl1_default_mode>, <&pwmextvibra1_default_mode>, <&pwmextvibra2_default_mode>, <&gpio51_default_mode>, <&gpio52_default_mode>, <&gpio53_default_mode>, <&gpio54_default_mode>, <&pdmclkdat_default_mode>;
19
20 sysclkreq2 {
21 sysclkreq2_default_mode: sysclkreq2_default {
22 default_mux {
23 function = "sysclkreq";
24 groups = "sysclkreq2_d_1";
25 };
26 default_cfg {
27 pins = "GPIO1";
28 bias-disable;
29 };
30 };
31 };
32 sysclkreq3 {
33 sysclkreq3_default_mode: sysclkreq3_default {
34 default_mux {
35 function = "sysclkreq";
36 groups = "sysclkreq3_d_1";
37 };
38 default_cfg {
39 pins = "GPIO2";
40 output-low;
41 };
42 };
43 };
44 gpio3 {
45 gpio3_default_mode: gpio3_default {
46 default_mux {
47 function = "gpio";
48 groups = "gpio3_a_1";
49 };
50 default_cfg {
51 pins = "GPIO3";
52 output-low;
53 };
54 };
55 };
56 sysclkreq6 {
57 sysclkreq6_default_mode: sysclkreq6_default {
58 default_mux {
59 function = "sysclkreq";
60 groups = "sysclkreq6_d_1";
61 };
62 default_cfg {
63 pins = "GPIO4";
64 bias-disable;
65 };
66 };
67 };
68 pwmout1 {
69 pwmout1_default_mode: pwmout1_default {
70 default_mux {
71 function = "pwmout";
72 groups = "pwmout1_d_1";
73 };
74 default_cfg {
75 pins = "GPIO14";
76 output-low;
77 };
78 };
79 };
80 pwmout2 {
81 pwmout2_default_mode: pwmout2_default {
82 pwmout2_default_mux {
83 function = "pwmout";
84 groups = "pwmout2_d_1";
85 };
86 pwmout2_default_cfg {
87 pins = "GPIO15";
88 output-low;
89 };
90 };
91 };
92 pwmout3 {
93 pwmout3_default_mode: pwmout3_default {
94 pwmout3_default_mux {
95 function = "pwmout";
96 groups = "pwmout3_d_1";
97 };
98 pwmout3_default_cfg {
99 pins = "GPIO16";
100 output-low;
101 };
102 };
103 };
104 adi1 {
105
106 adi1_default_mode: adi1_default {
107 adi1_default_mux {
108 function = "adi1";
109 groups = "adi1_d_1";
110 };
111 adi1_default_cfg1 {
112 pins = "GPIO17","GPIO19","GPIO20";
113 bias-disable;
114 };
115 adi1_default_cfg2 {
116 pins = "GPIO18";
117 output-low;
118 };
119 };
120 };
121 dmic12 {
122 dmic12_default_mode: dmic12_default {
123 dmic12_default_mux {
124 function = "dmic";
125 groups = "dmic12_d_1";
126 };
127 dmic12_default_cfg1 {
128 pins = "GPIO27";
129 output-low;
130 };
131 dmic12_default_cfg2 {
132 pins = "GPIO28";
133 bias-disable;
134 };
135 };
136 };
137 dmic34 {
138 dmic34_default_mode: dmic34_default {
139 dmic34_default_mux {
140 function = "dmic";
141 groups = "dmic34_d_1";
142 };
143 dmic34_default_cfg1 {
144 pins = "GPIO29";
145 output-low;
146 };
147 dmic34_default_cfg2 {
148 pins = "GPIO30";
149 bias-disable;{
150
151 };
152 };
153 };
154 dmic56 {
155 dmic56_default_mode: dmic56_default {
156 dmic56_default_mux {
157 function = "dmic";
158 groups = "dmic56_d_1";
159 };
160 dmic56_default_cfg1 {
161 pins = "GPIO31";
162 output-low;
163 };
164 dmic56_default_cfg2 {
165 pins = "GPIO32";
166 bias-disable;
167 };
168 };
169 };
170 sysclkreq5 {
171 sysclkreq5_default_mode: sysclkreq5_default {
172 sysclkreq5_default_mux {
173 function = "sysclkreq";
174 groups = "sysclkreq5_d_1";
175 };
176 sysclkreq5_default_cfg {
177 pins = "GPIO42";
178 output-low;
179 };
180 };
181 };
182 batremn {
183 batremn_default_mode: batremn_default {
184 batremn_default_mux {
185 function = "batremn";
186 groups = "batremn_d_1";
187 };
188 batremn_default_cfg {
189 pins = "GPIO43";
190 bias-disable;
191 };
192 };
193 };
194 service {
195 service_default_mode: service_default {
196 service_default_mux {
197 function = "service";
198 groups = "service_d_1";
199 };
200 service_default_cfg {
201 pins = "GPIO44";
202 bias-disable;
203 };
204 };
205 };
206 pwrctrl0 {
207 pwrctrl0_default_mux: pwrctrl0_mux {
208 pwrctrl0_default_mux {
209 function = "pwrctrl";
210 groups = "pwrctrl0_d_1";
211 };
212 };
213 pwrctrl0_default_mode: pwrctrl0_default {
214 pwrctrl0_default_cfg {
215 pins = "GPIO45";
216 bias-disable;
217 };
218 };
219 };
220 pwrctrl1 {
221 pwrctrl1_default_mux: pwrctrl1_mux {
222 pwrctrl1_default_mux {
223 function = "pwrctrl";
224 groups = "pwrctrl1_d_1";
225 };
226 };
227 pwrctrl1_default_mode: pwrctrl1_default {
228 pwrctrl1_default_cfg {
229 pins = "GPIO46";
230 bias-disable;
231 };
232 };
233 };
234 pwmextvibra1 {
235 pwmextvibra1_default_mode: pwmextvibra1_default {
236 pwmextvibra1_default_mux {
237 function = "pwmextvibra";
238 groups = "pwmextvibra1_d_1";
239 };
240 pwmextvibra1_default_cfg {
241 pins = "GPIO47";
242 bias-disable;
243 };
244 };
245 };
246 pwmextvibra2 {
247 pwmextvibra2_default_mode: pwmextvibra2_default {
248 pwmextvibra2_default_mux {
249 function = "pwmextvibra";
250 groups = "pwmextvibra2_d_1";
251 };
252 pwmextvibra1_default_cfg {
253 pins = "GPIO48";
254 bias-disable;
255 };
256 };
257 };
258 gpio51 {
259 gpio51_default_mode: gpio51_default {
260 gpio51_default_mux {
261 function = "gpio";
262 groups = "gpio51_a_1";
263 };
264 gpio51_default_cfg {
265 pins = "GPIO51";
266 output-low;
267 };
268 };
269 };
270 gpio52 {
271 gpio52_default_mode: gpio52_default {
272 gpio52_default_mux {
273 function = "gpio";
274 groups = "gpio52_a_1";
275 };
276 gpio52_default_cfg {
277 pins = "GPIO52";
278 bias-pull-down;
279 };
280 };
281 };
282 gpio53 {
283 gpio53_default_mode: gpio53_default {
284 gpio53_default_mux {
285 function = "gpio";
286 groups = "gpio53_a_1";
287 };
288 gpio53_default_cfg {
289 pins = "GPIO53";
290 bias-pull-down;
291 };
292 };
293 };
294 gpio54 {
295 gpio54_default_mode: gpio54_default {
296 gpio54_default_mux {
297 function = "gpio";
298 groups = "gpio54_a_1";
299 };
300 gpio54_default_cfg {
301 pins = "GPIO54";
302 output-low;
303 };
304 };
305 };
306 pdmclkdat {
307 pdmclkdat_default_mode: pdmclkdat_default {
308 pdmclkdat_default_mux {
309 function = "pdm";
310 groups = "pdmclkdat_d_1";
311 };
312 pdmclkdat_default_cfg {
313 pins = "GPIO55", "GPIO56";
314 bias-disable;
315 };
316 };
317 };
318 };
319

3. 한국어 전문 번역

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

ABx500 compatible과 공통 binding

1-13

ST-Ericsson ABx500 pinmux controller의 필수 `compatible`은 `stericsson,ab8500-gpio`, `stericsson,ab8540-gpio`, `stericsson,ab8505-gpio`, `stericsson,ab9540-gpio` 중 하나입니다.

Client device가 사용하는 공통 pinctrl binding과 "pin configuration node"의 의미는 이 directory의 `pinctrl-bindings.txt`를 참조합니다. ST-Ericsson pin configuration node는 같은 문서에 정의된 generic pin multiplexing 및 pin configuration binding을 사용합니다.

Board 예제: clock request와 초기 GPIO

14-67

Board file 예제는 `pinctrl_abx500`의 default state에 뒤에서 정의하는 모든 mode를 연결합니다. 먼저 GPIO1·2·4를 `sysclkreq` function으로 mux하고 GPIO3을 일반 GPIO로 둡니다. GPIO1과 GPIO4는 bias를 끄고 GPIO2와 GPIO3은 low output으로 설정합니다.

&pinctrl_abx500 {
        pinctrl-names = "default";
        pinctrl-0 = <&sysclkreq2_default_mode>, <&sysclkreq3_default_mode>, <&gpio3_default_mode>, <&sysclkreq6_default_mode>, <&pwmout1_default_mode>, <&pwmout2_default_mode>, <&pwmout3_default_mode>, <&adi1_default_mode>, <&dmic12_default_mode>, <&dmic34_default_mode>, <&dmic56_default_mode>, <&sysclkreq5_default_mode>, <&batremn_default_mode>, <&service_default_mode>, <&pwrctrl0_default_mode>, <&pwrctrl1_default_mode>, <&pwmextvibra1_default_mode>, <&pwmextvibra2_default_mode>, <&gpio51_default_mode>, <&gpio52_default_mode>, <&gpio53_default_mode>, <&gpio54_default_mode>, <&pdmclkdat_default_mode>;

        sysclkreq2 {
                sysclkreq2_default_mode: sysclkreq2_default {
                        default_mux {
                                function = "sysclkreq";
                                groups = "sysclkreq2_d_1";
                        };
                        default_cfg {
                                pins = "GPIO1";
                                bias-disable;
                        };
                };
        };
        sysclkreq3 {
                sysclkreq3_default_mode: sysclkreq3_default {
                        default_mux {
                                function = "sysclkreq";
                                groups = "sysclkreq3_d_1";
                        };
                        default_cfg {
                                pins = "GPIO2";
                                output-low;
                        };
                };
        };
        gpio3 {
                gpio3_default_mode: gpio3_default {
                        default_mux {
                                function = "gpio";
                                groups = "gpio3_a_1";
                        };
                        default_cfg {
                                pins = "GPIO3";
                                output-low;
                        };
                };
        };
        sysclkreq6 {
                sysclkreq6_default_mode: sysclkreq6_default {
                        default_mux {
                                function = "sysclkreq";
                                groups = "sysclkreq6_d_1";
                        };
                        default_cfg {
                                pins = "GPIO4";
                                bias-disable;
                        };
                };
        };

Board 예제: PWM output과 ADI1

68-120

GPIO14·15·16을 각각 `pwmout1_d_1`, `pwmout2_d_1`, `pwmout3_d_1` group의 `pwmout` function으로 mux하고 low output으로 구성합니다. ADI1은 GPIO17·19·20의 bias를 끄고 GPIO18을 low output으로 설정합니다.

pwmout1 {
        pwmout1_default_mode: pwmout1_default {
                default_mux {
                        function = "pwmout";
                        groups = "pwmout1_d_1";
                };
                default_cfg {
                        pins = "GPIO14";
                        output-low;
                };
        };
};
pwmout2 {
        pwmout2_default_mode: pwmout2_default {
                pwmout2_default_mux {
                        function = "pwmout";
                        groups = "pwmout2_d_1";
                };
                pwmout2_default_cfg {
                        pins = "GPIO15";
                        output-low;
                };
        };
};
pwmout3 {
        pwmout3_default_mode: pwmout3_default {
                pwmout3_default_mux {
                        function = "pwmout";
                        groups = "pwmout3_d_1";
                };
                pwmout3_default_cfg {
                        pins = "GPIO16";
                        output-low;
                };
        };
};
adi1 {

        adi1_default_mode: adi1_default {
                adi1_default_mux {
                        function = "adi1";
                        groups = "adi1_d_1";
                };
                adi1_default_cfg1 {
                        pins = "GPIO17","GPIO19","GPIO20";
                        bias-disable;
                };
                adi1_default_cfg2 {
                        pins = "GPIO18";
                        output-low;
                };
        };
};

Board 예제: digital microphone

121-169

DMIC12, DMIC34, DMIC56 group을 `dmic` function으로 mux합니다. 각 pair에서 GPIO27·29·31은 low output, GPIO28·30·32는 bias disabled로 구성됩니다.

원문 L149에는 `bias-disable;{`라는 여분의 `{`가 있습니다. 원문 코드 보존을 위해 아래 블록에서도 그대로 유지합니다.

dmic12 {
        dmic12_default_mode: dmic12_default {
                dmic12_default_mux {
                        function = "dmic";
                        groups = "dmic12_d_1";
                };
                dmic12_default_cfg1 {
                        pins = "GPIO27";
                        output-low;
                };
                dmic12_default_cfg2 {
                        pins = "GPIO28";
                        bias-disable;
                };
        };
};
dmic34 {
        dmic34_default_mode: dmic34_default {
                dmic34_default_mux {
                        function = "dmic";
                        groups = "dmic34_d_1";
                };
                dmic34_default_cfg1 {
                        pins = "GPIO29";
                        output-low;
                };
                dmic34_default_cfg2 {
                        pins = "GPIO30";
                        bias-disable;{

                };
        };
};
dmic56 {
        dmic56_default_mode: dmic56_default {
                dmic56_default_mux {
                        function = "dmic";
                        groups = "dmic56_d_1";
                };
                dmic56_default_cfg1 {
                        pins = "GPIO31";
                        output-low;
                };
                dmic56_default_cfg2 {
                        pins = "GPIO32";
                        bias-disable;
                };
        };
};

Board 예제: clock·battery·service·power control

170-233

GPIO42를 `sysclkreq5_d_1`의 `sysclkreq`로 mux해 low output으로 구성합니다. GPIO43은 `batremn`, GPIO44는 `service` function으로 mux하고 둘 다 bias를 끕니다.

GPIO45와 GPIO46은 각각 `pwrctrl0_d_1`, `pwrctrl1_d_1`의 `pwrctrl` function으로 mux합니다. 이 예제는 mux node와 configuration mode node를 나누고 두 pin의 bias를 비활성화합니다.

sysclkreq5 {
        sysclkreq5_default_mode: sysclkreq5_default {
                sysclkreq5_default_mux {
                        function = "sysclkreq";
                        groups = "sysclkreq5_d_1";
                };
                sysclkreq5_default_cfg {
                        pins = "GPIO42";
                        output-low;
                };
        };
};
batremn {
        batremn_default_mode: batremn_default {
                batremn_default_mux {
                        function = "batremn";
                        groups = "batremn_d_1";
                };
                batremn_default_cfg {
                        pins = "GPIO43";
                        bias-disable;
                };
        };
};
service {
        service_default_mode: service_default {
                service_default_mux {
                        function = "service";
                        groups = "service_d_1";
                };
                service_default_cfg {
                        pins = "GPIO44";
                        bias-disable;
                };
        };
};
pwrctrl0 {
        pwrctrl0_default_mux: pwrctrl0_mux {
                pwrctrl0_default_mux {
                        function = "pwrctrl";
                        groups = "pwrctrl0_d_1";
                };
        };
        pwrctrl0_default_mode: pwrctrl0_default {
                pwrctrl0_default_cfg {
                        pins = "GPIO45";
                        bias-disable;
                };
        };
};
pwrctrl1 {
        pwrctrl1_default_mux: pwrctrl1_mux {
                pwrctrl1_default_mux {
                        function = "pwrctrl";
                        groups = "pwrctrl1_d_1";
                };
        };
        pwrctrl1_default_mode: pwrctrl1_default {
                pwrctrl1_default_cfg {
                        pins = "GPIO46";
                        bias-disable;
                };
        };
};

Board 예제: vibra와 GPIO51~54

234-305

GPIO47·48은 각각 외부 vibra PWM group의 `pwmextvibra` function으로 mux하고 bias를 끕니다. GPIO51·52·53·54는 일반 GPIO function이며 GPIO51과 GPIO54는 low output, GPIO52와 GPIO53은 pull-down으로 설정합니다.

pwmextvibra1 {
        pwmextvibra1_default_mode: pwmextvibra1_default {
                pwmextvibra1_default_mux {
                        function = "pwmextvibra";
                        groups = "pwmextvibra1_d_1";
                };
                pwmextvibra1_default_cfg {
                        pins = "GPIO47";
                        bias-disable;
                };
        };
};
pwmextvibra2 {
        pwmextvibra2_default_mode: pwmextvibra2_default {
                pwmextvibra2_default_mux {
                        function = "pwmextvibra";
                        groups = "pwmextvibra2_d_1";
                };
                pwmextvibra1_default_cfg {
                        pins = "GPIO48";
                        bias-disable;
                };
        };
};
gpio51 {
        gpio51_default_mode: gpio51_default {
                        gpio51_default_mux {
                        function = "gpio";
                        groups = "gpio51_a_1";
                };
                gpio51_default_cfg {
                        pins = "GPIO51";
                        output-low;
                };
        };
};
gpio52 {
        gpio52_default_mode: gpio52_default {
                gpio52_default_mux {
                        function = "gpio";
                        groups = "gpio52_a_1";
                };
                gpio52_default_cfg {
                        pins = "GPIO52";
                        bias-pull-down;
                };
        };
};
gpio53 {
        gpio53_default_mode: gpio53_default {
                gpio53_default_mux {
                        function = "gpio";
                        groups = "gpio53_a_1";
                };
                gpio53_default_cfg {
                        pins = "GPIO53";
                        bias-pull-down;
                };
        };
};
gpio54 {
        gpio54_default_mode: gpio54_default {
                gpio54_default_mux {
                        function = "gpio";
                        groups = "gpio54_a_1";
                };
                gpio54_default_cfg {
                        pins = "GPIO54";
                        output-low;
                };
        };
};

Board 예제: PDM clock/data

306-318

마지막으로 GPIO55와 GPIO56을 `pdmclkdat_d_1` group의 `pdm` function으로 mux하고 두 pin의 bias를 비활성화합니다.

        pdmclkdat {
                pdmclkdat_default_mode: pdmclkdat_default {
                        pdmclkdat_default_mux {
                                function = "pdm";
                                groups = "pdmclkdat_d_1";
                        };
                        pdmclkdat_default_cfg {
                                pins = "GPIO55", "GPIO56";
                                bias-disable;
                        };
                };
        };
};