요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Marvell Armada AP80x System Controller
======================================
The AP806/AP807 is one of the two core HW blocks of the Marvell Armada
7K/8K/931x SoCs. It contains system controllers, which provide several
registers giving access to numerous features: clocks, pin-muxing and
many other SoC configuration items. This DT binding allows to describe
these system controllers.
For the top level node:
- compatible: must be: "syscon", "simple-mfd";
- reg: register area of the AP80x system controller
SYSTEM CONTROLLER 0
===================
Clocks:
-------
The Device Tree node representing the AP806/AP807 system controller
provides a number of clocks:
- 0: reference clock of CPU cluster 0
- 1: reference clock of CPU cluster 1
- 2: fixed PLL at 1200 Mhz
- 3: MSS clock, derived from the fixed PLL
Required properties:
- compatible: must be one of:
* "marvell,ap806-clock"
* "marvell,ap807-clock"
- #clock-cells: must be set to 1
Pinctrl:
--------
For common binding part and usage, refer to
Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt.
Required properties:
- compatible must be "marvell,ap806-pinctrl",
Available mpp pins/groups and functions:
Note: brackets (x) are not part of the mpp name for marvell,function and given
only for more detailed description in this document.
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)
GPIO:
-----
For common binding part and usage, refer to
Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml.
Required properties:
- compatible: "marvell,armada-8k-gpio"
- offset: offset address inside the syscon block
Optional properties:
- marvell,pwm-offset: offset address of PWM duration control registers inside
the syscon block
Example:
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 clocks:
---------------
Device Tree Clock bindings for cluster clock of Marvell
AP806/AP807. Each cluster contain up to 2 CPUs running at the same
frequency.
Required properties:
- compatible: must be one of:
* "marvell,ap806-cpu-clock"
* "marvell,ap807-cpu-clock"
- #clock-cells : should be set to 1.
- clocks : shall be the input parent clock(s) phandle for the clock
(one per cluster)
- reg: register range associated with the cluster clocks
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>;
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
AP80x system controller 개요
1-13Marvell 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가 들어갑니다.
두 system controller가 제공하는 clock, pinctrl과 GPIO 기능을 구분합니다.
System Controller 0 clock
14-35SYSTEM 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-71Pinctrl
공통 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)
원문의 tabular MPP mapping을 pin별 구조화 표로 다시 그렸습니다.
GPIO, PWM offset와 System Controller 0 예
72-114GPIO
공통 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-146SYSTEM 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>;
};
};
요약과 해설
ap80x-system-controller.txt:1-146System Controller 0은 reference/fixed/MSS clock과 pinctrl, GPIO를 제공하고 System Controller 1은 cluster별 CPU clock을 관리합니다.