요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Binding for TI DaVinci PLL Controllers
The PLL provides clocks to most of the components on the SoC. In addition
to the PLL itself, this controller also contains bypasses, gates, dividers,
an multiplexers for various clock signals.
Required properties:
- compatible: shall be one of:
- "ti,da850-pll0" for PLL0 on DA850/OMAP-L138/AM18XX
- "ti,da850-pll1" for PLL1 on DA850/OMAP-L138/AM18XX
- reg: physical base address and size of the controller's register area.
- clocks: phandles corresponding to the clock names
- clock-names: names of the clock sources - depends on compatible string
- for "ti,da850-pll0", shall be "clksrc", "extclksrc"
- for "ti,da850-pll1", shall be "clksrc"
Optional properties:
- ti,clkmode-square-wave: Indicates that the board is supplying a square
wave input on the OSCIN pin instead of using a crystal oscillator.
This property is only valid when compatible = "ti,da850-pll0".
Optional child nodes:
pllout
Describes the main PLL clock output (before POSTDIV). The node name must
be "pllout".
Required properties:
- #clock-cells: shall be 0
sysclk
Describes the PLLDIVn divider clocks that provide the SYSCLKn clock
domains. The node name must be "sysclk". Consumers of this node should
use "n" in "SYSCLKn" as the index parameter for the clock cell.
Required properties:
- #clock-cells: shall be 1
auxclk
Describes the AUXCLK output of the PLL. The node name must be "auxclk".
This child node is only valid when compatible = "ti,da850-pll0".
Required properties:
- #clock-cells: shall be 0
obsclk
Describes the OBSCLK output of the PLL. The node name must be "obsclk".
Required properties:
- #clock-cells: shall be 0
Examples:
pll0: clock-controller@11000 {
compatible = "ti,da850-pll0";
reg = <0x11000 0x1000>;
clocks = <&ref_clk>, <&pll1_sysclk 3>;
clock-names = "clksrc", "extclksrc";
ti,clkmode-square-wave;
pll0_pllout: pllout {
#clock-cells = <0>;
};
pll0_sysclk: sysclk {
#clock-cells = <1>;
};
pll0_auxclk: auxclk {
#clock-cells = <0>;
};
pll0_obsclk: obsclk {
#clock-cells = <0>;
};
};
pll1: clock-controller@21a000 {
compatible = "ti,da850-pll1";
reg = <0x21a000 0x1000>;
clocks = <&ref_clk>;
clock-names = "clksrc";
pll0_sysclk: sysclk {
#clock-cells = <1>;
};
pll0_obsclk: obsclk {
#clock-cells = <0>;
};
};
Also see:
- Documentation/devicetree/bindings/clock/clock-bindings.txt
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
DaVinci PLL controller
1-22TI DaVinci PLL controller 바인딩입니다. PLL 자체뿐 아니라 여러 clock signal을 위한 bypass, gate, divider와 multiplexer를 포함하며 SoC 구성요소 대부분에 clock을 공급합니다.
`compatible`은 DA850/OMAP-L138/AM18XX의 PLL0에 `ti,da850-pll0`, PLL1에 `ti,da850-pll1`을 사용합니다. `reg`는 controller register 영역이고, `clocks`는 `clock-names`와 순서대로 대응합니다.
PLL0의 parent 이름은 `clksrc`, `extclksrc`이고 PLL1은 `clksrc`만 사용합니다. 선택 속성 `ti,clkmode-square-wave`는 board가 crystal oscillator 대신 OSCIN pin에 square-wave input을 공급함을 나타내며 PLL0에서만 유효합니다.
Source와 bypass 선택부터 controller의 여러 child output까지의 구조입니다.
PLL child output nodes
23-53`pllout` child는 POSTDIV 이전의 main PLL output을 나타내며 node 이름은 `pllout`, `#clock-cells`는 0입니다.
`sysclk` child는 SYSCLKn domain을 공급하는 PLLDIVn divider clock을 나타냅니다. Node 이름은 `sysclk`, `#clock-cells`는 1이며 consumer는 SYSCLKn의 n을 clock cell index로 사용합니다.
`auxclk` child는 PLL의 AUXCLK output이며 node 이름은 `auxclk`, `#clock-cells`는 0입니다. 이 child는 `ti,da850-pll0`에서만 유효합니다. `obsclk` child는 OBSCLK output이고 node 이름은 `obsclk`, `#clock-cells`는 0입니다.
Child node별 output 위치와 clock cell 수입니다.
PLL0과 PLL1 예제
54-96PLL0 예제는 reference clock과 PLL1 SYSCLK3을 source로 받고 square-wave mode를 표시하며 네 child를 모두 제공합니다. PLL1 예제는 reference clock 하나와 `sysclk`, `obsclk` child를 제공합니다.
pll0: clock-controller@11000 {
compatible = "ti,da850-pll0";
reg = <0x11000 0x1000>;
clocks = <&ref_clk>, <&pll1_sysclk 3>;
clock-names = "clksrc", "extclksrc";
ti,clkmode-square-wave;
pll0_pllout: pllout {
#clock-cells = <0>;
};
pll0_sysclk: sysclk {
#clock-cells = <1>;
};
pll0_auxclk: auxclk {
#clock-cells = <0>;
};
pll0_obsclk: obsclk {
#clock-cells = <0>;
};
};
pll1: clock-controller@21a000 {
compatible = "ti,da850-pll1";
reg = <0x21a000 0x1000>;
clocks = <&ref_clk>;
clock-names = "clksrc";
pll0_sysclk: sysclk {
#clock-cells = <1>;
};
pll0_obsclk: obsclk {
#clock-cells = <0>;
};
};
예제의 PLL1 child label은 원문 그대로 `pll0_sysclk`와 `pll0_obsclk`로 보존합니다. 공통 속성은 `Documentation/devicetree/bindings/clock/clock-bindings.txt`를 참조합니다.
요약과 해설
pll.txt:1-96PLL controller source와 네 종류의 child output provider를 설명합니다.