← Documents Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Marvell Armada AP80x System Controller

AP806/AP807 system controller의 clock, MPP pinctrl, GPIO/PWM과 cluster clock binding을 설명합니다.

Source pathDocumentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

ap80x-system-controller.txt:1-146

System Controller 0은 reference/fixed/MSS clock과 pinctrl, GPIO를 제공하고 System Controller 1은 cluster별 CPU clock을 관리합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Marvell Armada AP80x System Controller
2 ======================================
3
4 The AP806/AP807 is one of the two core HW blocks of the Marvell Armada
5 7K/8K/931x SoCs. It contains system controllers, which provide several
6 registers giving access to numerous features: clocks, pin-muxing and
7 many other SoC configuration items. This DT binding allows to describe
8 these system controllers.
9
10 For the top level node:
11 - compatible: must be: "syscon", "simple-mfd";
12 - reg: register area of the AP80x system controller
13
14 SYSTEM CONTROLLER 0
15 ===================
16
17 Clocks:
18 -------
19
20
21 The Device Tree node representing the AP806/AP807 system controller
22 provides a number of clocks:
23
24 - 0: reference clock of CPU cluster 0
25 - 1: reference clock of CPU cluster 1
26 - 2: fixed PLL at 1200 Mhz
27 - 3: MSS clock, derived from the fixed PLL
28
29 Required properties:
30
31 - compatible: must be one of:
32 * "marvell,ap806-clock"
33 * "marvell,ap807-clock"
34 - #clock-cells: must be set to 1
35
36 Pinctrl:
37 --------
38
39 For common binding part and usage, refer to
40 Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt.
41
42 Required properties:
43 - compatible must be "marvell,ap806-pinctrl",
44
45 Available mpp pins/groups and functions:
46 Note: brackets (x) are not part of the mpp name for marvell,function and given
47 only for more detailed description in this document.
48
49 name pins functions
50 ================================================================================
51 mpp0 0 gpio, sdio(clk), spi0(clk)
52 mpp1 1 gpio, sdio(cmd), spi0(miso)
53 mpp2 2 gpio, sdio(d0), spi0(mosi)
54 mpp3 3 gpio, sdio(d1), spi0(cs0n)
55 mpp4 4 gpio, sdio(d2), i2c0(sda)
56 mpp5 5 gpio, sdio(d3), i2c0(sdk)
57 mpp6 6 gpio, sdio(ds)
58 mpp7 7 gpio, sdio(d4), uart1(rxd)
59 mpp8 8 gpio, sdio(d5), uart1(txd)
60 mpp9 9 gpio, sdio(d6), spi0(cs1n)
61 mpp10 10 gpio, sdio(d7)
62 mpp11 11 gpio, uart0(txd)
63 mpp12 12 gpio, sdio(pw_off), sdio(hw_rst)
64 mpp13 13 gpio
65 mpp14 14 gpio
66 mpp15 15 gpio
67 mpp16 16 gpio
68 mpp17 17 gpio
69 mpp18 18 gpio
70 mpp19 19 gpio, uart0(rxd), sdio(pw_off)
71
72 GPIO:
73 -----
74 For common binding part and usage, refer to
75 Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml.
76
77 Required properties:
78
79 - compatible: "marvell,armada-8k-gpio"
80
81 - offset: offset address inside the syscon block
82
83 Optional properties:
84
85 - marvell,pwm-offset: offset address of PWM duration control registers inside
86 the syscon block
87
88 Example:
89 ap_syscon: system-controller@6f4000 {
90 compatible = "syscon", "simple-mfd";
91 reg = <0x6f4000 0x1000>;
92
93 ap_clk: clock {
94 compatible = "marvell,ap806-clock";
95 #clock-cells = <1>;
96 };
97
98 ap_pinctrl: pinctrl {
99 compatible = "marvell,ap806-pinctrl";
100 };
101
102 ap_gpio: gpio {
103 compatible = "marvell,armada-8k-gpio";
104 offset = <0x1040>;
105 ngpios = <19>;
106 gpio-controller;
107 #gpio-cells = <2>;
108 gpio-ranges = <&ap_pinctrl 0 0 19>;
109 marvell,pwm-offset = <0x10c0>;
110 #pwm-cells = <2>;
111 clocks = <&ap_clk 3>;
112 };
113 };
114
115 SYSTEM CONTROLLER 1
116 ===================
117
118 Cluster clocks:
119 ---------------
120
121 Device Tree Clock bindings for cluster clock of Marvell
122 AP806/AP807. Each cluster contain up to 2 CPUs running at the same
123 frequency.
124
125 Required properties:
126 - compatible: must be one of:
127 * "marvell,ap806-cpu-clock"
128 * "marvell,ap807-cpu-clock"
129 - #clock-cells : should be set to 1.
130
131 - clocks : shall be the input parent clock(s) phandle for the clock
132 (one per cluster)
133
134 - reg: register range associated with the cluster clocks
135
136 ap_syscon1: system-controller@6f8000 {
137 compatible = "marvell,armada-ap806-syscon1", "syscon", "simple-mfd";
138 reg = <0x6f8000 0x1000>;
139
140 cpu_clk: clock-cpu@278 {
141 compatible = "marvell,ap806-cpu-clock";
142 clocks = <&ap_clk 0>, <&ap_clk 1>;
143 #clock-cells = <1>;
144 reg = <0x278 0xa30>;
145 };
146 };
147

