Documentation/devicetree/bindings/pinctrl/berlin,pinctrl.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Marvell Berlin Pin Controller

Berlin SoC의 chip·system controller 하위 pinmux 바인딩입니다.

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

요약·해설, 영어 원문, 전체 번역을 구분해 실었습니다. API 이름, 코드 심벌, 소스 경로는 원문 표기를 유지합니다.

1. 요약·해설

원문의 핵심 내용을 정리하고 커널 프로그래밍에 필요한 설명을 덧붙였습니다. 아래의 전체 번역과는 별도로 작성한 해설입니다.

요약과 해설

berlin,pinctrl.txt:1-47

Datasheet mode와 pinctrl function의 대응을 설명합니다.

2. 영어 원문 전체

번역에 사용한 Linux v6.18.37 원문입니다. 줄 번호는 해당 버전의 소스 파일을 기준으로 합니다.

원문 전체 펼치기
1 * Pin-controller driver for the Marvell Berlin SoCs
2
3 Pin control registers are part of both chip controller and system
4 controller register sets. Pin controller nodes should be a sub-node of
5 either the chip controller or system controller node. The pins
6 controlled are organized in groups, so no actual pin information is
7 needed.
8
9 A pin-controller node should contain subnodes representing the pin group
10 configurations, one per function. Each subnode has the group name and
11 the muxing function used.
12
13 Be aware the Marvell Berlin datasheets use the keyword 'mode' for what
14 is called a 'function' in the pin-controller subsystem.
15
16 Required properties:
17 - compatible: should be one of:
18 "marvell,berlin2-soc-pinctrl",
19 "marvell,berlin2-system-pinctrl",
20 "marvell,berlin2cd-soc-pinctrl",
21 "marvell,berlin2cd-system-pinctrl",
22 "marvell,berlin2q-soc-pinctrl",
23 "marvell,berlin2q-system-pinctrl",
24 "marvell,berlin4ct-avio-pinctrl",
25 "marvell,berlin4ct-soc-pinctrl",
26 "marvell,berlin4ct-system-pinctrl",
27 "syna,as370-soc-pinctrl"
28
29 Required subnode-properties:
30 - groups: a list of strings describing the group names.
31 - function: a string describing the function used to mux the groups.
32
33 Example:
34
35 sys_pinctrl: pin-controller {
36 compatible = "marvell,berlin2q-system-pinctrl";
37
38 uart0_pmux: uart0-pmux {
39 groups = "GSM12";
40 function = "uart0";
41 };
42 };
43
44 &uart0 {
45 pinctrl-0 = <&uart0_pmux>;
46 pinctrl-names = "default";
47 };
48

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미에 맞춰 전체 내용을 번역했습니다. 코드, 함수명, 코드 심벌, URL은 원문 표기를 유지합니다.

Marvell Berlin pin controller

1-15

Berlin SoC의 pin control register는 chip controller와 system controller register set 양쪽에 들어 있습니다. 따라서 pin controller 노드는 둘 중 하나의 하위 노드여야 합니다.

제어되는 pin은 group으로 구성되므로 개별 pin 정보가 필요하지 않습니다. Pin-controller 노드는 function마다 pin group configuration 하위 노드 하나를 가지며 각 하위 노드는 group 이름과 사용할 mux function을 지정합니다.

Marvell Berlin datasheet에서 `mode`라고 부르는 항목은 pin-controller subsystem의 `function`과 같습니다.

Berlin 필수 속성

16-32

`compatible`은 Berlin2·Berlin2CD·Berlin2Q의 SoC/system controller, Berlin4CT의 AVIO/SoC/system controller 또는 Synaptics AS370 SoC에 맞는 다음 문자열 가운데 하나여야 합니다.

"marvell,berlin2-soc-pinctrl",
"marvell,berlin2-system-pinctrl",
"marvell,berlin2cd-soc-pinctrl",
"marvell,berlin2cd-system-pinctrl",
"marvell,berlin2q-soc-pinctrl",
"marvell,berlin2q-system-pinctrl",
"marvell,berlin4ct-avio-pinctrl",
"marvell,berlin4ct-soc-pinctrl",
"marvell,berlin4ct-system-pinctrl",
"syna,as370-soc-pinctrl"

하위 노드의 `groups`는 group 이름 문자열 목록이고 `function`은 이 group들을 mux할 function 문자열입니다.

Berlin UART0 예제

33-47

예제 system pin controller는 `GSM12` group을 `uart0` function으로 mux하고 UART0 consumer가 이를 default pinctrl 상태로 참조합니다.

sys_pinctrl: pin-controller {
        compatible = "marvell,berlin2q-system-pinctrl";

        uart0_pmux: uart0-pmux {
                groups = "GSM12";
                function = "uart0";
        };
};

&uart0 {
        pinctrl-0 = <&uart0_pmux>;
        pinctrl-names = "default";
};