3. 한국어 전문 번역

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

AP80x system controller 개요

1-13

Marvell Armada AP80x System Controller

AP806/AP807은 Marvell Armada 7K, 8K, 931x SoC를 이루는 두 core hardware block 중 하나입니다. 이 block의 system controller는 clock, pin muxing과 그 밖의 여러 SoC configuration 기능에 접근하는 register를 제공합니다.

이 DT binding은 해당 system controller를 기술합니다. Top-level node의 `compatible`은 `syscon`, `simple-mfd`여야 하며 `reg`에는 AP80x system controller register area가 들어갑니다.

AP80x system controller 구성
AP80x top-levelsyscon + simple-mfd
System Controller 0Reference clock, fixed PLL, MSS clock
System Controller 0Pinctrl과 GPIO/PWM
System Controller 1CPU cluster clock control

두 system controller가 제공하는 clock, pinctrl과 GPIO 기능을 구분합니다.

System Controller 0 clock

14-35

SYSTEM CONTROLLER 0

Clock

AP806/AP807 system controller Device Tree node는 여러 clock을 제공합니다. ID 0은 CPU cluster 0 reference clock, ID 1은 CPU cluster 1 reference clock, ID 2는 1200 MHz fixed PLL, ID 3은 fixed PLL에서 파생한 MSS clock입니다.

필수 `compatible`은 `marvell,ap806-clock` 또는 `marvell,ap807-clock` 중 하나이며 `#clock-cells`는 1이어야 합니다.

Pinctrl과 MPP function 표

36-71

Pinctrl

공통 binding과 사용법은 `Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt`를 참조하십시오.

필수 `compatible`은 `marvell,ap806-pinctrl`입니다.

아래 표에서 괄호 안 표기 `(x)`는 `marvell,function`의 MPP name 일부가 아니며 이 문서에서 상세 signal을 설명하기 위해서만 사용합니다.

name        pins        functions
================================================================================
mpp0        0        gpio, sdio(clk), spi0(clk)
mpp1        1        gpio, sdio(cmd), spi0(miso)
mpp2        2        gpio, sdio(d0), spi0(mosi)
mpp3        3        gpio, sdio(d1), spi0(cs0n)
mpp4        4        gpio, sdio(d2), i2c0(sda)
mpp5        5        gpio, sdio(d3), i2c0(sdk)
mpp6        6        gpio, sdio(ds)
mpp7        7        gpio, sdio(d4), uart1(rxd)
mpp8        8        gpio, sdio(d5), uart1(txd)
mpp9        9        gpio, sdio(d6), spi0(cs1n)
mpp10        10        gpio, sdio(d7)
mpp11        11        gpio, uart0(txd)
mpp12        12        gpio, sdio(pw_off), sdio(hw_rst)
mpp13        13        gpio
mpp14        14        gpio
mpp15        15        gpio
mpp16        16        gpio
mpp17        17        gpio
mpp18        18        gpio
mpp19        19        gpio, uart0(rxd), sdio(pw_off)
AP806 MPP pin과 function
NamePinFunctions
mpp00gpio, sdio(clk), spi0(clk)
mpp11gpio, sdio(cmd), spi0(miso)
mpp22gpio, sdio(d0), spi0(mosi)
mpp33gpio, sdio(d1), spi0(cs0n)
mpp44gpio, sdio(d2), i2c0(sda)
mpp55gpio, sdio(d3), i2c0(sdk)
mpp66gpio, sdio(ds)
mpp77gpio, sdio(d4), uart1(rxd)
mpp88gpio, sdio(d5), uart1(txd)
mpp99gpio, sdio(d6), spi0(cs1n)
mpp1010gpio, sdio(d7)
mpp1111gpio, uart0(txd)
mpp1212gpio, sdio(pw_off), sdio(hw_rst)
mpp1313gpio
mpp1414gpio
mpp1515gpio
mpp1616gpio
mpp1717gpio
mpp1818gpio
mpp1919gpio, uart0(rxd), sdio(pw_off)

원문의 tabular MPP mapping을 pin별 구조화 표로 다시 그렸습니다.

GPIO, PWM offset와 System Controller 0 예

72-114

GPIO

공통 binding과 사용법은 `Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml`을 참조하십시오.

필수 `compatible`은 `marvell,armada-8k-gpio`이고 `offset`은 syscon block 내부 offset address입니다.

Optional `marvell,pwm-offset`은 syscon block 안의 PWM duration control register offset address입니다.

다음 예는 하나의 `system-controller@6f4000` 아래 clock, pinctrl, GPIO child node를 구성합니다. GPIO는 19개 line, pinctrl range, PWM offset과 MSS clock ID 3을 사용합니다.

ap_syscon: system-controller@6f4000 {
        compatible = "syscon", "simple-mfd";
        reg = <0x6f4000 0x1000>;

        ap_clk: clock {
                compatible = "marvell,ap806-clock";
                #clock-cells = <1>;
        };

        ap_pinctrl: pinctrl {
                compatible = "marvell,ap806-pinctrl";
        };

        ap_gpio: gpio {
                compatible = "marvell,armada-8k-gpio";
                offset = <0x1040>;
                ngpios = <19>;
                gpio-controller;
                #gpio-cells = <2>;
                gpio-ranges = <&ap_pinctrl 0 0 19>;
                marvell,pwm-offset = <0x10c0>;
                #pwm-cells = <2>;
                clocks = <&ap_clk 3>;
        };
};

System Controller 1 cluster clock

115-146

SYSTEM CONTROLLER 1

Cluster clock

이 binding은 Marvell AP806/AP807 cluster clock을 설명합니다. 각 cluster는 같은 frequency로 실행되는 CPU를 최대 두 개 포함합니다.

필수 `compatible`은 `marvell,ap806-cpu-clock` 또는 `marvell,ap807-cpu-clock` 중 하나입니다. `#clock-cells`는 1이어야 합니다.

`clocks`에는 cluster마다 하나씩 input parent clock phandle을 넣고 `reg`에는 cluster clock과 연결된 register range를 넣습니다.

다음 예는 `system-controller@6f8000`에 AP806 cluster clock을 두고 두 cluster reference clock을 parent로 연결합니다.

ap_syscon1: system-controller@6f8000 {
        compatible = "marvell,armada-ap806-syscon1", "syscon", "simple-mfd";
        reg = <0x6f8000 0x1000>;

        cpu_clk: clock-cpu@278 {
                compatible = "marvell,ap806-cpu-clock";
                clocks = <&ap_clk 0>, <&ap_clk 1>;
                #clock-cells = <1>;
                reg = <0x278 0xa30>;
        };
};